Exiger une sortie structurée
Afin de garantir des formats de sortie cohérents et structurés, il est possible d’utiliser des sorties structurées, notamment des formats tels que XML, JSON ou Markdown. Cette approche permet aux cas d’utilisation en aval de consommer et de traiter plus efficacement les sorties générées par le modèle. En fournissant des instructions explicites au modèle, les réponses sont générées conformément à un schéma prédéfini. Il est recommandé de fournir un output
schema que le modèle doit suivre.
Par exemple, si l’analyseur en aval attend des conventions de nommage spécifiques pour les clés d’un objet JSON, vous devez le spécifier dans le champ Schéma de sortie de la requête. De plus, si vous préférez que les réponses soient au format JSON sans texte d’introduction, indiquez-le au modèle. Autrement dit, indiquez explicitement « Veuillez générer uniquement la sortie JSON. NE PAS fournir de préambule. ».
Utiliser le préremplissage pour aider le modèle à démarrer
Une alternative efficace consiste à guider la réponse du modèle en préremplissant le contenu assistant. Cette technique vous permet de diriger les actions du modèle, de contourner les préambules et d’imposer des formats de sortie spécifiques tels que JSON et XML. Par exemple, si vous préremplissez le contenu de l’assistant avec "{" ou "```json", cette entrée peut guider le modèle pour qu’il génère l’objet JSON sans fournir d’informations supplémentaires.
Astuce
Si vous cherchez explicitement à extraire du JSON, une pratique courante consiste à le préremplir avec ```json et à ajouter une séquence d’arrêt sur ```. Cela garantit que le modèle produit un objet JSON qui peut être analysé par programmation.
Voici quelques exemples de schémas de formatage courants.
Le code suivant montre comment préremplir avec l’API :
import boto3 import json # Create a Bedrock Runtime client. client = boto3.client( "bedrock-runtime", region_name="us-east-1" ) request_body = { "system": [ {"text": "You write JSON objects based on the given instructions"} ], "messages": [ { "role": "user", "content": [{"text": "Provide details about the best selling full-frame cameras in past three years. Answer in JSON format with keys like name, brand, price and a summary."}] }, { "role": "assistant", "content": [{"text": " Here is the JSON response: ```json"}] }, ], "inferenceConfig": { "maxTokens": 300, "temperature": 0, } } # Invoke the model and extract the response body. response = client.invoke_model( modelId="amazon.nova-micro-v1:0", body=json.dumps(request_body) ) model_response = json.loads(response["body"].read())
Note
Pour une sortie structurée, que vous utilisiez ou non un outil, nous vous recommandons d’utiliser des paramètres de décodage gourmands. C'est-à-dire , temperature=0.
L’ajout de la section Schéma de sortie avec le schéma approprié incite le modèle à s’adapter à ce schéma. Cependant, la sortie du modèle n’est pas déterministe et peut varier par rapport au schéma de sortie.
Rôle |
Invite |
|
|---|---|---|
Utilisateur |
Fournissez des détails sur les appareils photo plein format les plus vendus au cours des trois dernières années. Répondez au format JSON avec des clés telles que le nom, la marque, le prix et un résumé. |
Fournissez des détails sur les appareils photo plein format les plus vendus au cours des trois dernières années. Vous DEVEZ répondre uniquement au format JSON. Veuillez suivre le schéma de sortie ci-dessous. Schéma de sortie :
|
Assistant |
|
|
Une autre approche consiste à préremplir la réponse du modèle en incluant le texte initial souhaité dans le message de l’assistant. Dans ce cas, la réponse du modèle Amazon Nova se poursuivra là où le message de l’assistant s’arrête.
Rôle |
Invite |
|---|---|
Utilisateur |
Fournissez des détails sur les appareils photo plein format les plus vendus au cours des trois dernières années. Votre réponse doit être au format JSON, avec les clés suivantes : nom, marque, année, prix, résumé. |
Assistant (Préremplissage) |
```json |
Assistant |
|
Une troisième approche consiste à utiliser l’outil pour imposer un schéma spécifique à la réponse du modèle en incluant le schéma JSON pydantic dans la section du schéma d’utilisation de l’outil. Vous pouvez spécifier le choix de l’outil dans le schéma fourni et la réponse d’Amazon Nova sera structurée en fonction de l’outil sélectionné. Pour en savoir plus sur la manière d’utiliser l’outil, consultez Utilisation des outils (appel de fonction) avec Amazon Nova.
Utilisateur |
À partir de la requête fournie ci-dessous, extrayez les entités pertinentes
|
ToolConfig |
|