Profils d'inférence Bedrock
Configurez et utilisez les profils d'inférence personnalisés AWS Bedrock avec LibreChat pour l'équilibrage de charge inter-régions, l'allocation des coûts et les contrôles de conformité.
Ce guide explique comment configurer et utiliser les profils d'inférence personnalisés AWS Bedrock avec LibreChat, vous permettant d'acheminer les requêtes de modèles via des profils d'inférence d'application personnalisés pour un meilleur contrôle, une meilleure répartition des coûts et un équilibrage de charge inter-régions.
Vue d'ensemble
Les profils d'inférence AWS Bedrock vous permettent de créer des configurations de routage personnalisées pour les modèles de fondation. Lorsque vous créez un profil d'inférence personnalisé (application), AWS génère un ARN unique qui ne contient pas d'informations sur le nom du modèle :
arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123def456La fonctionnalité de mappage de profil d'inférence de LibreChat vous permet de :
- Mapper des identifiants de modèle conviviaux vers des ARN de profils d'inférence personnalisés
- Acheminez les requêtes via vos profils personnalisés tout en conservant la détection des capacités des modèles
- Utilisez des variables d'environnement pour une gestion sécurisée des ARN
Pourquoi utiliser des profils d'inférence personnalisés ?
| Avantage | Description |
|---|---|
| Équilibrage de charge inter-régions | Distribue automatiquement les requêtes entre plusieurs régions AWS |
| Allocation des coûts | Étiquetez et suivez les coûts par application ou par équipe |
| Gestion du débit | Configurez un débit dédié pour vos applications |
| Conformité | Acheminez les requêtes via des régions spécifiques pour la résidence des données |
| Surveillance | Suivez l'utilisation par profil d'inférence dans CloudWatch |
Prérequis
Avant de commencer, assurez-vous d'avoir :
- Compte AWS avec accès Bedrock activé
- AWS CLI installé et configuré
- Autorisations IAM :
bedrock:CreateInferenceProfilebedrock:ListInferenceProfilesbedrock:GetInferenceProfilebedrock:InvokeModel/bedrock:InvokeModelWithResponseStream
- LibreChat avec le endpoint Bedrock configuré (voir Configuration d'AWS Bedrock)
Création de profils d'inférence personnalisés
Important : Les profils d'inférence personnalisés ne peuvent être créés que via l'API (AWS CLI, SDK, etc.) et ne peuvent pas être créés depuis la console AWS.
Méthode 1 : AWS CLI (Recommandé)
Étape 1 : Lister les profils d'inférence système disponibles
# 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')]"Étape 2 : Créer un profil d'inférence personnalisé
# 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Étape 3 : Vérifier la création
# 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-1Méthode 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"
)Configuration de LibreChat
Configuration de librechat.yaml
Ajoutez la configuration de l'endpoint bedrock à votre librechat.yaml. Pour une référence complète des champs, consultez 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'Variables d'environnement
Ajoutez votre région Bedrock, vos paramètres d'authentification AWS et vos ARN de profil d'inférence à votre fichier .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/def456Configuration de la journalisation
Pour vérifier que vos profils d'inférence sont utilisés correctement, activez la journalisation des invocations de modèles AWS Bedrock.
1. Créer un groupe de journaux CloudWatch
aws logs create-log-group \
--log-group-name /aws/bedrock/model-invocations \
--region us-east-12. Créer un rôle IAM pour la journalisation de Bedrock
Créez le fichier de politique de confiance (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:*"
}
}
}
]
}Créer le rôle :
aws iam create-role \
--role-name BedrockLoggingRole \
--assume-role-policy-document file://bedrock-logging-trust.jsonAttacher les permissions 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:*"
}
]
}'Créer un bucket S3 pour les données volumineuses (requis) :
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. Activer la journalisation des invocations de modèles
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-1Vérifiez que la journalisation est activée :
aws bedrock get-model-invocation-logging-configuration --region us-east-1Vérification de votre configuration
Voir les logs via CLI
Après avoir effectué une requête via LibreChat, vérifiez les logs :
# 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À quoi faire attention
Dans la sortie des logs, recherchez le champ 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"
}Indicateurs de succès :
modelIdaffiche votre ARN de profil d'inférence personnalisé (contientapplication-inference-profile)inferenceRegionpeut varier (indique que le routage inter-régional fonctionne)
Si le mappage ne fonctionne pas :
modelIdaffichera l'ID du modèle brut au lieu de l'ARN
Afficher les journaux via la console AWS
- Ouvrez CloudWatch dans la console AWS
- Accédez à Logs > Log groups
- Sélectionnez
/aws/bedrock/model-invocations - Cliquez sur le dernier flux de journaux
- Rechercher votre ID de profil d'inférence
Surveillance de l'utilisation
Métriques CloudWatch
Afficher les métriques Bedrock dans CloudWatch :
aws cloudwatch list-metrics --namespace AWS/Bedrock --region us-east-1Console AWS
- Console Bedrock > Profils d'inférence > onglet Application
- Cliquez sur votre profil personnalisé
- Voir les métriques d'invocation et les statistiques d'utilisation
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| Modèle non reconnu | Modèle manquant dans le tableau models | Ajoutez l'ID du modèle à models dans librechat.yaml |
| ARN non utilisé | L'ID du modèle ne correspond pas | Assurez-vous que l'ID du modèle dans inferenceProfiles correspond exactement à celui dans models |
| Variable d'environnement non résolue | Erreur de frappe ou non définie | Vérifiez le fichier .env et assurez-vous que le nom de la variable correspond à ${VAR_NAME} |
| Accès refusé | Permissions IAM manquantes | Ajoutez les permissions bedrock:InvokeModel* pour l'ARN du profil d'inférence |
| Accès au modèle refusé | Accord sur le modèle manquant ou en cours de propagation | Acceptez l'accord sur le modèle Bedrock et attendez que la disponibilité se propage |
| Profil introuvable | Région incorrecte | Assurez-vous de créer/utiliser des profils dans la même région |
Propagation de l'accord d'accès aux modèles
La création d'un profil d'inférence d'application n'active pas automatiquement le modèle de base sous-jacent dans votre compte AWS. Si l'accès au modèle vient d'être activé, AWS peut également avoir besoin d'un court délai de propagation avant que les requêtes effectuées via le profil d'inférence ne réussissent.
Cela peut apparaître sous la forme d'une AccessDeniedException même lorsque le profil d'inférence existe et que votre rôle IAM dispose des autorisations bedrock:InvokeModel. L'erreur peut mentionner aws-marketplace:ViewSubscriptions, aws-marketplace:Subscribe, ou vous demander de réessayer après quelques minutes.
Vérifiez la disponibilité du modèle sous-jacent avant de déboguer le mappage de LibreChat :
aws bedrock get-foundation-model-availability \
--region us-east-1 \
--model-id us.anthropic.claude-sonnet-4-5-20250929-v1:0Rechercher :
agreementAvailability.statusdéfini surAVAILABLEauthorizationStatusdéfini surAUTHORIZEDentitlementAvailabilitydéfini surAVAILABLEregionAvailabilitydéfini surAVAILABLE
Si l'accord est manquant, acceptez l'accord de modèle dans la console Bedrock ou avec un principal AWS capable de gérer les accords de modèle Bedrock et les abonnements Marketplace. Une fois que le statut passe à AVAILABLE, attendez quelques minutes et réessayez d'appeler le profil d'inférence de l'application.
Liste de vérification pour le débogage
- L'ID du modèle se trouve dans le tableau
models - L'ID du modèle dans
inferenceProfilescorrespond exactement (sensible à la casse) - La variable d'environnement est définie (si vous utilisez la syntaxe
${VAR}) - Les identifiants AWS ont la permission d'invoquer le profil d'inférence
- L'accord sur le modèle de base sous-jacent est
AVAILABLEdans Bedrock - LibreChat a été redémarré après des modifications de configuration
Vérifier le chargement de la configuration
Vérifiez que votre configuration est lue correctement en examinant les journaux du serveur au démarrage de LibreChat.
Exemple complet
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 de configuration rapide
#!/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 tableRessources associées
- Documentation des profils d'inférence AWS Bedrock
- Documentation sur l'accès aux modèles AWS Bedrock
- Structure de l'objet AWS Bedrock - Référence des champs de configuration YAML
- Configuration d'AWS Bedrock - Configuration de base de Bedrock
- Journalisation des appels de modèles AWS Bedrock
Que pensez-vous de ce guide ?