View a markdown version of this page

Tools (Strumenti) - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tools (Strumenti)

Gli strumenti sono dichiarativi. Elenchi ciò che l'agente può chiamare; AgentCore gestisce la chiamata, le credenziali e i risultati. L'harness supporta cinque tipi di strumenti, oltre agli strumenti integrati per il filesystem e la shell.

  • Server MCP: connettiti a qualsiasi endpoint remoto del Model Context Protocol tramite URL. Non è richiesto alcun gateway per casi semplici.

  • AgentCore Gateway: connettività gestita alle API e ai server MCP con inbound/outbound autenticazione, controllo degli accessi e applicazione delle policy. Politica in Amazon Bedrock AgentCore: controllo delle interazioni con gli agenti Fai riferimento a un ARN del gateway e tutti gli strumenti configurati su quel gateway diventano disponibili. Usa Gateway quando hai bisogno di un'area strumenti gestita e supportata da policy.

  • AgentCore Browser: navigazione web e automazione gestite.

  • AgentCore Code Interpreter: esecuzione di Python/JavaScript/TypeScript codice in modalità sandbox per l'analisi e il calcolo dei dati.

  • Funzioni in linea: schemi di strumenti eseguiti sul lato client, non sulla macchina virtuale harness. L'harness si interrompe quando viene chiamato lo strumento e restituisce la chiamata al codice, che decide cosa fare e restituisce un risultato. Questo è lo schema per le approvazioni «human-in-the-loop» e le integrazioni personalizzate.

Strumenti predefiniti shell e file_operations disponibili in ogni sessione a meno che non vengano limitati con. allowedTools shellesegue i comandi bash; file_operations supporta la visualizzazione, la creazione e la modifica di file.

Il allowedTools parametro controlla gli strumenti che l'agente può utilizzare. Se omesso, sono consentiti tutti gli strumenti.

Costo aggiuntivo dei token derivante dalle definizioni degli strumenti

Le definizioni degli strumenti vengono conteggiate ai fini dei token di input del modello anche quando l'agente non chiama gli strumenti. Insieme, l'impostazione predefinita shell e file_operations le definizioni aggiungono circa 900 token di input a ciascuna richiesta del modello. Il numero esatto varia in base al modello e può cambiare man mano che le definizioni degli strumenti si evolvono. Poiché una chiamata può effettuare più richieste di modello, questo sovraccarico può verificarsi più di una volta per chiamata. allowedToolsDa utilizzare per esporre solo gli strumenti necessari per una richiesta e ridurre l'utilizzo dei token.

Modelli supportati:

Pattern Esempio Corrispondenze

*

"*"

Tutti gli strumenti

Nome semplice

"shell"

Costruito per nome

Globo incorporato

"file_*"

file_operations, file_read

@builtin

"@builtin"

Tutti gli strumenti integrati

@builtin/name

"@builtin/shell"

Integrato specifico

@server

"@git"

Tutti gli strumenti di un server MCP

@server/tool

"@git/git_status"

Strumento MCP specifico

@server/glob

"@git/read_*"

Glob all'interno di un server

@*/tool

"@*-mcp/status"

Glob tra i server

Nota

allowedToolsambisce alla selezione degli strumenti LLM solo durante. InvokeHarness Non influisce InvokeAgentRuntimeCommand, poiché è un'API separata con una propria action IAM (bedrock-agentcore:InvokeAgentRuntimeCommand) che esegue i comandi direttamente senza passare attraverso l'LLM. Per impedire l'esecuzione diretta dei comandi, non bedrock-agentcore:InvokeAgentRuntimeCommand autorizzate le vostre policy IAM.

Aggiungi strumenti

Esempio
AWS CLI/boto3

Passa tools al momento della creazione, dell'aggiornamento o dell'invocazione:

