Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Alat bersifat deklaratif. Anda mencantumkan apa yang dapat dipanggil agen; AgentCore menangani pemanggilan, kredenSIAL, dan hasil. Harness mendukung lima jenis alat, ditambah sistem file bawaan dan alat shell.
-
Server MCP: Sambun gkan ke titik akhir Protokol Konteks Model jarak jauh dengan URL. Tidak diperlukan Gateway untuk kasus-kasus sederhana.
-
AgentCore Gateway: Konektivitas yang diatur ke API dan server MCP dengan autenti inbound/outbound kasi, kontrol akses, dan penegakan kebijakan. Referensikan gateway ARN dan setiap alat yang dikonfigurasi pada gateway itu menjadi tersedia. Gunakan Gateway saat Anda membutuhkan permukaan alat yang dikelola dan didukung kebijakan.
-
AgentCore Browser: Penelusuran dan otomatisasi web yang dikelola.
-
AgentCore Code Interpre ter: Eksekusi Python/JavaScript/TypeScript kode kotak pasir untuk analisis data dan komputasi.
-
Fungsi sebaris: Skema alat yang dijalankan di sisi klien, bukan pada VM harness. Harness berhenti ketika alat dipanggil dan mengembalikan panggilan ke kode Anda, yang memutuskan apa yang harus dilakukan dan mengirimkan hasilnya kembali. Ini adalah pola untuk persetujuan manusia-in-the-loop dan integrasi khusus.
Alat default shell dan file_operations tersedia di setiap sesi kecuali Anda membatasinyaallowedTools. shellmengeksekusi perintah bash; file_operations mendukung melihat, membuat, dan mengedit file.
allowedToolsParameter mengontrol alat mana yang dapat digunakan agen. Jika dihilangkan, semua alat diperbolehkan.
Overhead token dari definisi alat
Definisi alat dihitung terhadap token input model bahkan ketika agen tidak memanggil alat. Bersama-sama, default shell dan file_operations definisi menambahkan sekitar 900 token input untuk setiap permintaan model. Hitungan yang tepat bervariasi menurut model dan dapat berubah seiring dengan berkembangnya definisi alat. Karena pemanggilan dapat membuat beberapa permintaan model, overhead ini dapat terjadi lebih dari sekali per pemanggilan. Gunakan allowedTools untuk mengekspos hanya alat yang diperlukan untuk permintaan dan mengurangi penggunaan token.
Pola yang didukung:
| Pola |
Contoh |
Cocok |
|
*
|
"*"
|
Semua alat
|
|
Nama polos
|
"shell"
|
Dibangun dengan nama
|
|
Glob bawaan
|
"file_*"
|
file_operations, file_read
|
|
@builtin
|
"@builtin"
|
Semua alat bawaan
|
|
@builtin/name
|
"@builtin/shell"
|
Khusus bawaan
|
|
@server
|
"@git"
|
Semua alat dari server MCP
|
|
@server/tool
|
"@git/git_status"
|
Alat MCP khusus
|
|
@server/glob
|
"@git/read_*"
|
Glob di dalam server
|
|
@*/tool
|
"@*-mcp/status"
|
Glob di seluruh server
|
allowedToolscakupan pemilihan alat LLM selama InvokeHarness saja. Itu tidak mempengaruhi InvokeAgentRuntimeCommand, yang merupakan API terpisah dengan tindakan IAM sendiri (bedrock-agentcore:InvokeAgentRuntimeCommand) yang mengeksekusi perintah secara langsung tanpa melewati LLM. Untuk mencegah eksekusi perintah langsung, jangan berikan bedrock-agentcore:InvokeAgentRuntimeCommand kebijakan IAM Anda.
contoh
- AWS CLI/boto3
-
L tools ulus saat membuat, memperbarui, atau memanggil waktu:
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
-
Saat membuat harness baru secara interaktif, agentcore add harness wizard memungkinkan Anda memilih alat. Untuk menambahkan alat melalui CLI, gunakan agentcore add tool setelah membuat harness:
--typeBendera menggunakan nama yang dipisahkan dengan skor rendah (misalnya,agentcore_browser), yang cocok dengan pengidentifikasi jenis alat di. 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"]}'
Terapkan untuk menerapkan.
Mengganti alat pada satu pemanggilan:
agentcore invoke --harness research-agent --tools agentcore_browser "Find the latest news on AI agents"
- Interactive
-
Jalan agentcore kan di direktori proyek, pilih tambah, pilih Harness, dan lanjutkan ke pengaturan lanjutan. Aktif kan Alat dengan Sp asi, lalu tekan Enter.
-
Pilih alat untuk harness Anda: AgentCore Browser, AgentCore Code Interpreter, AgentCore Gateway , atau Server MCP Jarak Jauh. Gunakan Sp asi untuk beralih masing-masing, lalu tekan Enter.
-
Untuk Server MCP Jarak Jauh, wizard meminta nama server, URL, dan header permintaan opsional.
-
Untuk AgentCore Gateway, masukkan gateway ARN dan pilih otentikasi outbound: AWS IAM (default), None, atau OAuth.
-
Tinjau ringkasan konfigurasi dan konfirmasikan.
Kemudian jalankan agentcore deploy untuk menerapkan.
Pencarian web
Untuk memberikan pencarian web agen Anda, letakkan konektor Alat Pencarian Web di belakang AgentCore Gateway dan pasang gateway itu ke harness Anda sebagai agentcore_gateway alat. Gateway mengekspos pencarian web sebagai alat MCP WebSearch standar. Agen Anda menemukan dan memanggilnya seperti alat gateway lainnya. AgentCore Gateway melayani semua kueri sepenuhnya di dalam AWS. Untuk informasi selengkapnya tentang model privasi dan indeks web yang dibuat khusus, lihat halaman konektor Alat Pencarian Web.
Web Search Tool tersedia di Wilayah US East (Virginia Utara)us-east-1. Buat gateway dan ikatus-east-1.
Selesaikan langkah-langkah berikut untuk mengatur pencarian web untuk harness Anda.
-
Buat gateway dan target konektor. Ikuti langkah-langkah di Meng atur Alat Pencarian Web untuk membuat Gateway (protokol MCP, autenti AWS_IAM kasi masuk) dan menambahkan target dengan. connectorId: "web-search" Target itu membutuhkan peran layanan Gateway dengan bedrock-agentcore:InvokeWebSearch pada konektor. Untuk informasi selengkapnya, lihat Meng onfigurasi Peran Layanan Gateway. Perhatikan gateway ARN setelah mencapaiREADY.
-
Berikan akses peran eksekusi harness. Peran eksekusi harness (berbeda dari peran layanan Gateway pada langkah sebelumnya) diperlukan bedrock-agentcore:InvokeGateway pada gateway ARN. Untuk informasi selengkapnya tentang izin yang diperlukan, lihat kebijakan izin opsional AgentCore Gateway di topik keamanan. Jika harness Anda menggunakan memori terkelola (default), peran eksekusi juga memerlukan izin AgentCore Memori. Agen membaca dan menulis memori sesi pada setiap pemanggilan.
-
Pasang gateway ke harness. Tambahkan sebagai agentcore_gateway alat dengan autentikasi AWS_IAM keluar default. Contoh berikut menunjukkan cara melampirkan gateway pada waktu pembuatan.
contoh
- AWS CLI/boto3
-
Lampirkan gateway pada waktu pembuatan (atau lan tools jutkanupdate_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,
)
Alat gateway sekarang tersedia untuk agen. Panggil harness dengan prompt yang membutuhkan informasi terkini:
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."
Panggilan fungsi sebaris
Fungsi sebaris memungkinkan Anda menentukan alat yang dieksekusi dalam kode Anda, bukan pada harness. Ini berguna untuk persetujuan manusia-in-the-loop, memanggil API internal, atau logika apa pun yang ingin Anda kontrol di sisi klien.
contoh
- AWS CLI/boto3
-
Lewati alat fungsi sebaris pada waktu pemanggilan:
# 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",
}
}],
},
],
)
Anda harus menyertakan toolUse pesan asisten dan pesan Anda toolResult di langkah 3. Harness sengaja tidak mempertahankan pergantian fungsi sebaris ke sesi - jika klien tidak pernah mengembalikan hasil, mempertahankan putaran paruh (asisten toolUse tanpa pencocokantoolResult) akan meninggalkan sesi dalam keadaan rusak. Dengan mengharuskan klien untuk mengirim kedua pesan, sesi tetap bersih terlepas dari apakah klien menyelesaikan panggilan alat.
Agen melanjutkan penalaran dengan hasil alat dan mengalirkan respons akhir.
- AgentCore CLI
-
Tambahkan alat fungsi sebaris ke harness:
agentcore add tool --harness my-agent --type inline_function \
--name get_weather
Kemudian tentukan deskripsi dan skema input diapp/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"]
}
}
}
}
Jalan agentcore deploy kan untuk mendaftar. Saat agen memanggil fungsi sebaris selama pemanggilan, TUI berhenti dan meminta Anda untuk memberikan hasil alat secara sebaris. Dalam mode non-interaktif (CLI), aliran kembali dengan stopReason: "tool_use" dan Anda mengirim hasilnya kembali dengan panggilan pemanggilan tindak lanjut.
Pelajari lebih lanjut tentang setiap alat: