Profili di inferenza Bedrock
Configura e utilizza i profili di inferenza personalizzati di AWS Bedrock con LibreChat per il bilanciamento del carico tra regioni, l'allocazione dei costi e i controlli di conformità.
Questa guida spiega come configurare e utilizzare i profili di inferenza personalizzati di AWS Bedrock con LibreChat, consentendoti di instradare le richieste dei modelli attraverso profili di inferenza applicativi personalizzati per un controllo migliore, l'allocazione dei costi e il bilanciamento del carico tra diverse regioni.
Panoramica
I profili di inferenza AWS Bedrock consentono di creare configurazioni di routing personalizzate per i modelli di base (foundation models). Quando si crea un profilo di inferenza personalizzato (applicazione), AWS genera un ARN univoco che non contiene informazioni sul nome del modello:
arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123def456La funzionalità di mappatura del profilo di inferenza di LibreChat ti consente di:
- Mappa gli ID modello descrittivi agli ARN dei profili di inferenza personalizzati
- Instrada le richieste attraverso i tuoi profili personalizzati mantenendo il rilevamento delle funzionalità del modello
- Utilizza le variabili d'ambiente per una gestione sicura degli ARN
Perché utilizzare i Custom Inference Profiles?
| Vantaggio | Descrizione |
|---|---|
| Bilanciamento del carico cross-region | Distribuisci automaticamente le richieste tra più regioni AWS |
| Allocazione dei costi | Etichetta e traccia i costi per applicazione o team |
| Gestione del throughput | Configura un throughput dedicato per le tue applicazioni |
| Conformità | Instrada le richieste attraverso regioni specifiche per la residenza dei dati |
| Monitoraggio | Traccia l'utilizzo per profilo di inferenza in CloudWatch |
Prerequisiti
Prima di iniziare, assicurati di avere:
- Account AWS con accesso a Bedrock abilitato
- AWS CLI installato e configurato
- Autorizzazioni IAM:
bedrock:CreateInferenceProfilebedrock:ListInferenceProfilesbedrock:GetInferenceProfilebedrock:InvokeModel/bedrock:InvokeModelWithResponseStream
- LibreChat con endpoint Bedrock configurato (vedi Configurazione AWS Bedrock)
Creazione di profili di inferenza personalizzati
Importante: I profili di inferenza personalizzati possono essere creati solo tramite API (AWS CLI, SDK, ecc.) e non possono essere creati dalla Console AWS.
Metodo 1: AWS CLI (Consigliato)
Passaggio 1: Elenca i profili di inferenza di sistema disponibili
# 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')]"Passaggio 2: Creare un 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-1Passaggio 3: Verifica la creazione
# 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-1Metodo 2: Script 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"
)Configurazione di LibreChat
Configurazione di librechat.yaml
Aggiungi la configurazione dell'endpoint bedrock al tuo librechat.yaml. Per il riferimento completo dei campi, consulta 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'Variabili d'ambiente
Aggiungi la tua region Bedrock, le impostazioni di autenticazione AWS e gli ARN dei profili di inferenza al tuo file .env:
#===================================#
# 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/def456Configurazione del Logging
Per verificare che i tuoi profili di inferenza vengano utilizzati correttamente, abilita la registrazione delle invocazioni dei modelli AWS Bedrock.
1. Creare un gruppo di log CloudWatch
aws logs create-log-group \
--log-group-name /aws/bedrock/model-invocations \
--region us-east-12. Crea un ruolo IAM per il logging di Bedrock
Crea il file della policy di attendibilità (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:*"
}
}
}
]
}Crea il ruolo:
aws iam create-role \
--role-name BedrockLoggingRole \
--assume-role-policy-document file://bedrock-logging-trust.jsonAllega le autorizzazioni per 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:*"
}
]
}'Crea un bucket S3 per dati di grandi dimensioni (richiesto):
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. Abilitare il logging dell'invocazione dei modelli
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-1Verifica che la registrazione (logging) sia abilitata:
aws bedrock get-model-invocation-logging-configuration --region us-east-1Verifica della configurazione
Visualizza i log tramite CLI
Dopo aver effettuato una richiesta tramite LibreChat, controlla i 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-1Cosa cercare
Nell'output del log, cerca il campo 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"
}Indicatori di successo:
modelIdmostra il tuo ARN del profilo di inferenza personalizzato (contieneapplication-inference-profile)inferenceRegionpuò variare (indica che il routing tra regioni sta funzionando)
Se il mapping non funziona:
modelIdmostrerà l'ID del modello grezzo invece dell'ARN
Visualizza i log tramite la console AWS
- Apri CloudWatch nella Console AWS
- Vai su Logs > Log groups
- Seleziona
/aws/bedrock/model-invocations - Fai clic sul flusso di log più recente
- Cerca il tuo ID profilo di inferenza
Monitoraggio dell'utilizzo
Metriche CloudWatch
Visualizza le metriche di Bedrock in CloudWatch:
aws cloudwatch list-metrics --namespace AWS/Bedrock --region us-east-1Console AWS
- Console Bedrock > Profili di inferenza > scheda Applicazione
- Fai clic sul tuo profilo personalizzato
- Visualizza le metriche di invocazione e le statistiche di utilizzo
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| Modello non riconosciuto | Modello mancante nell'array models | Aggiungi l'ID del modello a models in librechat.yaml |
| ARN non utilizzato | L'ID del modello non corrisponde | Assicurati che l'ID del modello in inferenceProfiles corrisponda esattamente a quello in models |
| Variabile d'ambiente non risolta | Errore di battitura o non impostata | Controlla il file .env e assicurati che il nome della variabile corrisponda a ${VAR_NAME} |
| Accesso negato | Permessi IAM mancanti | Aggiungi i permessi bedrock:InvokeModel* per l'ARN del profilo di inferenza |
| Accesso al modello negato | Accordo sul modello mancante o in fase di propagazione | Accetta l'accordo sul modello Bedrock e attendi che la disponibilità si propaghi |
| Profilo non trovato | Regione errata | Assicurati di creare/utilizzare i profili nella stessa regione |
Propagazione dell'Accordo di Accesso al Modello
La creazione di un profilo di inferenza dell'applicazione non abilita automaticamente il modello di base sottostante nel tuo account AWS. Se l'accesso al modello è stato appena abilitato, AWS potrebbe richiedere anche un breve intervallo di propagazione prima che le richieste tramite il profilo di inferenza abbiano successo.
Ciò può apparire come una AccessDeniedException anche quando il profilo di inferenza esiste e il tuo ruolo IAM dispone delle autorizzazioni bedrock:InvokeModel. L'errore potrebbe menzionare aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe o chiederti di riprovare dopo alcuni minuti.
Controlla la disponibilità del modello sottostante prima di eseguire il debug del mapping di LibreChat:
aws bedrock get-foundation-model-availability \
--region us-east-1 \
--model-id us.anthropic.claude-sonnet-4-5-20250929-v1:0Cerca:
agreementAvailability.statusimpostato suAVAILABLEauthorizationStatusimpostato suAUTHORIZEDentitlementAvailabilityimpostato suAVAILABLEregionAvailabilityimpostato suAVAILABLE
Se l'accordo manca, accetta l'accordo sul modello nella console Bedrock o con un principal AWS in grado di gestire gli accordi sui modelli Bedrock e gli abbonamenti al Marketplace. Dopo che lo stato è cambiato in AVAILABLE, attendi un paio di minuti e riprova a richiamare il profilo di inferenza dell'applicazione.
Checklist di Debug
- L'ID del modello si trova nell'array
models - L'ID del modello in
inferenceProfilescorrisponde esattamente (distingue tra maiuscole e minuscole) - La variabile d'ambiente è impostata (se si utilizza la sintassi
${VAR}) - Le credenziali AWS dispongono dell'autorizzazione per invocare il profilo di inferenza
- L'accordo sul modello di base sottostante è
AVAILABLEin Bedrock - LibreChat è stato riavviato dopo le modifiche alla configurazione
Verifica il caricamento della configurazione
Verifica che la tua configurazione venga letta correttamente esaminando i log del server all'avvio di LibreChat.
Esempio completo
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/ghi789Script di configurazione rapida
#!/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 tableRisorse correlate
- Documentazione sui profili di inferenza di AWS Bedrock
- Documentazione sull'accesso ai modelli AWS Bedrock
- Struttura dell'oggetto AWS Bedrock - Riferimento ai campi di configurazione YAML
- Configurazione di AWS Bedrock - Configurazione di base di Bedrock
- Registrazione delle invocazioni dei modelli AWS Bedrock
Com’è questa guida?