Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Profil Inferensi Bedrock

Konfigurasikan dan gunakan profil inferensi kustom AWS Bedrock dengan LibreChat untuk penyeimbangan beban lintas wilayah, alokasi biaya, dan kontrol kepatuhan.

Panduan ini menjelaskan cara mengonfigurasi dan menggunakan profil inferensi kustom AWS Bedrock dengan LibreChat, yang memungkinkan Anda merutekan permintaan model melalui profil inferensi aplikasi kustom untuk kontrol yang lebih baik, alokasi biaya, dan penyeimbangan beban lintas wilayah.

Ikhtisar

Profil inferensi AWS Bedrock memungkinkan Anda membuat konfigurasi perutean kustom untuk model dasar (foundation models). Saat Anda membuat profil inferensi kustom (aplikasi), AWS menghasilkan ARN unik yang tidak berisi informasi nama model:

arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123def456

Fitur pemetaan profil inferensi LibreChat memungkinkan Anda untuk:

  1. Petakan ID model yang mudah diingat ke ARN profil inferensi kustom
  2. Rute permintaan melalui profil kustom Anda sambil tetap mempertahankan deteksi kapabilitas model
  3. Gunakan variabel lingkungan untuk manajemen ARN yang aman

Mengapa Menggunakan Custom Inference Profiles?

ManfaatDeskripsi
Cross-Region Load BalancingMendistribusikan permintaan secara otomatis ke berbagai region AWS
Cost AllocationMenandai dan melacak biaya per aplikasi atau tim
Throughput ManagementMengonfigurasi throughput khusus untuk aplikasi Anda
ComplianceMengarahkan permintaan melalui region tertentu untuk residensi data
MonitoringMelacak penggunaan per profil inferensi di CloudWatch

Prasyarat

Sebelum Anda memulai, pastikan Anda telah memiliki:

  1. Akun AWS dengan akses Bedrock diaktifkan
  2. AWS CLI terinstal dan terkonfigurasi
  3. Izin IAM:
    • bedrock:CreateInferenceProfile
    • bedrock:ListInferenceProfiles
    • bedrock:GetInferenceProfile
    • bedrock:InvokeModel / bedrock:InvokeModelWithResponseStream
  4. LibreChat dengan endpoint Bedrock yang telah dikonfigurasi (lihat AWS Bedrock Setup)

Membuat Profil Inferensi Kustom

Penting: Profil inferensi kustom hanya dapat dibuat melalui API (AWS CLI, SDK, dll.) dan tidak dapat dibuat dari Konsol AWS.

Langkah 1: Daftar Profil Inferensi Sistem yang Tersedia

# List all inference profiles
aws bedrock list-inference-profiles --region us-east-1

# Filter for Claude models
aws bedrock list-inference-profiles --region us-east-1 \
  --query "inferenceProfileSummaries[?contains(inferenceProfileId, 'claude')]"

Langkah 2: Membuat Custom Inference Profile

# Get the system inference profile ARN to copy from
export SOURCE_PROFILE_ARN=$(aws bedrock list-inference-profiles --region us-east-1 \
  --query "inferenceProfileSummaries[?inferenceProfileId=='us.anthropic.claude-3-7-sonnet-20250219-v1:0'].inferenceProfileArn" \
  --output text)

# Create your custom inference profile
aws bedrock create-inference-profile \
  --inference-profile-name "MyApp-Claude-3-7-Sonnet" \
  --description "Custom inference profile for my application" \
  --model-source copyFrom="$SOURCE_PROFILE_ARN" \
  --region us-east-1

Langkah 3: Verifikasi Pembuatan

# List your custom profiles
aws bedrock list-inference-profiles --type-equals APPLICATION --region us-east-1

# Get details of a specific profile
aws bedrock get-inference-profile \
  --inference-profile-identifier "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123" \
  --region us-east-1

Metode 2: Skrip Python

import boto3

AWS_REGION = 'us-east-1'

def create_inference_profile(profile_name: str, source_model_id: str):
    """
    Create a custom inference profile for LibreChat.

    Args:
        profile_name: Name for your custom profile
        source_model_id: The system inference profile ID to copy from
                        (e.g., 'us.anthropic.claude-3-7-sonnet-20250219-v1:0')
    """
    bedrock = boto3.client('bedrock', region_name=AWS_REGION)

    profiles = bedrock.list_inference_profiles()
    source_arn = None
    for profile in profiles['inferenceProfileSummaries']:
        if profile['inferenceProfileId'] == source_model_id:
            source_arn = profile['inferenceProfileArn']
            break

    if not source_arn:
        raise ValueError(f"Source profile {source_model_id} not found")

    response = bedrock.create_inference_profile(
        inferenceProfileName=profile_name,
        description=f'Custom inference profile for {profile_name}',
        modelSource={'copyFrom': source_arn},
        tags=[
            {'key': 'Application', 'value': 'LibreChat'},
            {'key': 'Environment', 'value': 'Production'}
        ]
    )

    print(f"Created profile: {response['inferenceProfileArn']}")
    return response['inferenceProfileArn']

if __name__ == "__main__":
    create_inference_profile(
        "LibreChat-Claude-3-7-Sonnet",
        "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
    )
    create_inference_profile(
        "LibreChat-Claude-Sonnet-4-5",
        "us.anthropic.claude-sonnet-4-5-20250929-v1:0"
    )

Mengonfigurasi LibreChat

Konfigurasi librechat.yaml

Tambahkan konfigurasi endpoint bedrock ke librechat.yaml Anda. Untuk referensi kolom lengkap, lihat AWS Bedrock Object Structure.

endpoints:
  bedrock:
    # List the models you want available in the UI
    models:
      - 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'
      - 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'
      - 'global.anthropic.claude-opus-4-5-20251101-v1:0'
    # Map model IDs to their custom inference profile ARNs
    inferenceProfiles:
      # Using environment variable (recommended for security)
      'us.anthropic.claude-3-7-sonnet-20250219-v1:0': '${BEDROCK_CLAUDE_37_PROFILE}'
      # Using direct ARN
      'us.anthropic.claude-sonnet-4-5-20250929-v1:0': 'arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123'
      # Another env variable example
      'global.anthropic.claude-opus-4-5-20251101-v1:0': '${BEDROCK_OPUS_45_PROFILE}'
    # Optional: Configure available regions for cross-region inference
    availableRegions:
      - 'us-east-1'
      - 'us-west-2'

Variabel Lingkungan

Tambahkan region Bedrock, pengaturan autentikasi AWS, dan ARN profil inferensi Anda ke dalam file .env Anda:

#===================================#
# AWS Bedrock Configuration         #
#===================================#

BEDROCK_AWS_DEFAULT_REGION=us-east-1

# Option 1: Use an AWS profile
BEDROCK_AWS_PROFILE=your-profile-name

# Option 2: Omit BEDROCK_AWS_PROFILE and Bedrock-specific static credentials
# to use the AWS SDK default credential provider chain.

# Option 3: Static Bedrock credentials, if profiles or IAM roles are not suitable
# BEDROCK_AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
# BEDROCK_AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# BEDROCK_AWS_SESSION_TOKEN=your-session-token

# Option 4: Bedrock API key (bearer auth)
# BEDROCK_AWS_BEARER_TOKEN=your-bedrock-api-key

# Inference Profile ARNs
BEDROCK_CLAUDE_37_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123
BEDROCK_OPUS_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/def456

Menyiapkan Logging

Untuk memverifikasi bahwa profil inferensi Anda digunakan dengan benar, aktifkan logging pemanggilan model AWS Bedrock.

1. Buat CloudWatch Log Group

aws logs create-log-group \
  --log-group-name /aws/bedrock/model-invocations \
  --region us-east-1

2. Buat IAM Role untuk Bedrock Logging

Buat file kebijakan kepercayaan (bedrock-logging-trust.json):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "YOUR_ACCOUNT_ID"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:bedrock:us-east-1:YOUR_ACCOUNT_ID:*"
        }
      }
    }
  ]
}

Buat peran:

aws iam create-role \
  --role-name BedrockLoggingRole \
  --assume-role-policy-document file://bedrock-logging-trust.json

Lampirkan izin CloudWatch Logs:

aws iam put-role-policy \
  --role-name BedrockLoggingRole \
  --policy-name BedrockLoggingPolicy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock/model-invocations:*"
      }
    ]
  }'

Buat bucket S3 untuk data besar (diperlukan):

aws s3 mb s3://bedrock-logs-YOUR_ACCOUNT_ID --region us-east-1

aws iam put-role-policy \
  --role-name BedrockLoggingRole \
  --policy-name BedrockS3Policy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": ["s3:PutObject"],
        "Resource": "arn:aws:s3:::bedrock-logs-YOUR_ACCOUNT_ID/*"
      }
    ]
  }'

3. Aktifkan Model Invocation Logging

aws bedrock put-model-invocation-logging-configuration \
  --logging-config '{
    "cloudWatchConfig": {
      "logGroupName": "/aws/bedrock/model-invocations",
      "roleArn": "arn:aws:iam::YOUR_ACCOUNT_ID:role/BedrockLoggingRole",
      "largeDataDeliveryS3Config": {
        "bucketName": "bedrock-logs-YOUR_ACCOUNT_ID",
        "keyPrefix": "large-data"
      }
    },
    "textDataDeliveryEnabled": true,
    "imageDataDeliveryEnabled": true,
    "embeddingDataDeliveryEnabled": true
  }' \
  --region us-east-1

Verifikasi bahwa logging telah diaktifkan:

aws bedrock get-model-invocation-logging-configuration --region us-east-1

Memverifikasi Konfigurasi Anda

Melihat Log melalui CLI

Setelah membuat permintaan melalui LibreChat, periksa log:

# Tail logs in real-time
aws logs tail /aws/bedrock/model-invocations --follow --region us-east-1

# View recent logs
aws logs tail /aws/bedrock/model-invocations --since 5m --region us-east-1

Hal yang Perlu Diperhatikan

Pada output log, cari kolom modelId:

{
  "timestamp": "2026-01-16T16:56:15Z",
  "accountId": "123456789012",
  "region": "us-east-1",
  "requestId": "a8b9d8c9-87b3-41ea-8a02-e8bfdba7782f",
  "operation": "ConverseStream",
  "modelId": "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123",
  "inferenceRegion": "us-west-2"
}

Indikator keberhasilan:

  • modelId menampilkan ARN profil inferensi kustom Anda (berisi application-inference-profile)
  • inferenceRegion mungkin bervariasi (menunjukkan bahwa perutean lintas wilayah berfungsi)

Jika pemetaan tidak berfungsi:

  • modelId akan menampilkan ID model mentah alih-alih ARN

Melihat Log melalui Konsol AWS

  1. Buka CloudWatch di Konsol AWS
  2. Navigasikan ke Logs > Log groups
  3. Pilih /aws/bedrock/model-invocations
  4. Klik pada log stream terbaru
  5. Cari ID profil inferensi Anda

Memantau Penggunaan

Metrik CloudWatch

Lihat metrik Bedrock di CloudWatch:

aws cloudwatch list-metrics --namespace AWS/Bedrock --region us-east-1

Konsol AWS

  1. Bedrock Console > Inference profiles > Tab Application
  2. Klik profil kustom Anda
  3. Lihat metrik pemanggilan dan statistik penggunaan

Pemecahan Masalah

Masalah Umum

MasalahPenyebabSolusi
Model tidak dikenaliModel tidak ada dalam array modelsTambahkan ID model ke models di librechat.yaml
ARN tidak digunakanID model tidak cocokPastikan ID model di inferenceProfiles sama persis dengan yang ada di models
Variabel Env tidak teresolusiSalah ketik atau belum diaturPeriksa file .env dan pastikan nama variabel sesuai dengan ${VAR_NAME}
Akses DitolakIzin IAM tidak adaTambahkan izin bedrock:InvokeModel* untuk ARN profil inferensi
Akses model ditolakPersetujuan model tidak ada atau sedang diprosesSetujui perjanjian model Bedrock dan tunggu ketersediaan diproses
Profil tidak ditemukanWilayah salahPastikan Anda membuat/menggunakan profil di wilayah yang sama

Penyebaran Perjanjian Akses Model

Membuat profil inferensi aplikasi tidak secara otomatis mengaktifkan model dasar yang mendasarinya di akun AWS Anda. Jika akses model baru saja diaktifkan, AWS mungkin juga memerlukan waktu propagasi singkat sebelum permintaan melalui profil inferensi berhasil.

Ini dapat muncul sebagai AccessDeniedException bahkan ketika profil inferensi ada dan peran IAM Anda memiliki izin bedrock:InvokeModel. Kesalahan tersebut mungkin menyebutkan aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe, atau meminta Anda untuk mencoba lagi setelah beberapa menit.

Periksa ketersediaan model yang mendasari sebelum men-debug pemetaan LibreChat:

aws bedrock get-foundation-model-availability \
  --region us-east-1 \
  --model-id us.anthropic.claude-sonnet-4-5-20250929-v1:0

Cari:

  • agreementAvailability.status diatur ke AVAILABLE
  • authorizationStatus diatur ke AUTHORIZED
  • entitlementAvailability diatur ke AVAILABLE
  • regionAvailability diatur ke AVAILABLE

Jika perjanjian tidak ada, setujui perjanjian model di konsol Bedrock atau dengan principal AWS yang dapat mengelola perjanjian model Bedrock dan langganan Marketplace. Setelah statusnya berubah menjadi AVAILABLE, tunggu beberapa menit dan coba kembali untuk memanggil profil inferensi aplikasi.

Daftar Periksa Debug

  1. Model ID ada di dalam array models
  2. Model ID dalam inferenceProfiles harus sama persis (peka huruf besar-kecil)
  3. Variabel lingkungan telah diatur (jika menggunakan sintaks ${VAR})
  4. Kredensial AWS memiliki izin untuk memanggil profil inferensi
  5. Perjanjian model dasar yang mendasarinya adalah AVAILABLE di Bedrock
  6. LibreChat telah dimulai ulang setelah perubahan konfigurasi

Verifikasi Pemuatan Konfigurasi

Periksa apakah konfigurasi Anda terbaca dengan benar dengan memeriksa log server saat LibreChat dimulai.

Contoh Lengkap

librechat.yaml

version: 1.3.5

endpoints:
  bedrock:
    models:
      - 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'
      - 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'
      - 'global.anthropic.claude-opus-4-5-20251101-v1:0'
      - 'us.amazon.nova-pro-v1:0'
    inferenceProfiles:
      'us.anthropic.claude-3-7-sonnet-20250219-v1:0': '${BEDROCK_CLAUDE_37_PROFILE}'
      'us.anthropic.claude-sonnet-4-5-20250929-v1:0': '${BEDROCK_SONNET_45_PROFILE}'
      'global.anthropic.claude-opus-4-5-20251101-v1:0': '${BEDROCK_OPUS_45_PROFILE}'
    availableRegions:
      - 'us-east-1'
      - 'us-west-2'

.env

# AWS Bedrock
BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_PROFILE=your-profile-name
# Or use a Bedrock API key instead:
# BEDROCK_AWS_BEARER_TOKEN=your-bedrock-api-key

# Inference Profiles
BEDROCK_CLAUDE_37_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123
BEDROCK_SONNET_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/def456
BEDROCK_OPUS_45_PROFILE=arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/ghi789

Skrip Pengaturan Cepat

#!/bin/bash

REGION="us-east-1"
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

# Create inference profiles
for MODEL in "us.anthropic.claude-3-7-sonnet-20250219-v1:0" "us.anthropic.claude-sonnet-4-5-20250929-v1:0"; do
  PROFILE_NAME="LibreChat-${MODEL//[.:]/-}"
  SOURCE_ARN=$(aws bedrock list-inference-profiles --region $REGION \
    --query "inferenceProfileSummaries[?inferenceProfileId=='$MODEL'].inferenceProfileArn" \
    --output text)
  if [ -n "$SOURCE_ARN" ]; then
    echo "Creating profile for $MODEL..."
    aws bedrock create-inference-profile \
      --inference-profile-name "$PROFILE_NAME" \
      --model-source copyFrom="$SOURCE_ARN" \
      --region $REGION
  fi
done

# List created profiles
echo ""
echo "Your custom inference profiles:"
aws bedrock list-inference-profiles --type-equals APPLICATION --region $REGION \
  --query "inferenceProfileSummaries[].{Name:inferenceProfileName,ARN:inferenceProfileArn}" \
  --output table

Bagaimana panduan ini?