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.
Création d’un système RAG personnalisé avec Amazon Nova
Note
Amazon Nova Premier n'est pas encore disponible via l'RetrieveAndGenerateAPI. Pour utiliser l'RetrieveAndGenerateAPI avec Amazon Nova Premier, vous devez fournir une invite personnalisée lorsque vous appelez l'RetrieveAndGenerateAPI. Cela se fait en fournissant l'generationConfigurationargument promptTemplate in dans l'appel RetrieveAndGenerated'API, comme indiqué ci-dessous :
'generationConfiguration': { 'promptTemplate': { 'textPromptTemplate': promptTemplate } }
Pour créer un modèle d’invite personnalisé, consultez les conseils d’invite pour RAG.
Vous pouvez utiliser les modèles Amazon Nova comme LLM dans un système RAG de texte personnalisé. Pour créer votre propre système RAG avec Amazon Nova, vous pouvez soit configurer votre système RAG pour interroger directement une base de connaissances, soit associer une base de connaissances à un agent (pour plus d’informations, consultez Création d’agents d’IA avec Amazon Nova)
Lorsque vous utilisez Amazon Nova dans un système RAG, deux approches générales sont possibles
-
Utiliser un récupérateur comme outil (recommandé) : vous pouvez définir votre récupérateur pour l'utiliser comme outil dans l'API inverse ou dans ToolParameter l'API Invokemodel. Par exemple, vous pouvez définir l’API Retrieve de Bedrock ou tout autre extracteur comme « outil ».
-
Utilisation d’instructions personnalisées pour les systèmes RAG : vous pouvez définir vos propres instructions personnalisées afin de créer un système RAG personnalisé.
Utilisation d’un extracteur comme outil
Définissez un outil qui permet au modèle d’invoquer un extracteur. La définition de l'outil est un schéma JSON que vous transmettez le paramètre de requête toolConfig (ToolConfiguration) à l'Converseopération.
{ "tools": [ { "toolSpec": { "name": "Retrieve information tool", "description": "This tool retrieves information from a custom database", "inputSchema": { "json": { "type": "object", "properties": { "query": { "type": "string", "description": "This is the description of the query parameter" } }, "required": [ "query" ] } } } } ] }
Une fois l’outil défini, vous pouvez transmettre la configuration de l’outil en tant que paramètre dans l’API converse.
Comment interpréter les éléments de réponse
Vous recevrez une réponse du modèle sous forme de JSON sous le « rôle » assistant avec le type de contenu « toolUse » ou sous forme de type de contexte « text » si le modèle choisit de ne pas utiliser l’outil d’extracteur. Si le modèle choisit d’utiliser l’outil d’extracteur, la réponse identifiera l’outil (tool_name). Les informations sur la manière dont l'outil demandé doit être utilisé figurent dans le message renvoyé par le modèle dans le champ output (ConverseOutput). Plus précisément, le champ toolUse (ToolUseBlock). Vous utilisez le champ toolUseId pour identifier la demande d’outil dans les appels ultérieurs.
{ "output": { "message": { "role": "assistant", "content": [ { "toolUse": { "toolUseId": "tooluse_1234567", "name": "Retrieve information tool", "input": { "query": "Reformatted user query" #various arguments needed by the chosen tool } } } ] } }, "stopReason": "tool_use" }
À partir du champ toolUse dans la réponse du modèle, vous pouvez utiliser le champ name pour identifier le nom de l’outil. Appelez ensuite l’implémentation de l’outil et transmettez les paramètres d’entrée à partir du champ input.
Comment réintroduire le contenu extrait dans l’API Converse
Pour renvoyer les résultats récupérés vers Amazon Nova, vous pouvez désormais créer un message de bloc d'outils qui inclut un bloc de contenu toolResult (ToolResultBlock) dans le rôle de l'utilisateur. Dans le bloc de contenu, incluez la réponse de l’outil et l’ID de la demande d’outil que vous avez obtenu à l’étape précédente.
{ "role": "user", "content": [ { "toolResult": { "toolUseId": "tooluse_1234567", "content": [ { "json": { "Text chunk 1": "retrieved information chunk 1", "Text chunk 2": "retrieved information chunk 2" } } ], "status": "success | error" } } ] }
Le toolResult peut avoir un « contenu » qui peut être « text », « JSON » et « image » (selon le modèle utilisé). Si une erreur se produit dans l’outil, telle qu’une demande pour des arguments inexistants ou erronés, vous pouvez envoyer des informations d’erreur au modèle dans le champ toolResult. Pour indiquer une erreur, spécifiez error dans le champ status.