Cibles du connecteur d'inférence
Les cibles du connecteur d'inférence fournissent une configuration préconfigurée pour les fournisseurs de modèles pris en charge. Lorsque vous utilisez un connecteur, la passerelle gère automatiquement les opérations, la découverte du modèle, la traduction de l'identifiant du modèle et la réécriture des chemins en fonction de la connaissance intégrée de l'API du fournisseur. Vous n'avez donc pas besoin de les spécifier manuellement.
Les connecteurs sont recommandés lorsque vous souhaitez ajouter rapidement un fournisseur de modèles pris en charge sans configurer manuellement les points de terminaison, les opérations ou les mappages de modèles.
Rubriques
Configuration de la cible
La configuration cible d'une cible de connecteur d'inférence utilise la structure suivante :
{ "inference": { "connector": { "source": { "connectorId": "bedrock-mantle" } } } }
-
connectoriD (obligatoire) — Identifiant du connecteur intégré. Les valeurs prises en charge sont
bedrock-mantle,openaietanthropic.
Chaque connecteur fournit des valeurs par défaut intégrées équivalentes à une configuration de fournisseur entièrement spécifiée. Par exemple, le bedrock-mantle connecteur configure automatiquement :
-
Suppression du préfixe de l'identifiant du modèle — Les clients peuvent omettre le préfixe du fournisseur dans les identifiants du modèle (par exemple, utiliser
claude-opus-4-7au lieu de).anthropic.claude-opus-4-7 -
Réécriture des chemins — Les chemins des demandes d'inférence entrantes sont mappés aux chemins d'API du fournisseur.
-
Opérations prises en charge : ensemble des opérations d'inférence exposées par le connecteur, telles que les discussions terminées et les messages.
Création d'une cible d'inférence de connecteur
L'exemple suivant montre comment créer une cible d'inférence à l'aide du connecteur Bedrock Mantle :
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "bedrock-mantle", "targetConfiguration": { "inference": { "connector": { "source": { "connectorId": "bedrock-mantle" } } } }, "credentialProviderConfigurations": [ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ] }'
L'exemple suivant montre comment créer une cible d'inférence à l'aide du connecteur OpenAI :
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "openai", "targetConfiguration": { "inference": { "connector": { "source": { "connectorId": "openai" } } } }, "credentialProviderConfigurations": [ { "credentialProviderType": "API_KEY", "credentialProvider": { "apiKeyCredentialProvider": { "providerArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:token-vault/default/apikeycredentialprovider/openai-key", "credentialLocation": "HEADER", "credentialParameterName": "Authorization", "credentialPrefix": "Bearer " } } } ] }'
L'exemple suivant montre comment créer une cible d'inférence à l'aide du connecteur Anthropic :
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "anthropic", "targetConfiguration": { "inference": { "connector": { "source": { "connectorId": "anthropic" } } } }, "credentialProviderConfigurations": [ { "credentialProviderType": "API_KEY", "credentialProvider": { "apiKeyCredentialProvider": { "providerArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:token-vault/default/apikeycredentialprovider/anthropic-key", "credentialLocation": "HEADER", "credentialParameterName": "x-api-key" } } } ] }'
Invocation d'une cible d'inférence de connecteur
Pour invoquer une cible d'inférence, envoyez des demandes sur le /inference chemin de la passerelle. La passerelle achemine chaque demande vers la bonne cible en fonction du model champ du corps de la demande. La model valeur peut être un identifiant de modèle simple (par exemple,gpt-5.5) ou un identifiant de modèle qualifié par la cible dans le formulaire {targetName}/{modelId} (par exemple,openai/gpt-5.5). Pour plus de détails sur la façon dont la model valeur est mise en correspondance avec une cible, consultez la section Model-based routage.
Le format de l'URL est le suivant :
https://{gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com/inference/{path}
Remplacez {path} par le chemin de l'opération d'inférence (par exemplev1/chat/completions,v1/responses, ouv1/messages).
Utilisation du SDK OpenAI
Définissez le /inference/v1 chemin de la passerelle comme suit base_url :
from openai import OpenAI client = OpenAI( base_url="https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference/v1", api_key="<gateway-auth-token>" ) response = client.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": "Hello!"}] )
Utilisation du SDK Anthropic
Définissez le /inference chemin de la passerelle comme suit base_url :
import anthropic client = anthropic.Anthropic( base_url="https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference", api_key="<gateway-auth-token>" ) response = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": "Hello!"}] )
Utiliser awscurl
awscurl --service bedrock-agentcore --region us-west-2 -X POST \ "https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-5.5", "messages": [{"role": "user", "content": "Hello!"}]}'
Liste des modèles disponibles
Pour découvrir les modèles disponibles pour toutes les cibles d'inférence, appelez le point de terminaison des modèles de liste :
awscurl --service bedrock-agentcore --region us-west-2 \ "https://<gateway-id>.gateway.bedrock-agentcore.us-west-2.amazonaws.com/inference/v1/models"
La réponse est au /v1/models format OpenAI avec des identifiants de modèles préfixés par le nom de la cible :
{ "data": [ {"id": "bedrock-mantle/anthropic.claude-opus-4-7", "object": "model", "owned_by": "system"}, {"id": "openai/gpt-5.5", "object": "model", "owned_by": "openai"}, {"id": "anthropic/claude-sonnet-4-6", "object": "model", "owned_by": "anthropic"} ] }
Le owned_by champ indique le fournisseur du modèle. Une valeur de system indique un modèle hébergé par Amazon Bedrock, tandis que openai et anthropic indique les modèles proposés directement par ces fournisseurs.
Model-based routage
La passerelle achemine les demandes d'inférence en fonction du model champ du corps de la demande :
-
Routage qualifié : si l'ID du modèle contient un
/et que le préfixe correspond au nom d'une cible, la demande est acheminée vers cette cible (par exemple,openai/gpt-5.5les routes vers laopenaicible). -
Routage non qualifié : si l'ID du modèle ne contient pas un
/, la passerelle le compare à toutes les cibles configurées. Une correspondance exacte a la priorité sur les modèles globaux. Si exactement une cible correspond, la demande y est acheminée. -
Gestion des collisions — Lorsque plusieurs cibles correspondent au même modèle avec la même spécificité, la passerelle utilise par défaut la cible Amazon Bedrock si l'une d'entre elles figure parmi les cibles correspondantes. Sinon, il sélectionne l'une des cibles correspondantes au hasard à chaque demande, de sorte que les demandes pour le même modèle peuvent atterrir sur des cibles différentes. Pour épingler les demandes à une cible spécifique, qualifiez le modèle avec le nom de la cible comme préfixe (par exemple,
bedrock/claude-opus-4-7).
Streaming
Le streaming suit la convention OpenAI SSE. "stream": trueDéfini dans le corps de la demande, et la passerelle passe par le flux SSE depuis le fournisseur sans transformation :
stream = client.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": "Write a story."}], stream=True ) for chunk in stream: print(chunk.choices[0].delta.content, end="")
Limites du flux de réponses
Important
AgentCore Gateway n'impose pas de niveau de service maximal quant à la durée du flux de réponse ou à la taille de réponse. Si vous ne configurez pas de politique de limite de jetons sur votre passerelle cible, chaque demande peut générer une réponse de streaming illimitée.
En l'absence d'une politique de limite de jetons configurée, les réponses illimitées peuvent entraîner les problèmes suivants :
-
Épuisement des ressources de la passerelle : la passerelle maintient les ressources de calcul (mémoire, emplacements du pool de connexions HTTP et processeur pour l'évaluation des politiques) ouvertes pendant toute la durée de chaque réponse de streaming. De grands flux simultanés peuvent épuiser les ressources des tâches de la passerelle.
-
Amplification des coûts grâce aux informations d'identification partagées : tous les utilisateurs qui passent par la même cible partagent le même ensemble d'informations d'identification du fournisseur. Un seul utilisateur qui envoie des
max_tokensdemandes élevées peut consommer le quota de jetons par minute (TPM) du fournisseur pour tous les utilisateurs de cette cible. -
Effets de voisinage bruyants : la Requests-per-minute régulation (RPM) limite le nombre de demandes, mais pas le coût par demande. Un seul utilisateur peut générer des demandes à un coût maximal dans les limites du nombre de tours par minute, dégradant ainsi les performances des autres utilisateurs.
Pour atténuer ces risques, configurez une politique de limite de jetons sur les cibles de votre passerelle. Pour plus d'informations, consultez la section Politiques de passerelle.
Autorisation de sortie
Les cibles du connecteur d'inférence prennent en charge les types d'autorisation sortante suivants :
-
IAM (SigV4) — À utiliser
GATEWAY_IAM_ROLEpour les fournisseurs qui acceptent l'authentification IAM (comme Amazon Bedrock). -
Clé d'API — À utiliser
API_KEYpour les fournisseurs qui ont besoin d'une clé d'API (tels que OpenAI et Anthropic). La passerelle injecte la clé d'API stockée dans les demandes sortantes.