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/abc123def456Fitur pemetaan profil inferensi LibreChat memungkinkan Anda untuk:
- Petakan ID model yang mudah diingat ke ARN profil inferensi kustom
- Rute permintaan melalui profil kustom Anda sambil tetap mempertahankan deteksi kapabilitas model
- Gunakan variabel lingkungan untuk manajemen ARN yang aman
Mengapa Menggunakan Custom Inference Profiles?
| Manfaat | Deskripsi |
|---|---|
| Cross-Region Load Balancing | Mendistribusikan permintaan secara otomatis ke berbagai region AWS |
| Cost Allocation | Menandai dan melacak biaya per aplikasi atau tim |
| Throughput Management | Mengonfigurasi throughput khusus untuk aplikasi Anda |
| Compliance | Mengarahkan permintaan melalui region tertentu untuk residensi data |
| Monitoring | Melacak penggunaan per profil inferensi di CloudWatch |
Prasyarat
Sebelum Anda memulai, pastikan Anda telah memiliki:
- Akun AWS dengan akses Bedrock diaktifkan
- AWS CLI terinstal dan terkonfigurasi
- Izin IAM:
bedrock:CreateInferenceProfilebedrock:ListInferenceProfilesbedrock:GetInferenceProfilebedrock:InvokeModel/bedrock:InvokeModelWithResponseStream
- 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.
Metode 1: AWS CLI (Direkomendasikan)
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-1Langkah 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-1Metode 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/def456Menyiapkan 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-12. 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.jsonLampirkan 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-1Verifikasi bahwa logging telah diaktifkan:
aws bedrock get-model-invocation-logging-configuration --region us-east-1Memverifikasi 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-1Hal 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:
modelIdmenampilkan ARN profil inferensi kustom Anda (berisiapplication-inference-profile)inferenceRegionmungkin bervariasi (menunjukkan bahwa perutean lintas wilayah berfungsi)
Jika pemetaan tidak berfungsi:
modelIdakan menampilkan ID model mentah alih-alih ARN
Melihat Log melalui Konsol AWS
- Buka CloudWatch di Konsol AWS
- Navigasikan ke Logs > Log groups
- Pilih
/aws/bedrock/model-invocations - Klik pada log stream terbaru
- Cari ID profil inferensi Anda
Memantau Penggunaan
Metrik CloudWatch
Lihat metrik Bedrock di CloudWatch:
aws cloudwatch list-metrics --namespace AWS/Bedrock --region us-east-1Konsol AWS
- Bedrock Console > Inference profiles > Tab Application
- Klik profil kustom Anda
- Lihat metrik pemanggilan dan statistik penggunaan
Pemecahan Masalah
Masalah Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| Model tidak dikenali | Model tidak ada dalam array models | Tambahkan ID model ke models di librechat.yaml |
| ARN tidak digunakan | ID model tidak cocok | Pastikan ID model di inferenceProfiles sama persis dengan yang ada di models |
| Variabel Env tidak teresolusi | Salah ketik atau belum diatur | Periksa file .env dan pastikan nama variabel sesuai dengan ${VAR_NAME} |
| Akses Ditolak | Izin IAM tidak ada | Tambahkan izin bedrock:InvokeModel* untuk ARN profil inferensi |
| Akses model ditolak | Persetujuan model tidak ada atau sedang diproses | Setujui perjanjian model Bedrock dan tunggu ketersediaan diproses |
| Profil tidak ditemukan | Wilayah salah | Pastikan 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:0Cari:
agreementAvailability.statusdiatur keAVAILABLEauthorizationStatusdiatur keAUTHORIZEDentitlementAvailabilitydiatur keAVAILABLEregionAvailabilitydiatur keAVAILABLE
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
- Model ID ada di dalam array
models - Model ID dalam
inferenceProfilesharus sama persis (peka huruf besar-kecil) - Variabel lingkungan telah diatur (jika menggunakan sintaks
${VAR}) - Kredensial AWS memiliki izin untuk memanggil profil inferensi
- Perjanjian model dasar yang mendasarinya adalah
AVAILABLEdi Bedrock - 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/ghi789Skrip 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 tableSumber Daya Terkait
- Dokumentasi Profil Inferensi AWS Bedrock
- Dokumentasi Akses Model AWS Bedrock
- Struktur Objek AWS Bedrock - Referensi kolom konfigurasi YAML
- Pengaturan AWS Bedrock - Konfigurasi dasar Bedrock
- AWS Bedrock Model Invocation Logging
Bagaimana panduan ini?