View a markdown version of this page

Utilisation de l’API Converse - Amazon Nova

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.

Utilisation de l’API Converse

L'API Converse fournit une interface unifiée pour interagir avec les modèles Amazon Nova. Il élimine les détails spécifiques au modèle et fournit une méthode cohérente pour gérer les conversations à plusieurs tours, les instructions du système et les réponses en streaming sur tous les modèles Amazon Nova.

Structure de la demande

  • Conversations à plusieurs tours : maintenez le contexte dans plusieurs échanges

  • Invites du système : instructions système telles que les personas ou les directives de réponse

  • Chat documentaire : interagissez avec des documents ou des collections de documents et interrogez-les

  • Vision : traiter et analyser des images et des vidéos

  • Utilisation des outils : autorisez les modèles à utiliser des outils externes et APIs

  • Garde-corps : appliquez le filtrage du contenu et les contrôles de sécurité

  • Raisonnement : réflexion approfondie pour la résolution de problèmes complexes

Une requête d'API Converse de base inclut l'ID du modèle et une liste de messages :

import boto3 bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') response = bedrock.converse( modelId='us.amazon.nova-2-lite-v1:0', messages=[ { 'role': 'user', 'content': [{'text': 'What is machine learning?'}] } ] ) content_list = response["output"]["message"]["content"] # Extract the first text block text = next((item["text"] for item in content_list if "text" in item), None) if text is not None: print(text)

Utilisation des instructions du système

Les instructions du système fournissent le contexte et les instructions au modèle :

import boto3 bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') response = bedrock.converse( modelId='us.amazon.nova-2-lite-v1:0', system=[ {'text': 'You are a helpful AI assistant specializing in cloud computing.'} ], messages=[ { 'role': 'user', 'content': [{'text': 'Explain serverless computing.'}] } ] ) # Print the response text content_list = response["output"]["message"]["content"] text = next((item["text"] for item in content_list if "text" in item), None) if text is not None: print(text)

Paramètres d'inférence

Contrôlez la sortie du modèle à l'aide de paramètres d'inférence. Les paramètres d'inférence disponibles sont les suivants.

  • MaxTokens (entier) : nombre maximum de jetons à générer (jusqu'à 65 000). S'il n'est pas spécifié, le modèle utilise une valeur par défaut dynamique basée sur le contexte de la demande.

  • temperature (float) : contrôle le caractère aléatoire (0,0-1,0, 0,7 par défaut). Des valeurs plus faibles rendent la sortie plus déterministe

  • TopP (float) : seuil d'échantillonnage du noyau (0-1, 0,9 par défaut). Des valeurs plus faibles rendent la sortie plus ciblée

  • StopSequences (array) : séquences de caractères qui arrêtent la génération lorsqu'elles sont rencontrées

Exemple :

import boto3 bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') response = bedrock.converse( modelId='us.amazon.nova-2-lite-v1:0', messages=[ { 'role': 'user', 'content': [{'text': 'Write a short story.'}] } ], inferenceConfig={ 'maxTokens': 512, 'temperature': 0.7, 'topP': 0.9, 'stopSequences': ['END'] } ) content_list = response["output"]["message"]["content"] text = next((item["text"] for item in content_list if "text" in item), None) if text is not None: print(text)

Utiliser le raisonnement

Nova 2 Lite permet une réflexion approfondie pour la résolution de problèmes complexes. Permettez de raisonner avecreasoningConfig.

Par défaut, le raisonnement est désactivé pour optimiser la rapidité et le coût des requêtes simples. Lorsque vous devez aller au-delà de ces tâches simples, vous pouvez activer le raisonnement. Nova 2 permet de contrôler de manière flexible la profondeur du raisonnement grâce à trois niveaux d'effort :

Faible effort (maxReasoningEffort: "low")

IDÉAL POUR : LES TÂCHES PLUS COMPLEXES NÉCESSITANT UNE RÉFLEXION STRUCTURÉE. Par exemple, vous pouvez l'utiliser pour la révision du code et les suggestions d'amélioration lorsque le modèle doit prendre en compte attentivement la qualité du code existant, pour les tâches d'analyse qui nécessitent une prise en compte approfondie de plusieurs facteurs ou pour les scénarios de résolution de problèmes bénéficiant d'une approche méthodique. Le faible niveau d'effort est idéal pour les tâches complexes où le raisonnement de base améliore la précision sans nécessiter une planification approfondie en plusieurs étapes.

Effort moyen (maxReasoningEffort: "medium")

IDÉAL POUR : LES TÂCHES EN PLUSIEURS ÉTAPES ET LES FLUX DE TRAVAIL DE CODAGE. Par exemple, vous pouvez l'utiliser pour le développement et le débogage de logiciels lorsque le modèle doit comprendre la structure de code existante avant d'implémenter des modifications, pour générer du code nécessitant une coordination entre plusieurs fichiers ou composants, pour des calculs en plusieurs étapes avec interdépendances ou pour planifier des tâches avec plusieurs contraintes. Un effort moyen est optimal pour les flux de travail agentiques qui coordonnent plusieurs outils et nécessitent que le modèle maintienne le contexte de plusieurs opérations séquentielles.

Effort élevé (maxReasoningEffort: "high")

IDÉAL POUR : LE RAISONNEMENT RADICAL ET LA RÉSOLUTION AVANCÉE DE PROBLÈMES. Par exemple, vous pouvez l'utiliser pour des problèmes mathématiques avancés et des preuves qui nécessitent une step-by-step vérification rigoureuse, des analyses scientifiques et des tâches de recherche exigeant une investigation approfondie, une conception de systèmes complexes avec des considérations architecturales à plusieurs dimensions, ou des scénarios de prise de décision critiques ayant des implications importantes. Un effort élevé permet d'obtenir une précision maximale pour les tâches nécessitant un raisonnement sophistiqué, une évaluation minutieuse des alternatives et une validation approfondie des conclusions.

Les exemples suivants montrent différents niveaux d'effort de raisonnement :

Low effort
import boto3 bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') response = bedrock.converse( modelId='us.amazon.nova-2-lite-v1:0', system=[{"text": "You are a highly capable personal assistant"}], messages=[{ "role": "user", "content": [{"text": "Provide a meal plan for a gluten free family of 4."}] }], inferenceConfig={ "temperature": 0.7, "topP": 0.9, "maxTokens": 10000 }, additionalModelRequestFields={ "reasoningConfig": { "type": "enabled", "maxReasoningEffort": "low" } } )

Paramètres de raisonnement :

Les paramètres de raisonnement sont les suivants :

  • type: enabled ou disabled (par défaut :disabled)

  • maxReasoningEffort: lowmedium, ouhigh. Cela est nécessaire lorsque le raisonnement est activé.

Note

Temperature, TopP et TopK ne peuvent pas être utilisés lorsque le paramètre est maxReasoningEffort réglé sur. high Cela provoquera une erreur.

La réponse inclut le contenu du raisonnement :

{ "output": { "message": { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "[REDACTED]" } } }, { "text": "Based on the premises, we can conclude..." } ] } }, "stopReason": "end_turn" }
Note

Avec Amazon Nova 2, le contenu de raisonnement s'affiche sous la forme[REDACTED]. Les jetons de raisonnement vous sont toujours facturés, car ils contribuent à améliorer la qualité de sortie. Nous incluons maintenant ce champ dans la structure de réponse afin de préserver la possibilité d'exposer le contenu du raisonnement à l'avenir. Nous travaillons activement avec nos clients afin de déterminer la meilleure approche pour définir le processus de raisonnement du modèle.