tools = [ # MCP server { "type": "remote_mcp", "name": "exa", "config": {"remoteMcp": {"url": "https://mcp.exa.ai/mcp"}}, }, # MCP server with authentication headers (plain text) { "type": "remote_mcp", "name": "my-private-mcp", "config": {"remoteMcp": { "url": "https://mcp.example.com/api", "headers": {"Authorization": "Bearer <your-token>"} }}, }, # MCP server with API key stored in AgentCore Identity Token Vault. # Use ${arn:...} to reference a credential provider - the ARN is resolved # to the actual API key at invocation time. { "type": "remote_mcp", "name": "exa-secure", "config": {"remoteMcp": { "url": "https://mcp.exa.ai/mcp", "headers": {"x-api-key": "${arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-exa-key}"} }}, }, # For managed credential rotation and OAuth-protected tools, put your MCP server # behind AgentCore Gateway and use AgentCore Identity instead of raw headers. # # AgentCore Gateway with SigV4 auth (default) { "type": "agentcore_gateway", "name": "my-gateway", "config": {"agentCoreGateway": {"gatewayArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway"}}, }, # AgentCore Gateway with OAuth auth { "type": "agentcore_gateway", "name": "my-oauth-gateway", "config": {"agentCoreGateway": { "gatewayArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-oauth-gateway", "outboundAuth": {"oauth": { "credentialProviderName": "my-oauth-provider", "scopes": ["read", "write"] }} }}, }, # AgentCore Browser {"type": "agentcore_browser", "name": "browser"}, # AgentCore Code Interpreter {"type": "agentcore_code_interpreter", "name": "code_interpreter"}, # Inline function - executes on the client side, not on the harness VM. # When the agent calls this tool, the call is returned to your code for handling. { "type": "inline_function", "name": "approve_purchase", "config": { "inlineFunction": { "description": "Request human approval for a purchase.", "inputSchema": { "type": "object", "properties": { "item": {"type": "string"}, "amount": {"type": "number"}, }, "required": ["item", "amount"], }, } }, }, ] response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, tools=tools, messages=[{"role": "user", "content": [{"text": "Find a mechanical keyboard under $200 and request approval."}]}], )
AgentCore CLI

Quando si crea una nuova imbracatura in modo interattivo, la agentcore add harness procedura guidata consente di selezionare gli strumenti. Per aggiungere strumenti tramite la CLI, usa agentcore add tool dopo aver creato l'imbracatura:

Nota

Il --type flag utilizza nomi separati da trattini bassi (ad esempio,agentcore_browser), che corrispondono agli identificatori del tipo di strumento in. harness.json

# Add a remote MCP server agentcore add tool --harness my-agent --type remote_mcp \ --name exa --url https://mcp.exa.ai/mcp # Create a harness with a remote MCP server and request headers. # Use ${arn:...} syntax to reference a credential provider. agentcore add harness \ --name secure_agent \ --model-provider bedrock \ --model-id us.anthropic.claude-sonnet-4-5-20250514-v1:0 \ --tools remote_mcp \ --mcp-name exa-secure \ --mcp-url https://mcp.exa.ai/mcp \ --mcp-headers '{"x-api-key":"${arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-exa-key}"}' # Add Browser agentcore add tool --harness my-agent --type agentcore_browser --name browser # Add Code Interpreter agentcore add tool --harness my-agent --type agentcore_code_interpreter --name code-interpreter # Add Gateway by ARN agentcore add tool --harness my-agent --type agentcore_gateway \ --name my-gateway --gateway-arn arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway # Add Gateway by project-local name agentcore add tool --harness my-agent --type agentcore_gateway \ --name my-gateway --gateway my-gateway # Add an inline function tool (executes client-side, not on the harness VM) agentcore add tool --harness my-agent --type inline_function \ --name approve_purchase \ --description "Request human approval for a purchase" \ --input-schema '{"type": "object", "properties": {"item": {"type": "string"}, "amount": {"type": "number"}}, "required": ["item", "amount"]}'

Distribuisci per applicare.

Sostituisci gli strumenti con una singola chiamata:

agentcore invoke --harness research-agent --tools agentcore_browser "Find the latest news on AI agents"
Interactive

Esegui agentcore in una directory del progetto, seleziona aggiungi, scegli Harness e passa a Impostazioni avanzate. Abilita Strumenti con spazio, quindi premi Invio.

  1. Seleziona gli strumenti per il tuo cablaggio: AgentCore Browser, AgentCore Code Interpreter , AgentCore Gateway o Remote MCP Server. Usa la barra spaziatrice per attivarli, quindi premi Invio.

    Seleziona gli strumenti: Browser, Code Interpreter, Gateway, Remote MCP Server
  2. Per un server MCP remoto, la procedura guidata richiede il nome del server, l'URL e le intestazioni di richiesta opzionali.

    Immettere l'URL del server MCP
  3. Per un AgentCore gateway, inserisci l'ARN del gateway e scegli la sua autenticazione in uscita: AWS IAM (impostazione predefinita), None o OAuth.

    Seleziona l'autenticazione in uscita del gateway
  4. Rivedi il riepilogo della configurazione e conferma.

    Rivedi la configurazione dello strumento Harness

Quindi corri agentcore deploy per candidarti.

Per consentire al tuo agente di effettuare una ricerca sul Web, posiziona il connettore del Web Search Tool dietro un AgentCore gateway e collega quel gateway all'imbracatura come agentcore_gateway strumento. Il gateway espone la ricerca sul Web come strumento WebSearch MCP standard. Il tuo agente lo scopre e lo chiama come qualsiasi altro strumento di gateway. AgentCore Gateway risponde a tutte le domande interamente all'interno. AWS Per ulteriori informazioni sul modello di privacy e sull'indice web creato appositamente, consulta la pagina del connettore Web Search Tool.

Disponibilità nelle regioni

Web Search Tool è disponibile nella regione Stati Uniti orientali (Virginia settentrionale). us-east-1 Crea il gateway e accedi. us-east-1

Completa i passaggi seguenti per configurare la ricerca sul Web per la tua imbracatura.

  1. Crea il gateway e la destinazione del connettore. Segui i passaggi in Configurazione dello strumento di ricerca Web per creare un gateway (protocollo MCP, autenticazione AWS_IAM in entrata) e aggiungere un obiettivo con. connectorId: "web-search" Tale destinazione necessita di un ruolo di servizio Gateway all'interno del connettorebedrock-agentcore:InvokeWebSearch. Per ulteriori informazioni, consulta Configurare il ruolo del servizio Gateway. Annota l'ARN del gateway una volta raggiuntoREADY.

  2. Concedi l'accesso al ruolo di Harness Execution. Il ruolo di esecuzione del cablaggio (distinto dal ruolo del servizio Gateway nel passaggio precedente) è necessario bedrock-agentcore:InvokeGateway sull'ARN del gateway. Per ulteriori informazioni sulle autorizzazioni richieste, consulta la politica delle autorizzazioni opzionali di AgentCore Gateway nell'argomento sulla sicurezza. Se il cablaggio utilizza la memoria gestita (impostazione predefinita), il ruolo di esecuzione richiede anche le autorizzazioni di memoria. AgentCore L'agente legge e scrive la memoria di sessione su ogni chiamata.

  3. Collegate il gateway all'imbracatura. Aggiungilo come agentcore_gateway strumento con l'autenticazione AWS_IAM in uscita predefinita. Gli esempi seguenti mostrano come collegare il gateway in fase di creazione.

Esempio
AWS CLI/boto3

Collega il gateway al momento della creazione (o tools trasmettiupdate_harness/invoke_harness):

tools = [ { "type": "agentcore_gateway", "name": "web-search", "config": {"agentCoreGateway": { "gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-web-search-gateway", "outboundAuth": {"awsIam": {}} }}, }, ] client.create_harness( harnessName="research-agent", executionRoleArn="arn:aws:iam::123456789012:role/MyHarnessRole", tools=tools, )

Gli strumenti del gateway sono ora disponibili per l'agente. Richiama il cablaggio con un prompt che richiede informazioni aggiornate:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[{"role": "user", "content": [{"text": "Search the web for the latest AWS announcements and cite your sources."}]}], )
AgentCore CLI
# Attach the web-search gateway to your harness agentcore add tool --harness research-agent --type agentcore_gateway \ --name web-search \ --gateway-arn arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-web-search-gateway # Deploy, then invoke agentcore deploy agentcore invoke --harness research-agent "Search the web for the latest AWS announcements and cite your sources."

Chiamate di funzioni in linea

Le funzioni in linea consentono di definire uno strumento che viene eseguito nel codice, non sull'harness. Ciò è utile per le approvazioni effettuate dall'utente, per le chiamate alle API interne o per qualsiasi logica che desideri controllare sul lato client.

Esempio
AWS CLI/boto3

Passa uno strumento funzionale in linea al momento della chiamata:

# 1. Invoke with an inline function tool response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, tools=[{ "type": "inline_function", "name": "get_weather", "config": {"inlineFunction": { "description": "Get the current weather for a city.", "inputSchema": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"] } }} }], messages=[{"role": "user", "content": [{"text": "What's the weather in Seattle?"}]}], ) # 2. The agent calls the tool - capture the toolUseId and input from the stream tool_use_id = None tool_name = None tool_input = None for event in response["stream"]: if "contentBlockStart" in event: start = event["contentBlockStart"].get("start", {}) if "toolUse" in start and start["toolUse"].get("name") == "get_weather": tool_use_id = start["toolUse"]["toolUseId"] tool_name = start["toolUse"]["name"] if "contentBlockDelta" in event: delta = event["contentBlockDelta"].get("delta", {}) if "toolUse" in delta: tool_input = (tool_input or "") + delta["toolUse"].get("input", "") # 3. Execute the tool yourself and send the result back # Include the assistant's toolUse message followed by your toolResult client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[ { "role": "assistant", "content": [{"toolUse": {"toolUseId": tool_use_id, "name": tool_name, "input": json.loads(tool_input)}}], }, { "role": "user", "content": [{ "toolResult": { "toolUseId": tool_use_id, "content": [{"text": "72°F, partly cloudy"}], "status": "success", } }], }, ], )
Nota

Devi includere sia il toolUse messaggio dell'assistente che il tuo toolResult nel passaggio 3. L'imbracatura non fa persistere intenzionalmente la funzione inline turn to the session: se il client non restituisce mai un risultato, la persistenza di un turno parziale (assistente toolUse senza corrispondenzatoolResult) lascerebbe la sessione danneggiata. Richiedendo al client di inviare entrambi i messaggi, la sessione rimane pulita indipendentemente dal fatto che il client completi la chiamata allo strumento.

L'agente riprende a ragionare con il risultato dello strumento e trasmette in streaming la risposta finale.

AgentCore CLI

Aggiungi uno strumento funzionale in linea a un'imbracatura:

agentcore add tool --harness my-agent --type inline_function \ --name get_weather

Quindi definisci la descrizione e lo schema di input in: app/my-agent/harness.json

{ "type": "inline_function", "name": "get_weather", "config": { "inlineFunction": { "description": "Get the current weather for a city.", "inputSchema": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } } }

Esegui agentcore deploy per candidarti. Quando l'agente chiama la funzione in linea durante una chiamata, la TUI si interrompe e richiede di fornire il risultato dello strumento in linea. In modalità non interattiva (CLI), lo stream ritorna con stopReason: "tool_use" e si invia il risultato con una chiamata di richiamo successiva.

Scopri di più su ogni strumento: