Utilisation d’outil - Amazon Bedrock

Utilisation d’outil

Avertissement

Plusieurs fonctions ci-dessous sont proposées en version bêta comme indiqué. Ces fonctionnalités sont mises à votre disposition sous la forme d’un « service bêta » tel que défini dans les Conditions d’utilisation AWS. Il est soumis à votre accord avec AWS et aux Conditions d’utilisation AWS, ainsi qu’au CLUF du modèle applicable.

Avec les modèles Anthropic Claude, vous pouvez spécifier un outil que le modèle peut utiliser pour répondre à un message. Par exemple, vous pouvez spécifier un outil qui capte la chanson la plus populaire d’une station de radio. Si l’utilisateur passe le message Quelle est la chanson la plus populaire sur WZPZ ?, le modèle détermine que l’outil que vous avez spécifié peut aider à répondre à la question. Dans sa réponse, le modèle vous demande d’exécuter l’outil en son nom. Vous exécutez ensuite l’outil et transmettez le résultat de l’outil au modèle, qui génère alors une réponse pour le message d’origine. Pour plus d’informations, consultez la section Utilisation de l’outil (appel de fonction) dans la documentation Anthropic Claude.

Astuce

Nous vous recommandons d’utiliser l’API Converse pour intégrer l’utilisation des outils dans votre application. Pour plus d’informations, consultez Utilisation d’un outil pour compléter une réponse au modèle Amazon Bedrock.

Important

Claude Sonnet 4.5 préserve désormais le formatage intentionnel dans les paramètres de la chaîne d’appel de l’outil. Auparavant, les sauts de ligne de fin des paramètres de chaîne étaient parfois supprimées de manière incorrecte. Ce correctif garantit que les outils nécessitant un formatage précis (comme les éditeurs de texte) reçoivent les paramètres exactement comme prévu. Il s’agit d’une amélioration réalisée en arrière-plan, aucune modification de l’API n’étant requise. Cependant, les outils dotés de paramètres de chaîne peuvent désormais recevoir des valeurs avec des sauts de ligne de fin qui ont été précédemment supprimées.

Note

Claude Sonnet 4.5 inclut des optimisations automatiques pour améliorer les performances du modèle. Ces optimisations peuvent ajouter de petites quantités de jetons aux demandes, mais ces jetons ajoutés par le système ne vous sont pas facturés.

Vous spécifiez les outils que vous souhaitez mettre à la disposition d’un modèle dans le champ tools. L’exemple suivant concerne un outil qui obtient les chansons les plus populaires d’une station de radio.

[ { "name": "top_song", "description": "Get the most popular song played on a radio station.", "input_schema": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP." } }, "required": [ "sign" ] } } ]

Lorsque le modèle a besoin d’un outil pour générer une réponse à un message, il renvoie des informations sur l’outil demandé, ainsi que l’entrée de l’outil, dans le champ content du message. Il définit également le motif d’arrêt de la réponse à tool_use.

{ "id": "msg_bdrk_01USsY5m3XRUF4FCppHP8KBx", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "stop_sequence": null, "usage": { "input_tokens": 375, "output_tokens": 36 }, "content": [ { "type": "tool_use", "id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "name": "top_song", "input": { "sign": "WZPZ" } } ], "stop_reason": "tool_use" }

Dans votre code, vous appelez l’outil en son nom. Vous transmettez ensuite le résultat de l’outil (tool_result) dans un message utilisateur au modèle.

{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }

Dans sa réponse, le modèle utilise le résultat de l’outil pour générer une réponse pour le message d’origine.

{ "id": "msg_bdrk_012AaqvTiKuUSc6WadhUkDLP", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "content": [ { "type": "text", "text": "According to the tool, the most popular song played on radio station WZPZ is \"Elemental Hotel\"." } ], "stop_reason": "end_turn" }

Streaming d’outil affiné

Le streaming d’outil affiné est une capacité du modèle Anthropic Claude disponible avec Claude Sonnet 4.5, Claude Haiku 4.5, Claude Sonnet 4 et Claude Opus 4. Grâce au streaming d’outil affiné, les développeurs Claude peuvent diffuser les paramètres d’utilisation d’outil sans mise en mémoire tampon ni validation JSON, réduisant ainsi le temps de latence nécessaire pour commencer à recevoir des paramètres de grande taille.

Note

Lorsque vous utilisez un streaming d’outil affiné, vous risquez de recevoir des entrées JSON non valides ou partielles. Assurez-vous de tenir compte de ces cas périphériques dans votre code.

Pour utiliser cette fonctionnalité, il suffit d’ajouter l’en-tête fine-grained-tool-streaming-2025-05-14 à une demande d’utilisation d’outil.

Voici un exemple de la manière de spécifier l’en-tête de streaming d’outil affiné :

{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "anthropic_beta": ["fine-grained-tool-streaming-2025-05-14"], "messages": [ { "role": "user", "content": "Can you write a long poem and make a file called poem.txt?" } ], "tools": [ { "name": "make_file", "description": "Write text to a file", "input_schema": { "type": "object", "properties": { "filename": { "type": "string", "description": "The filename to write text to" }, "lines_of_text": { "type": "array", "description": "An array of lines of text to write to the file" } }, "required": [ "filename", "lines_of_text" ] } } ] }

Dans cet exemple, le streaming d’outil affiné permet à Claude de diffuser les lignes d’un long poème dans l’appel d’outil make_file sans mise en mémoire tampon pour valider si le paramètre lines_of_text est un JSON valide. Cela signifie que vous pouvez voir le flux de paramètres tel qu’il arrive, sans avoir à attendre que l’intégralité du paramètre soit mise en mémoire tampon et validée.

Grâce au streaming d’outil affiné, les segments d’utilisation d’outil commencent à être diffusés plus rapidement, sont souvent plus longs et contiennent moins de sauts de mots. Cela est dû à des différences de comportement de segmentation.

Par exemple, sans streaming affiné (délai de 15 s) :

Chunk 1: '{"' Chunk 2: 'query": "Ty' Chunk 3: 'peScri' Chunk 4: 'pt 5.0 5.1 ' Chunk 5: '5.2 5' Chunk 6: '.3' Chunk 8: ' new f' Chunk 9: 'eatur' ...

Avec streaming affiné (délai de 3 s) :

Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3' Chunk 2: ' new features comparison'
Note

Étant donné que le streaming affiné envoie des paramètres sans mise en mémoire tampon ni validation JSON, rien ne garantit que le flux résultant sera complété par une chaîne JSON valide. En particulier, si le motif d’arrêt max_tokens est atteint, le flux peut se terminer à mi-chemin d’un paramètre et peut être incomplet. Vous devrez généralement rédiger un support spécifique pour gérer le moment où le max_tokens est atteint.

Utilisation d’ordinateur (version bêta)

L’utilisation d’ordinateur est une capacité du modèle Anthropic Claude (en version bêta) disponible avec Claude 3.5 Sonnet v2, Claude Sonnet 4.5, Claude Haiku 4.5, Claude 3.7 Sonnet, Claude Sonnet 4 et Claude Opus 4. Grâce à l’utilisation d’ordinateur, Claude peut vous aider à automatiser les tâches à travers des actions de base de l’interface graphique.

Avertissement

La fonctionnalité d’utilisation d’ordinateur est mise à votre disposition sous la forme d’un « service bêta » tel que défini dans les Conditions d’utilisation AWS. Il est soumis à votre accord avec AWS et aux Conditions d’utilisation AWS, ainsi qu’au CLUF du modèle applicable. Sachez que l’API d’utilisation d’un ordinateur présente des risques uniques qui sont distincts des fonctionnalités d’API standard ou des interfaces de chat. Ces risques sont accrus lors de l’utilisation de l’API d’utilisation d’ordinateur pour interagir avec Internet. Pour minimiser les risques, pensez à prendre les précautions suivantes :

  • Exploitez les fonctionnalités d’utilisation d’un ordinateur dans une machine virtuelle ou un conteneur dédié avec des privilèges minimaux afin de prévenir les attaques directes du système ou les accidents.

  • Pour éviter le vol d’informations, évitez de donner à l’API d’utilisation d’ordinateur l’accès à des comptes ou à des données sensibles.

  • Limitez l’accès Internet de l’API d’utilisation d’ordinateur aux domaines requis afin de réduire l’exposition au contenu malveillant.

  • Pour garantir une supervision adéquate, gardez une intervention humaine pour les tâches sensibles (telles que la prise de décisions susceptibles d’avoir des conséquences importantes dans le monde réel) et pour tout ce qui nécessite un consentement affirmatif (comme l’acceptation de cookies, l’exécution de transactions financières ou l’acceptation des conditions de service).

Tout contenu que vous autorisez Claude à afficher ou auquel vous l’autorisez à accéder peut potentiellement entraîner l’annulation d’instructions ou amener Claude à commettre des erreurs ou à effectuer des actions involontaires. Il est essentiel de prendre les précautions appropriées, telles que l’isolement de Claude des surfaces sensibles, notamment pour éviter les risques liés à une injection d’invite. Avant d’activer ou de demander les autorisations nécessaires pour activer les fonctionnalités d’utilisation d’ordinateur dans vos propres produits, informez les utilisateurs finaux de tout risque pertinent et obtenez leur consentement le cas échéant.

L’API d’utilisation d’ordinateur propose plusieurs outils d’utilisation d’ordinateur prédéfinis que vous pouvez utiliser. Vous pouvez ensuite créer une invite avec votre demande, telle que « envoyer un e-mail à Ben avec les notes de ma dernière réunion » et une capture d’écran (si nécessaire). La réponse contient une liste d’actions tool_use au format JSON (par exemple, scroll_down, left_button_press, screenshot). Votre code exécute les actions de l’ordinateur et fournit une capture d’écran à Claude présentant les sorties (sur demande).

Depuis la sortie de Claude 3.5 v2, le paramètre tools a été mis à jour pour accepter les types d’outils polymorphes ; une propriété tool.type a été ajoutée pour les distinguer. Le type est facultatif ; s’il est omis, l’outil est supposé être un outil personnalisé (auparavant le seul type d’outil pris en charge). Pour accéder à l’utilisation d’ordinateur, vous devez utiliser le paramètre anthropic_beta, avec une énumération correspondante, dont la valeur dépend de la version du modèle utilisée. Pour plus d’informations, consultez le tableau suivant.

Seules les requêtes effectuées avec ce paramètre et enum peuvent utiliser les outils d’utilisation d’ordinateur. Cela peut être spécifié comme suit : "anthropic_beta": ["computer-use-2025-01-24"].

Modèle En-tête bêta

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4.5

Claude Haiku 4.5

Claude Sonnet 4

Claude 3.7 Sonnet

computer-use-2025-01-24
Claude 3.5 Sonnet v2 computer-use-2024-10-22

Pour plus d’informations, consultez Utilisation d’ordinateur (version bêta) dans la documentation Anthropic.

Voici un exemple de réponse qui suppose que la demande contenait une capture d’écran de votre bureau avec une icône Firefox.

{ "id": "msg_123", "type": "message", "role": "assistant", "model": "anthropic.claude-3-5-sonnet-20241022-v2:0", "content": [ { "type": "text", "text": "I see the Firefox icon. Let me click on it and then navigate to a weather website." }, { "type": "tool_use", "id": "toolu_123", "name": "computer", "input": { "action": "mouse_move", "coordinate": [ 708, 736 ] } }, { "type": "tool_use", "id": "toolu_234", "name": "computer", "input": { "action": "left_click" } } ], "stop_reason": "tool_use", "stop_sequence": null, "usage": { "input_tokens": 3391, "output_tokens": 132 } }

Outils définis par Anthropic

Anthropic fournit un ensemble d’outils permettant à certains modèles Claude d’utiliser efficacement les ordinateurs. Lorsque vous spécifiez un outil défini par Anthropic, les champs description et tool_schema ne sont ni nécessaires ni autorisés. Les outils définis par Anthropic sont définis par Anthropic, mais vous devez évaluer explicitement les résultats de l’outil et renvoyer les tool_results à Claude. Comme pour tout outil, le modèle n’exécute pas automatiquement l’outil. Chaque outil défini par Anthropic possède des versions optimisées pour des modèles spécifiques Claude 3.5 Sonnet (nouveaux) et Claude 3.7 Sonnet :

Modèle

Outil

Remarques

Claude Claude Opus 4.1

Claude Claude Opus 4

Claude Sonnet 4.5

Claude Haiku 4.5

Claude Sonnet 4

{ "type": "text_editor_20250124", "name": "str_replace_based_edit_tool" }

Mise à jour de l’outil str_replace_editor existant

Claude 3.7 Sonnet

{ "type": "computer_20250124", "name": "computer" }

Inclut de nouvelles actions pour un contrôle plus précis

Claude 3.7 Sonnet

{ "type": "text_editor_20250124", "name": "str_replace_editor" }

Mêmes fonctionnalités que la version 20241022

Claude 3.5 Sonnet v2

{ "type": "bash_20250124", "name": "bash" }

Mêmes fonctionnalités que la version 20241022

Claude 3.5 Sonnet v2

{ "type": "text_editor_20241022", "name": "str_replace_editor" }

Claude 3.5 Sonnet v2

{ "type": "bash_20241022", "name": "bash" }

Claude 3.5 Sonnet v2

{ "type": "computer_20241022", "name": "computer" }

Le champ type identifie l’outil et ses paramètres à des fins de validation, le champ name est le nom de l’outil exposé au modèle.

Si vous souhaitez inviter le modèle à utiliser l’un de ces outils, vous pouvez référencer explicitement l’outil par le champ name. Le champ name doit être unique dans la liste d’outils ; vous ne pouvez pas définir un outil avec le même name qu’un outil défini par Anthropic dans le même appel d’API.

Effacement automatique des appels d’outil (version bêta)

Avertissement

L’effacement automatique des appels d’outil est disponible en tant que « service bêta » tel que défini dans les Conditions d’utilisation AWS.

Claude Sonnet 4.5 prend en charge une nouvelle fonctionnalité bêta qui efface automatiquement les anciens résultats d’utilisation d’outil lorsque vous approchez des limites de jetons, ce qui permet une gestion du contexte plus efficace dans les scénarios d’utilisation d’outils à plusieurs tours. Pour utiliser l’effacement de l’utilisation d’outil, vous devez ajouter context-management-2025-06-27 à la liste des en-têtes bêta sur le paramètre de demande anthropic_beta. Vous devrez également spécifier l’utilisation de clear_tool_uses_20250919 et choisir parmi les options de configuration suivantes.

Voici les contrôles disponibles pour la stratégie de gestion du contexte clear_tool_uses_20250919. Elles sont toutes facultatives ou comportent des valeurs par défaut :

Option de configuration Description

trigger

par défaut : 100 000 jetons d’entrée

Définit le moment où la stratégie d’édition du contexte est activée. Une fois que l’invite dépasse ce seuil, l’effacement commence. Vous pouvez spécifier cette valeur dans input_tokens ou tool_uses.

keep

par défaut : 3 utilisations d’outil

Définit le nombre de paires récentes utilisation d’outil/résultat à conserver après l’effacement. L’API supprime d’abord les interactions d’outil les plus anciennes, en préservant les plus récentes. Utile lorsque le modèle a besoin d’accéder aux interactions d’outil récentes pour poursuivre efficacement la conversation.

clear_at_least (facultatif)

Garantit qu’un nombre minimum de jetons sont effacés chaque fois que la stratégie est activée. Si l’API ne parvient pas à effacer au moins le nombre spécifié, la stratégie ne sera pas appliquée. Cela est utile pour déterminer si l’effacement du contexte vaut la peine de supprimer votre mise en cache des invites.

exclude_tools (facultatif)

Liste des noms d’outil dont les utilisations et les résultats ne doivent jamais être effacés. Utile pour préserver un contexte important.

clear_tool_inputs (facultatif, par défaut : False)

Contrôle si les paramètres d’appel d’outil sont effacés ainsi que les résultats de l’outil. Par défaut, seuls les résultats de l’outil sont effacés tout en gardant visibles les appels d’outil d’origine de Claude, afin que Claude puisse voir quelles opérations ont été effectuées même après la suppression des résultats.

Note

L’effacement d’outil invalidera votre cache si vos préfixes contiennent vos outils.

Request
response = client.beta.messages.create( betas=["context-management-2025-06-27"], model="claude-sonnet-4-20250514", max_tokens=4096, messages=[ { "role": "user", "content": "Create a simple command line calculator app using Python" } ], tools=[ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool", "max_characters": 10000 }, { "type": "web_search_20250305", "name": "web_search", "max_uses": 3 } ], extra_body={ "context_management": { "edits": [ { "type": "clear_tool_uses_20250919", # The below parameters are OPTIONAL: # Trigger clearing when threshold is exceeded "trigger": { "type": "input_tokens", "value": 30000 }, # Number of tool uses to keep after clearing "keep": { "type": "tool_uses", "value": 3 }, # Optional: Clear at least this many tokens "clear_at_least": { "type": "input_tokens", "value": 5000 }, # Exclude these tools uses from being cleared "exclude_tools": ["web_search"] } ] } } )
Response
{ "id": "msg_123", "type": "message", "role": "assistant", "content": [ { "type": "tool_use", "id": "toolu_456", "name": "data_analyzer", "input": { "data": "sample data" } } ], "stop_reason": "tool_use", "usage": { "input_tokens": 150, "output_tokens": 50 } }
Streaming Response
data: {"type": "message_start", "message": {"id": "msg_123", "type": "message", "role": "assistant"}} data: {"type": "content_block_start", "index": 0, "content_block": {"type": "tool_use", "id": "toolu_456", "name": "data_analyzer", "input": {}}} data: {"type": "content_block_delta", "index": 0, "delta": {"type": "input_json_delta", "partial_json": "{\"data\": \"sample"}} data: {"type": "content_block_delta", "index": 0, "delta": {"type": "input_json_delta", "partial_json": " data\"}"}} data: {"type": "content_block_stop", "index": 0} data: {"type": "message_delta", "delta": {"stop_reason": "tool_use"}} data: {"type": "message_stop"} { "type": "message_delta", "delta": { "stop_reason": "end_turn", "stop_sequence": null, }, "usage": { "output_tokens": 1024 }, "context_management": { "applied_edits": [...], } }

Lorsque vous utilisez Claude Sonnet 4.5 avec l’effacement automatique d’appel d’outil, la réponse inclut des informations supplémentaires de gestion du contexte :

{ "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF", "type": "message", "role": "assistant", "content": [...], ... "usage": {...}, "context_management": { "applied_edits": [ { "type": "clear_tool_uses_20250919", "cleared_tool_uses": 8, # Number of tool use/result pairs that were cleared "cleared_input_tokens": 50000 # Total number of input tokens removed from the prompt } ] } }
Note

Bedrock ne prend actuellement pas en charge la gestion du contexte clear_tool_uses_20250919 sur l’API CountTokens.

Outil de mémoire (version bêta)

Avertissement

L’outil de mémoire est disponible en tant que « service bêta » tel que défini dans les Conditions d’utilisation AWS.

Claude Sonnet 4.5 inclut un nouvel outil de mémoire qui permet aux clients de gérer la mémoire d’une conversation à l’autre. Grâce à cette fonctionnalité, les clients peuvent autoriser Claude à récupérer des informations en dehors de la fenêtre contextuelle en donnant accès à un répertoire local. Cela sera disponible en tant que fonctionnalité bêta. Pour utiliser cette fonctionnalité, vous devez utiliser l’en-tête bêta context-management-2025-06-27.

Définition d’outil :

{ "type": "memory_20250818", "name": "memory" }

Exemple de demande :

{ "max_tokens": 2048, "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["context-management-2025-06-27"], "tools": [{ "type": "memory_20250818", "name": "memory" }], "messages": [ { "role": "user", "content": [{"type": "text", "text": "Remember that my favorite color is blue and I work at Amazon?"}] } ] }

Exemple de réponse :

{ "id": "msg_vrtx_014mQ5ficCRB6PEa5k5sKqHd", "type": "message", "role": "assistant", "model": "claude-sonnet-4-20250514", "content": [ { "type": "text", "text": "I'll start by checking your memory directory and then record this important information about you." }, { "type": "tool_use", "id": "toolu_vrtx_01EU1UrCDigyPMRntr3VYvUB", "name": "memory", "input": { "command": "view", "path": "/memories" } } ], "stop_reason": "tool_use", "stop_sequence": null, "usage": { "input_tokens": 1403, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0, "output_tokens": 87 }, "context_management": { "applied_edits": [] } }

Considérations relatives aux coûts liés à l’utilisation d’outil

Les demandes d’utilisation d’outil sont facturées en fonction des facteurs suivants :

  1. Nombre total de jetons d’entrée envoyés au modèle (y compris dans le paramètre des outils).

  2. Le nombre de jetons de sortie générés.

Le prix des outils est le même que celui de toutes les autres requêtes API Claude, mais ils incluent des jetons supplémentaires par demande. Les jetons supplémentaires liés à l’utilisation de l’outil proviennent des éléments suivants :

  • Le paramètre tools dans les requêtes API. Par exemple, les noms, les descriptions et les schémas des outils.

  • Tous les blocs de contenu tool_use dans les requêtes et réponses API.

  • Tous les blocs de contenu tool_result dans les requêtes API.

Lorsque vous utilisez des outils, les modèles Anthropic incluent automatiquement une invite système spéciale qui permet de les utiliser. Le nombre de jetons d’utilisation d’outils requis pour chaque modèle est indiqué dans le tableau suivant. Ce tableau exclut les jetons supplémentaires décrits précédemment. Notez que ce tableau suppose qu’au moins un outil est fourni. Si aucun outil n’est fourni, le choix d’aucun outil n’utilise aucun jeton d’invite système supplémentaire.

Modèle Choix d’outil Nombre de jetons d’invite système d’utilisation d’outil

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4.5

Claude Haiku 4.5

Claude Sonnet 4

Claude 3.7 Sonnet

Claude 3.5 Sonnet v2

auto ou none 346

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4.5

Claude Haiku 4.5

Claude Sonnet 4

Claude 3.7 Sonnet

Claude 3.5 Sonnet v2

any ou tool 313

Claude 3.5 Sonnet

auto ou none 294

Claude 3.5 Sonnet

any ou tool 261

Claude 3 Opus

auto ou none 530

Claude 3 Opus

any ou tool 281

Claude 3 Sonnet

auto ou none 159

Claude 3 Sonnet

any ou tool 235

Claude 3 Haiku

auto ou none 264

Claude 3 Haiku

any ou tool 340