View a markdown version of this page

Server-side utilisation de l'outil - Amazon Bedrock

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.

Server-side utilisation de l'outil

Si vous utilisez l'API Responses pour appeler le modèle, celui-ci peut utiliser l'appel d'outil côté serveur, en plus de l'appel d'outil côté client dont nous avons parlé précédemment. Server-side l'appel d'outils est un mécanisme par lequel les outils (API, fonctions, flux de travail) sont exécutés dans un environnement principal fiable, et non sur le client. Cela améliore la sécurité, la fiabilité et la posture de gouvernance de l'application. Avant qu'Amazon Bedrock n'exécute la fonction Lambda qui implémente l'utilisation de l'outil, il s'assure que la fonction Lambda possède la même politique IAM que celle de l'application qui l'appelle. Dans la mesure où Amazon Bedrock pilote l'exécution des outils, les clients peuvent se concentrer sur la mise en œuvre de leur logique métier, plutôt que sur l'ajout de fonctionnalités aux outils. Amazon Bedrock prend également en charge les normes de gouvernance les plus strictes, telles que les normes ISO, SOC et HIPAA éligibles. Les clients peuvent soit soumettre leur propre fonction Lambda personnalisée pour exécuter l'outil, soit utiliser des outils prédéfinis existants, tels que des notes et des tâches. Server-side des outils utilisant l'API Responses sont disponibles, à commencer par les modèles GPT OSS d'OpenAI, et d'autres 20B/120B modèles seront bientôt pris en charge. Vous pouvez utiliser l'API Models pour découvrir les modèles disponibles que vous pouvez utiliser avec l'API Responses. Pour plus de détails sur l'API Responses, voir Générer des réponses à l'aide des API OpenAI.

Il existe deux types d'outils que vous pouvez utiliser avec Amazon Bedrock : des outils personnalisés utilisant Lambda ou des outils prédéfinis pris en charge par Bedrock. Dans cette section, nous verrons comment créer un outil Lambda personnalisé avec l'API Responses. Discutons des deux en détail.

Outils personnalisés utilisant Lambda dans l'API Responses

En utilisant une fonction Lambda comme outil personnalisé dans Bedrock, vous pouvez étendre les capacités de l'agent en intégrant des fonctions AWS Lambda personnalisées en tant qu'outils. Cela vous permet de créer des outils évolutifs sans serveur qui peuvent être appelés par des assistants d'intelligence artificielle et d'autres applications via le protocole MCP (Model Context Protocol). Voici les avantages de cette fonctionnalité :

  • Étendre les fonctionnalités : ajoutez une logique métier personnalisée, des intégrations d'API ou des fonctionnalités de traitement des données.

  • Exécutez les outils en toute sécurité : Lambda permet aux outils d'accéder aux ressources d'un VPC sans avoir à accorder un accès complet au VPC.

  • Architecture sans serveur : aucune gestion d'infrastructure, Lambda gère le dimensionnement automatiquement.

  • Rentable : payez uniquement pour le temps d'exécution, pas pour les ressources inutilisées.

  • Intégration facile : les fonctions Lambda apparaissent parfaitement aux côtés des outils intégrés.

Pour autoriser un modèle dans Amazon Bedrock à utiliser un outil pour répondre à un message, vous devez envoyer le message et les définitions d'un ou de plusieurs outils au modèle. En fonction de l'invite de votre application, si le modèle détermine que l'un des outils peut aider à générer une réponse, il renvoie une demande pour que Bedrock utilise l'outil et renvoie les résultats de l'outil au modèle. Le modèle utilise ensuite le résultat de l’outil pour générer une réponse pour le message d’origine.

Les étapes suivantes montrent comment utiliser un outil avec l'API Responses.

Fonctionnement

  1. Fonction Lambda : créez votre fonction Lambda qui implémente le protocole MCP

  2. Découverte d'outils : Bedrock appelle votre fonction Lambda pour découvrir les outils disponibles

  3. Enregistrement des outils : Vos outils sont enregistrés auprès de Bedrock

  4. Exécution de l'outil : lorsque l'agent demande votre outil, Bedrock invoque votre fonction Lambda

  5. Gestion des réponses : les résultats sont renvoyés à l'agent via l'interface standard

Étape 1 : Définissez la fonction Lambda pour obtenir la chanson la plus populaire

Créez une fonction Lambda qui implémente le protocole MCP. Voici un exemple simple en Python :

import json def lambda_handler(event, context): # Parse JSON-RPC request method = event.get('method') params = event.get('params', {}) request_id = event.get('id') if method == 'tools/list': return { "jsonrpc": "2.0", "id": request_id, "result": { "tools": [ { "name": "my_custom_tool", "description": "My custom business logic tool", "inputSchema": { "type": "object", "properties": { "input": { "type": "string", "description": "Input text to process" } }, "required": ["input"] } } ] } } elif method == 'tools/call': tool_name = params.get('name') arguments = params.get('arguments', {}) if tool_name == 'my_custom_tool': # Your custom logic here result = f"Processed: {arguments.get('input', '')}" return { "jsonrpc": "2.0", "id": request_id, "result": { "content": [ { "type": "text", "text": result } ] } } # Error response for unsupported methods return { "jsonrpc": "2.0", "id": request_id, "error": { "code": -32601, "message": "Method not found" } }

Étape 2 : Déploiement de la fonction Lambda

Utilisez ensuite votre rôle IAM pour déployer cette fonction Lambda afin d'obtenir un ARN. Pour en savoir plus sur le déploiement d'une fonction Lambda, cliquez ici.

# Example using AWS CLI aws lambda create-function \ --function-name my-custom-tool \ --runtime python3.14 \ --role arn:aws:iam::YOUR-ACCOUNT:role/lambda-execution-role \ --handler lambda_function.lambda_handler \ --zip-file fileb://function.zip

Supposons que votre ARN soit : arn:aws:lambda:us-west-2:123456789012:function:my-custom-tool

Étape 3 : Définissez le message et la définition de l'outil dans votre demande d'inférence

Pour envoyer le message et la définition de l'outil, vous utilisez les opérations de l'API Responses. Amazon Bedrock utilise les connecteurs et les fonctionnalités des serveurs MCP distants de l'API Responses pour fournir des fonctionnalités d'utilisation d'outils. La définition de l'outil est un schéma JSON que vous transmettez le paramètre de requête mcp à l'opération Create. Dans le connector_id champ de l'API des connecteurs Responses, vous pouvez transmettre l'ARN Lambda que vous avez créé à l'étape précédente. Vous n'avez pas besoin de fournir d'informations d'identification d'autorisation puisque Bedrock utilise les mêmes rôles et politiques IAM que ceux utilisés pour votre application qui invoque le modèle. L’exemple de schéma suivant concerne un outil qui permet d’obtenir les chansons les plus populaires d’une station de radio.

from openai import OpenAI client = OpenAI() resp = client.responses.create( model="oss-gpt-120b", tools=[ { "type": "mcp", "server_label": "xamzn_arn", "connector_id": "arn:aws:lambda:us-west-2:123456789012:function:my-custom-tool", "require_approval": "never", }, ], input="My custom prompt.", ) print(resp.output_text)

Étape 4 : Bedrock appelle l'outil et renvoie la réponse au modèle

La possibilité d'utiliser l'outil de connecteur est disponible dans les modèles qui prennent en charge l'API Responses. Vérifiez ici quels outils sont compatibles avec votre modèle. Lorsque vous utilisez des outils utilisant l'API Responses, vous ne payez que pour les jetons utilisés lors de l'importation de définitions d'outils ou lors des appels d'outils. Il n'y a pas de frais supplémentaires par appel d'outil.

Lorsque vous spécifiez une fonction Lambda dans le tools paramètre, l'API tente d'obtenir une liste d'outils auprès du serveur. Si vous parvenez à récupérer la liste des outils, un nouvel élément mcp_list_tools de sortie apparaîtra dans la sortie de réponse du modèle. La tools propriété de cet objet affichera les outils importés avec succès. Une fois que le modèle a accès à ces définitions d'outils, il peut choisir de les appeler en fonction du contexte du modèle. Lorsque le modèle décide d'appeler un outil Lambda, l'API demande à la fonction Lambda d'appeler l'outil et de placer sa sortie dans le contexte du modèle. Vous pouvez en savoir plus sur les outils de liste et les outils d'appel dans la documentation OpenAI. Notez que votre fonction Lambda doit être associée aux mêmes rôles et politiques IAM que ceux de l'application qui appelle le modèle dans Bedrock, sinon la fonction Lambda échouera. Voici la définition de l'erreur.

{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "Tool execution failed", "data": "Additional error details" } }

Utilisation des outils fournis par AWS dans l'API Responses

Deux outils fournis par AWS sont intégrés aux openai.gpt-oss-120b modèles openai.gpt-oss-20b et : la Note-taking fonctionnalité (outil de notes) et la gestion des tâches (outil de tâches). Ces outils sont automatiquement disponibles ; il n'est pas nécessaire de les définir dans le tools paramètre.

Présentation de l'outil Notes

L'notesoutil permet au modèle de stocker des notes au cours d'une même session de conversation. Cela fournit un mécanisme de mémoire simple pour maintenir le contexte lors de multiples interactions. La mémoire est limitée à la conversation en cours uniquement.

Lorsque le modèle utilise l'outil de notes, il émet une mcp_call sortie name définie sur. "notes" Le modèle détermine les arguments appropriés en fonction de votre demande.

Vous pouvez utiliser l'un ou l'autre langage naturel (par exemple « Souviens-toi que ma couleur préférée est le bleu », « Que t'ai-je dit à propos de ma couleur préférée ? » , « Mémorisez le fait que je préfère les réunions matinales », « Souvenez-vous de ce que j'ai dit à propos des préférences en matière de réunions ») ou vous pouvez utiliser des appels directs aux outils dans votre invite (« Utilisez l'outil de notes pour enregistrer mon e-mail sous le nom john@example.com », « Vérifiez les notes de mon adresse e-mail »).

Présentation de l'outil Tâches

L'tasksoutil fournit une pile pour gérer les tâches au sein d'une session de conversation. Vous pouvez placer des tâches sur la pile et les retirer, ce qui est utile pour gérer les flux de travail, les rappels ou la gestion hiérarchique des tâches. Les tâches persistent tout au long de la session de conversation. La mémoire est limitée à la conversation en cours uniquement.

Lorsque le modèle utilise l'outil Tâches, il émet une mcp_call sortie name définie sur. "tasks" Le modèle détermine les arguments appropriés (tels que methodtask.title, ettask.description) en fonction de votre demande.

Vous pouvez appeler l'outil Tâches en utilisant un langage naturel (par exemple, « Ajouter une tâche pour revoir le budget », « Envoyer un rappel pour appeler le client », « Quelle est la prochaine tâche que je dois effectuer ? » , « Afficher la tâche la plus récente », « Obtenir la dernière tâche de ma pile ») ou vous pouvez appeler l'outil directement lorsque vous le souhaitez (« Utiliser l'outil des tâches pour appuyer sur « Terminer la présentation » », « Extraire une tâche de la pile », « Ajouter « planifier une réunion » à ma liste de tâches »).

Exemple de code : utilisation des outils de notes et de tâches

Les outils de notes et de tâches sont intégrés aux openai.gpt-oss-120b modèles openai.gpt-oss-20b et. Il n'est pas nécessaire de les définir explicitement dans le tools paramètre, il suffit de les référencer dans votre invite :

from openai import OpenAI client = OpenAI( base_url="https://bedrock-mantle.us-east-1.api.aws/v1" ) # The notes tool is built-in — just ask the model to use it resp = client.responses.create( model="openai.gpt-oss-120b", input="Use the notes tool to store that my preferred language is Python.", ) print(resp.output) # The model automatically calls the notes tool via mcp_call # Use the tasks tool to push a task resp = client.responses.create( model="openai.gpt-oss-120b", input="Use the tasks tool to push a task: review the API documentation", ) print(resp.output)

Server-side intégration de l'utilisation des outils avec Gateway AgentCore

Amazon Bedrock prend désormais en charge AgentCore Gateway en tant qu'outil côté serveur appelant un type d'intégration. Cette fonctionnalité vous permet de connecter vos modèles directement aux points de terminaison de AgentCore Gateway, permettant ainsi un accès fluide aux outils gérés via l'infrastructure de passerelle.

L'intégration AgentCore Gateway suit le même schéma que l'intégration de la fonction Lambda, avec une différence essentielle.

Intégration Lambda :

  • Utilise les ARN de la fonction Lambda

  • Invoque directement les fonctions AWS Lambda

AgentCore Intégration de la passerelle :

  • Utilise les AgentCore ARN de passerelle

  • Achemine les appels d'outils via l'infrastructure AgentCore Gateway

  • Permet une gestion et une découverte centralisées des outils

Configuration

Structure de la demande

Lorsque vous configurez AgentCore Gateway en tant que source d'outil, utilisez la structure suivante dans votre tools tableau dans votre demande d'API Responses.

{ "type":"mcp", "server_label":"agentcore_tools", "connector_id":"arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp", "server_description":"AgentCore Gateway providing custom tools", "require_approval":"never" }

Paramètres

Paramètre Type Obligatoire Description
type chaîne Oui Doit être réglé sur mcp
server_label chaîne Oui Un identifiant unique pour ce connecteur d'outils dans votre demande
connector_id chaîne Oui L'ARN de votre AgentCore passerelle
server_description chaîne Non Human-readable description des outils fournis par cette passerelle
require_approval chaîne Oui Le champ doit être "never"

Exemple de demande complète

{ "model":"openai.gpt-oss-120b", "stream":true, "background":false, "store":false, "tools": [ { "type":"mcp", "server_label":"agentcore_tools", "connector_id":"arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp", "server_description":"AgentCore Gateway providing custom tools", "require_approval":"never" } ], "input": [ { "type":"message", "role":"user", "content": [ { "type":"input_text", "text":"What is the weather in Seattle?" } ] } ] }

Conditions préalables

Avant d'utiliser l'intégration de AgentCore Gateway, assurez-vous de disposer des éléments suivants :

  1. Création d'une AgentCore passerelle avec des cibles configurées (fonctions Lambda, stages API Gateway, schémas OpenAPI ou serveurs MCP)

  2. Autorisations IAM configurées permettant à votre rôle de service Bedrock d'appeler la passerelle. Notez que Bedrock ne prend en charge que les passerelles avec authentification IAM.

  3. Gateway ARN dans le bon format

Avantages de l'intégration de AgentCore la passerelle

  • Gestion centralisée des outils : gérez tous vos outils via un point de terminaison unique

  • Découverte d'outils : les agents peuvent découvrir dynamiquement les outils disponibles via la passerelle

  • Sécurité : Built-in authentification et autorisation via les politiques IAM et de passerelle

  • Observabilité : surveillance complète et journalisation des appels d'outils

  • Flexibilité : Support pour plusieurs types de cibles (Lambda, API Gateway, OpenAPI, serveurs MCP)

Autorisations IAM

Votre rôle d'exécution de Bedrock doit être autorisé pour invoquer la AgentCore passerelle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": "arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp" } ] }

Étapes suivantes