Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Inférence à l'aide de l'API Converse
L'API Converse est disponible uniquement sur le bedrock-runtime terminal.
Vous pouvez utiliser l’API Amazon Bedrock Converse pour créer des applications conversationnelles qui envoient et reçoivent des messages depuis et vers un modèle Amazon Bedrock. Par exemple, vous pouvez créer un bot de discussion qui entretient une conversation à plusieurs reprises et utilise une personnalisation du personnage ou du ton adaptée à vos besoins, par exemple un assistant de support technique utile.
Pour utiliser l'ConverseAPI, vous utilisez les opérations Converse ou ConverseStream (pour les réponses en continu) pour envoyer des messages à un modèle. Il est possible d'utiliser les opérations d'inférence de base existantes (InvokeModelou InvokeModelWithResponseStream) pour les applications de conversation. Cependant, l'ConverseAPI fournit une API cohérente qui fonctionne avec tous les modèles Amazon Bedrock qui prennent en charge les messages. Cela signifie que vous pouvez écrire du code une seule fois et l’utiliser avec différents modèles. Si un modèle possède des paramètres d’inférence uniques, l’API Converse vous permet également de transmettre ces paramètres uniques dans une structure spécifique au modèle.
Vous pouvez utiliser l’API Converse pour implémenter l’utilisation d’outils et de barrières de protection dans vos applications.
Note
-
Avec les modèles Mistral AI et Meta, l’API Converse intègre vos entrées dans un modèle d’invite spécifique au modèle qui permet les conversations.
-
Des restrictions s'appliquent aux opérations suivantes :
InvokeModelInvokeModelWithResponseStream,Converse, etConverseStream. Consultez les restrictions d'API pour plus de détails.
Voici des exemples de code :
-
Exemples Python pour cette rubrique : Converse Exemple d'API
-
Différents langages et modèles : Exemples de code pour Amazon Bedrock Runtime utilisant AWS Kits SDK
-
Didacticiel Java : Guide du développeur Java sur la nouvelle API Converse de Bedrock
-
JavaScript tutoriel — Guide du développeur sur la nouvelle Converse API de Bedrock
Utilisation de Converse API
Pour utiliser l’API Converse, vous devez appeler les opérations Converse ou ConverseStream pour envoyer des messages à un modèle. Pour appeler Converse, vous devez disposer de l’autorisation sur l’opération bedrock:InvokeModel. Pour appeler ConverseStream, vous devez disposer de l’autorisation sur l’opération bedrock:InvokeModelWithResponseStream.
Demande
Lorsque vous envoyez une demande Converse à un point de terminaison d’exécution Amazon Bedrock, vous pouvez inclure les champs suivants :
-
modelId : paramètre obligatoire dans l’en-tête qui vous permet de spécifier la ressource à utiliser pour l’inférence.
-
Les champs suivants vous permettent de personnaliser l’invite :
-
messages : à utiliser pour spécifier le contenu et le rôle des invites.
-
system : à utiliser pour spécifier les invites du système, qui définissent les instructions ou le contexte du modèle.
-
inferenceConfig : à utiliser pour spécifier les paramètres d’inférence communs à tous les modèles. Les paramètres d’inférence influencent la génération de la réponse.
-
supplémentaire ModelRequestFields : utilisez cette option pour spécifier des paramètres d'inférence spécifiques au modèle avec lequel vous exécutez l'inférence.
-
promptVariables : (si vous utilisez une invite de la gestion des invites) utilisez ce champ pour définir les variables de l’invite à renseigner et les valeurs avec lesquelles les remplir.
-
-
Les champs suivants vous permettent de personnaliser le mode de renvoi de la réponse :
-
guardrailConfig : utilisez ce champ pour inclure une barrière de protection à appliquer à l’ensemble de l’invite.
-
toolConfig : utilisez ce champ pour inclure un outil permettant à un modèle de générer des réponses.
-
supplémentaire ModelResponseFieldPaths — Utilisez ce champ pour spécifier les champs à renvoyer sous forme d'objet pointeur JSON.
-
ServiceTier — Utilisez ce champ pour spécifier le niveau de service pour une demande particulière
-
-
requestMetadata : utilisez ce champ pour inclure des métadonnées qui peuvent être filtrées lors de l’utilisation des journaux d’invocation.
Note
Les restrictions suivantes s’appliquent lorsque vous utilisez une invite de la gestion des invites avec Converse ou ConverseStream :
-
Vous ne pouvez pas inclure les champs
additionalModelRequestFields,inferenceConfig,systemnitoolConfig. -
Si vous incluez le champ
messages, les messages sont ajoutés après les messages définis dans l’invite. -
Si vous incluez le champ
guardrailConfig, la barrière de protection est appliquée à l’ensemble de l’invite. Si vous incluezguardContentdes blocs dans le ContentBlock champ, le garde-corps ne sera appliqué qu'à ces blocs.
Développez une section pour en savoir plus sur un champ dans le corps de la demande Converse :
messages
Le champ messages est un tableau d’objets Message, dont chacun définit un message entre l’utilisateur et le modèle. Un objet Message contient les champs suivants :
-
rôle : définit si le message provient de
user(l’invite envoyée au modèle) ou deassistant(la réponse du modèle). -
contenu : définit le contenu de l’invite.
Note
Amazon Bedrock ne stocke aucun texte, image ou document que vous fournissez sous forme de contenu. Les données ne sont utilisées que pour générer la réponse.
Vous pouvez conserver le contexte de la conversation en incluant tous les messages de la conversation dans les demandes Converse suivantes et en utilisant le champ role pour spécifier si le message provient de l’utilisateur ou du modèle.
Le content champ correspond à un tableau d'ContentBlockobjets. Dans chacun d'eux ContentBlock, vous pouvez spécifier l'un des champs suivants (pour voir quels modèles prennent en charge quels blocs, consultez les modèles en un coup d'œil) :
Dans l’exemple messages suivant, l’utilisateur demande une liste de trois chansons pop, et le modèle génère une liste de chansons.
[ { "role": "user", "content": [ { "text": "Create a list of 3 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras" } ] } ]
system
Une invite système est un type d’invite qui fournit des instructions ou un contexte au modèle concernant la tâche qu’il doit effectuer ou le personnage qu’il doit adopter au cours de la conversation. Vous pouvez spécifier une liste d'invites système pour la demande dans le champ system (SystemContentBlock), comme illustré dans l'exemple suivant.
[ { "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. " } ]
inferenceConfig
L'ConverseAPI prend en charge un ensemble de paramètres d'inférence de base que vous définissez dans le inferenceConfig champ (InferenceConfiguration). Le jeu de base des paramètres d’inférence est le suivant :
-
maxTokens : le nombre maximum de jetons à autoriser dans la réponse générée.
-
stopSequences : liste de séquences d’arrêt. Une séquence d’arrêt est une séquence de caractères qui empêche le modèle de générer la réponse.
-
Température : probabilité que le modèle sélectionne des options à probabilité plus élevée tout en générant une réponse.
-
topP : pourcentage de candidats les plus probables pris en compte par le modèle pour le jeton suivant.
Pour de plus amples informations, veuillez consulter Génération de réponse d’influence à l’aide de paramètres d’inférence.
L’exemple JSON suivant définit le paramètre d’inférence temperature.
{"temperature": 0.5}
supplémentaire ModelRequestFields
Si le modèle que vous utilisez possède des paramètres d’inférence supplémentaires, vous pouvez définir ces paramètres en les spécifiant au format JSON dans le champ additionalModelRequestFields. L’exemple JSON suivant montre comment définir top_k, qui est disponible dans les modèles Anthropic Claude, mais qui n’est pas un paramètre d’inférence de base dans l’API de messages.
{"top_k": 200}
promptVariables
Si vous spécifiez une invite de Prompt Management dans le modelId comme ressource sur laquelle exécuter l’inférence, utilisez ce champ pour renseigner les variables d’invite avec des valeurs réelles. Le champ promptVariables correspond à un objet JSON dont les clés correspondent aux variables définies dans les invites et aux valeurs par lesquelles les variables doivent être remplacées.
Par exemple, supposons que vous ayez une invite indiquant Make me a L’ID de l’invite est {{genre}} playlist consisting of the following number of songs: {{number}}.PROMPT12345 et sa version est 1. Vous pouvez envoyer la demande Converse suivante pour remplacer les variables :
POST /model/arn:aws:bedrock:us-east-1:111122223333:prompt/PROMPT12345:1/converse HTTP/1.1 Content-type: application/json { "promptVariables": { "genre": { "text": "pop" }, "number": { "text": "3" } } }
guardrailConfig
Vous pouvez appliquer une barrière de protection que vous avez créée avec les barrières de protection Amazon Bedrock en incluant ce champ. Pour appliquer le garde-fou à un message spécifique de la conversation, incluez le message dans un. GuardrailConverseContentBlock Si vous n’incluez aucun GuardrailConverseContentBlock dans le corps de la demande, la barrière de protection est appliquée à tous les messages du champ messages. Pour obtenir un exemple, consultez Incluez un garde-corps avec Converse API.
toolConfig
Ce champ vous permet de définir un outil que le modèle doit utiliser pour l’aider à générer une réponse. Pour de plus amples informations, veuillez consulter Utilisation d’un outil pour compléter une réponse au modèle Amazon Bedrock.
supplémentaire ModelResponseFieldPaths
Chaque modèle pris en charge par Amazon Bedrock possède sa propre forme de réponse native avec des champs spécifiques au fournisseur (par exemple, Anthropic Claude renvoie un stop_sequence champ, Cohere renvoieis_finished, etc.). Pour obtenir une réponse uniforme sur tous les modèles, conversez et ConverseStream supprimez la plupart des champs natifs du modèle par défaut et renvoyez une enveloppe normalisée avecoutput,, stopReason et. usage metrics
Si votre application a besoin d'un ou de plusieurs de ces champs natifs du modèle, répertoriez leurs chemins de pointeur JSON dans. additionalModelResponseFieldPaths Conversez ConverseStream, puis incluez ces champs dans le additionalModelResponseFields champ de la réponse.
L'exemple suivant demande à Converse de renvoyer Anthropic Claude également stop_sequence le champ, qui contient la valeur de la séquence d'arrêt qui a mis fin à la génération :
[ "/stop_sequence" ]
Chaque chemin est un pointeur JSON (RFC 6901400 Si un pointeur est valide mais que le chemin demandé n'existe pas dans la réponse du modèle, il est ignoré silencieusement.
Note
Ce champ contrôle les champs de réponse natifs du modèle qui apparaissent via Converse. https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html Il ne contrôle pas le formatage du texte en sortie. Certains modèlesDeepSeek-R1, Claude 3.7 Sonnet en particulier les modèles de raisonnement tels que les modèles à réflexion étendue et les modèles de Amazon Nova raisonnement, peuvent inclure du contenu de raisonnement ou des jetons spécifiques au modèle dans leur sortie de texte. Pour savoir comment utiliser un contenu de raisonnement, voirAmélioration des réponses des modèles grâce au raisonnement modélisé.
requestMetadata
Le requestMetadata champ correspond à un objet JSON contenant des balises clé-valeur qui sont enregistrées avec la demande dans les journaux d'invocation de votre modèle. Vous pouvez utiliser les métadonnées des demandes pour filtrer et agréger les journaux par équipe, application, environnement ou toute autre dimension qui varie en fonction de l'appel.
La même fonctionnalité est disponible sur InvokeModel et InvokeModelWithResponseStream via l'en-tête X-Amzn-Bedrock-Request-Metadata HTTP. Pour plus de détails sur les API prises en charge, les limites et la manière dont les métadonnées des demandes apparaissent dans les journaux d'appel, consultezPer-request balisage des métadonnées.
Niveau de service
Ce champ est mappé à un objet JSON. Vous pouvez spécifier le niveau de service pour une demande particulière.
L'exemple suivant montre la serviceTier structure :
"serviceTier": { "type": "reserved" | "priority" | "default" | "flex" }
Pour obtenir des informations détaillées sur les niveaux de service, y compris les caractéristiques de tarification et de performance, consultezNiveaux de service pour optimiser les performances et les coûts.
Vous pouvez également éventuellement ajouter des points de contrôle du cache aux champs system ou tools pour utiliser la mise en cache des invites, selon le modèle que vous utilisez. Pour de plus amples informations, veuillez consulter Mise en cache des invites pour une inférence de modèle plus rapide.
Réponse
La réponse que vous obtenez de l’API Converse dépend de l’opération que vous appelez, Converse ou ConverseStream.
Réponse inverse
Dans le formulaire de réponseConverse, le output champ (ConverseOutput) contient le message (Message) généré par le modèle. Le contenu du message se trouve dans le champ content (ContentBlock) et le rôle (userouassistant) auquel le message correspond se trouve dans le role champ.
Si vous avez utilisé la mise en cache des invites, alors dans le champ d’utilisation, cacheReadInputTokens et cacheWriteInputTokens vous indiquent combien de jetons au total ont été lus depuis le cache et écrits dans le cache, respectivement.
Si vous avez utilisé des niveaux de service, le champ de réponse service tier vous indiquera quel niveau de service a été utilisé pour la demande.
Le metrics champ (ConverseMetrics) inclut les métriques de l'appel. Pour déterminer pourquoi le modèle a cessé de générer du contenu, vérifiez le champ stopReason. Vous pouvez obtenir des informations sur les jetons transmis au modèle dans la demande et sur les jetons générés dans la réponse en cochant le usage champ (TokenUsage). Si vous avez spécifié des champs de réponse supplémentaires dans la demande, l’API les renvoie au format JSON dans le champ additionalModelResponseFields.
L’exemple suivant montre la réponse de Converse lorsque vous avez répondu à l’invite décrite dans Demande.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis" } ] } }, "stopReason": "end_turn", "usage": { "inputTokens": 125, "outputTokens": 60, "totalTokens": 185 }, "metrics": { "latencyMs": 1175 } }
ConverseStream réponse
Si vous appelez ConverseStream pour diffuser la réponse d’un modèle, le flux est renvoyé dans le champ de réponse stream. Le flux émet les événements suivants. Le schéma ci-dessous montre l'ordre dans lequel les événements sont reçus ; les événements du bloc de contenu se répètent une fois par bloc de contenu, groupés parcontentBlockIndex.
messageStart (once per response)
|
v
+-- for each content block (indexed by contentBlockIndex) --+
| |
| contentBlockStart (tool use only) |
| contentBlockDelta (one or more; text / reasoning / |
| tool use partial JSON) |
| contentBlockStop |
| |
+-----------------------------------------------------------+
|
v
messageStop (once per response;
| carries stopReason)
v
metadata (once per response;
usage + metrics)
-
messageStart(MessageStartEvent). L'événement de démarrage d'un message. Inclut le rôle du message. -
contentBlockStart(ContentBlockStartEvent). Un événement de démarrage d'un bloc de contenu. Utilisation d’outils uniquement. -
contentBlockDelta(ContentBlockDeltaEvent). Un événement delta du bloc de contenu. Essayez l’une des actions suivantes :-
text: texte partiel généré par le modèle. -
reasoningContent: raisonnement partiel effectué par le modèle pour générer la réponse. Vous devez envoyer lesignaturerenvoyé, en plus de tous les messages précédents, dans les demandesConversesuivantes. Si l’un des messages est modifié, la réponse génère une erreur. -
toolUse: l’objet JSON d’entrée partielle destiné à l’utilisation de l’outil.
-
-
contentBlockStop(ContentBlockStopEvent). Un événement d'arrêt du blocage de contenu. -
messageStop(MessageStopEvent). L'événement d'arrêt du message. Inclut la raison pour laquelle le modèle a cessé de générer une sortie. -
metadata(ConverseStreamMetadataEvent). Métadonnées de la demande. Les métadonnées incluent l'utilisation du jeton dansusage(TokenUsage) et les mesures pour l'appel dansmetrics(ConverseStreamMetadataEvent).
ConverseStream diffuse un bloc de contenu complet sous la forme d'un ContentBlockStartEvent événement, d'un ou de plusieurs ContentBlockDeltaEvent événements et d'un ContentBlockStopEvent événement. Utilisez le champ contentBlockIndex comme index pour corréler les événements qui constituent un bloc de contenu.
Voici un exemple de réponse partielle renvoyée par ConverseStream.
{'messageStart': {'role': 'assistant'}} {'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}} . . . {'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}} {'messageStop': {'stopReason': 'max_tokens'}} {'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}
Converse Exemple d'API
Le tableau suivant montre des exemples d’utilisation des opérations Converse et ConverseStream.