View a markdown version of this page

Tools (Strumenti) - Amazon Bedrock AgentCore

Tools (Strumenti)

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

Gli strumenti shell predefiniti file_operations sono disponibili in ogni sessione, a meno che non vengano limitati. allowedTools shellesegue 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, tutti gli strumenti sono consentiti.

Schemi supportati:

Pattern Esempio Corrispondenze

*

"*"

Tutti gli strumenti

Nome semplice

"shell"

Integrato 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

allowedToolsanalizza la selezione degli strumenti LLM solo durante. InvokeHarness Non ha effetto InvokeAgentRuntimeCommand, che è un'API separata con una propria azione IAM (bedrock-agentcore:InvokeAgentRuntimeCommand) che esegue i comandi direttamente senza passare attraverso il 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 della chiamata:

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 un nuovo cablaggio 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 il cablaggio:

Nota

Il --type flag utilizza nomi separati da sottolineatura (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 # Add a remote MCP server with an API key from AgentCore Identity Token Vault. # Use ${arn:...} syntax in header values to reference a credential provider. agentcore add tool --harness my-agent --type remote_mcp \ --name exa-secure --url https://mcp.exa.ai/mcp \ --header '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 in una singola chiamata:

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

Esegui agentcore in una directory di progetto, seleziona Aggiungi, scegli Harness e passa alle Impostazioni avanzate. Abilita Tools with Space, quindi premi Invio.

  1. Selezionate gli strumenti adatti al vostro sistema: AgentCore Browser, AgentCore Code Interpreter, AgentCore Gateway o Remote MCP Server. Usa la barra spaziatrice per attivarli, quindi premi Invio.

    Seleziona 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.

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

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

    Controllate la configurazione dell'utensile di cablaggio

Quindi esegui agentcore deploy per applicare.

Per consentire al vostro agente di effettuare ricerche sul Web, inserite il connettore Web Search Tool dietro un AgentCore gateway e collegatelo allo strumento utilizzato come agentcore_gateway strumento. Il gateway presenta la ricerca sul Web come uno strumento WebSearch MCP standard. Il tuo agente lo scopre e lo chiama come qualsiasi altro strumento gateway. AgentCore Gateway soddisfa tutte le richieste 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 sfrutta. us-east-1

Completa i seguenti passaggi per configurare la ricerca sul Web per il tuo cablaggio.

  1. Create il gateway e la destinazione del connettore. Segui i passaggi descritti in Configurazione dello strumento di ricerca Web per creare un gateway (protocollo MCP, autenticazione AWS_IAM in entrata) e aggiungere un target con. connectorId: "web-search" Tale destinazione richiede un ruolo di servizio Gateway bedrock-agentcore:InvokeWebSearch sul connettore. Per ulteriori informazioni, consulta Configurare il ruolo del servizio Gateway. Annota l'ARN del gateway una volta raggiunto. READY

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

  3. Collegate il gateway al cablaggio. Aggiungilo come agentcore_gateway strumento con l'autenticazione in AWS_IAM uscita predefinita. Gli esempi seguenti mostrano come collegare il gateway al momento della creazione.

Esempio
AWS CLI/boto3

Collega il gateway al momento della creazione (o tools update_harness trasmettilo/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 nel cablaggio. Ciò è utile per le approvazioni «human-in-the-loop», per le chiamate alle API interne o per qualsiasi logica che desideri controllare 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 consente intenzionalmente di far sì che la funzione in linea passi alla sessione. Se il client non restituisce mai un risultato, se il client non restituisce mai un risultato, il persistere di un turno parziale (assistente toolUse senza corrispondentetoolResult) lascerebbe la sessione in uno stato danneggiato. 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 il ragionamento con il risultato dello strumento e trasmette la risposta finale.

AgentCore CLI

Aggiungi uno strumento funzionale in linea a un cablaggio:

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 inline durante una chiamata, il TUI si ferma e richiede all'utente di fornire il risultato dello strumento in linea. In modalità non interattiva (CLI), lo stream restituisce stopReason: "tool_use" con e il risultato viene restituito con una chiamata di invoke successiva.

Scopri di più su ogni strumento: