View a markdown version of this page

Server-side penggunaan alat - Amazon Bedrock

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Server-side penggunaan alat

Jika Anda menggunakan Responses API untuk memanggil model, maka itu dapat menggunakan pemanggilan alat sisi server, selain pemanggilan alat sisi klien yang telah kita bahas sebelumnya. Server-side pemanggilan alat adalah mekanisme di mana alat (API, fungsi, alur kerja) dijalankan di lingkungan backend tepercaya, bukan pada klien. Ini meningkatkan keamanan, keandalan, dan postur tata kelola aplikasi. Sebelum Amazon Bedrock menjalankan fungsi Lambda yang mengimplementasikan penggunaan alat, ia memastikan bahwa fungsi Lambda memiliki kebijakan IAM yang sama dengan aplikasi yang memanggilnya. Karena Amazon Bedrock menangani eksekusi alat, klien dapat fokus pada penerapan logika bisnis mereka, daripada menambahkan fungsionalitas alat. Amazon Bedrock juga mendukung standar tata kelola tertinggi seperti ISO, SOC, dan HIPAA yang memenuhi syarat. Anda dapat mengirimkan fungsi Lambda kustom Anda sendiri untuk menjalankan alat atau menggunakan alat yang telah ditentukan sebelumnya, seperti catatan dan tugas. Server-side alat yang menggunakan Responses API tersedia mulai dengan 20B/120B model GPT OSS, dengan dukungan untuk model lain segera hadir. Anda dapat menggunakan API Model untuk menemukan model yang tersedia yang dapat Anda gunakan dengan Responses API. Untuk detail selengkapnya tentang Responses API, lihat Mengh asilkan respons menggunakan API OpenAI.

Ada dua jenis alat yang dapat Anda gunakan dengan Amazon Bedrock: Alat khusus menggunakan Lambda, atau alat yang telah ditentukan sebelumnya yang didukung oleh Amazon Bedrock. Bagian ini mencakup cara membuat alat Lambda kustom dengan Responses API. Bagian berikut menjelaskan setiap jenis secara rinci.

Alat kustom menggunakan Lambda di Responses API

Dengan menggunakan fungsi Lambda sebagai alat khusus di Amazon Bedrock, Anda dapat memperluas kemampuan agen dengan mengintegrasikan fungsi Lambda khusus sebagai alat. Dengan ini, Anda dapat membuat alat tanpa server dan dapat diskalakan yang dapat dipanggil oleh asisten AI dan aplikasi lain melalui Model Context Protocol (MCP). Berikut adalah keuntungan dari fitur ini:

  • Perluas Fungsionalitas: Tambahkan logika bisnis kustom, integrasi API, atau kemampuan pemrosesan data.

  • Jalankan alat dengan aman: Lambda memungkinkan alat untuk mengakses sumber daya di dalam VPC tanpa harus memberikan akses VPC penuh.

  • Arsitektur Tanpa Server: Tidak ada manajemen infrastruktur, Lambda menangani penskalaan secara otomatis.

  • Hemat Biaya: Bayar hanya untuk waktu eksekusi, bukan sumber daya yang menganggur.

  • Integrasi Mudah: Fungsi Lambda muncul bersama alat bawaan dengan mulus.

Untuk membiarkan model di Amazon Bedrock menggunakan alat untuk menyelesaikan respons pesan, Anda mengirim pesan dan definisi untuk satu atau lebih alat ke model. Berdasarkan permintaan aplikasi Anda, jika model menentukan bahwa salah satu alat dapat membantu menghasilkan respons, model akan mengembalikan permintaan agar Amazon Bedrock menggunakan alat dan mengirim hasil alat kembali ke model. Model kemudian menggunakan hasil untuk menghasilkan respons terhadap pesan asli.

Langkah-langkah berikut menunjukkan cara menggunakan alat dengan Respon ses API.

Cara kerjanya

  1. Fungsi Lambda: Buat fungsi Lambda Anda yang mengimplementasikan protokol MCP

  2. Tool Discovery: Bedrock memanggil fungsi Lambda Anda untuk menemukan alat yang tersedia

  3. Pendaftaran Alat: Alat Anda terdaftar di Bedrock

  4. Eksekusi Alat: Ketika agen meminta alat Anda, Bedrock memanggil fungsi Lambda Anda

  5. Penanganan Respon: Hasil dikembalikan ke agen melalui antarmuka standar

Langkah 1: Tentukan fungsi Lambda untuk mendapatkan lagu paling populer

Buat fungsi Lambda yang mengimplementasikan protokol MCP. Berikut adalah contoh Python sederhana:

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" } }

Langkah 2: Terapkan fungsi Lambda

Selanjutnya, gunakan peran IAM Anda untuk menerapkan fungsi Lambda ini untuk mendapatkan ARN. Anda dapat membaca lebih lanjut di Mem ulai dengan Lambda di Panduan Pengembang Lambda.

# 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

Katakanlah ARN Anda adalah: arn:aws:lambda:us-west-2:123456789012:function:my-custom-tool

Langkah 3: Tentukan pesan dan definisi alat dalam permintaan inferensi Anda

Untuk mengirim pesan dan definisi alat, Anda menggunakan operasi API Tang gapan. Amazon Bedrock menggunakan konektor dan fungsionalitas server MCP jarak jauh dari Responses API untuk menyediakan kemampuan penggunaan alat. Definisi alat ini adalah skema JSON yang Anda berikan dalam parameter permintaan mcp ke operasi Create. Di connector_id bidang di Responses connector API, Anda dapat meneruskan Lambda ARN yang telah Anda buat pada langkah sebelumnya. Anda tidak perlu memberikan kredentif otorisasi karena Amazon Bedrock menggunakan peran dan kebijakan IAM yang sama yang digunakan untuk aplikasi Anda yang memanggil model. Berikut ini adalah contoh skema untuk alat yang membuat lagu paling populer diputar di stasiun 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)

Langkah 4: Bedrock memanggil alat dan meneruskan respons kembali ke model

Kemampuan untuk menggunakan alat konektor tersedia dalam model yang mendukung Respon ses API. Periksa alat mana yang mendukung model Anda di Hasilkan respons menggunakan API OpenAI. Saat menggunakan alat menggunakan API Tanggapan, Anda hanya membayar token yang digunakan saat mengimpor definisi alat atau melakukan panggilan alat. Tidak ada biaya tambahan yang terlibat per panggilan alat.

Ketika Anda menentukan fungsi Lambda dalam tools parameter, API akan mencoba untuk mendapatkan daftar alat dari server. Jika berhasil mengambil daftar alat, item mcp_list_tools keluaran baru akan muncul di output respons model. Pro tools perti objek ini akan menunjukkan alat yang berhasil diimpor. Setelah model memiliki akses ke definisi alat ini, ia mungkin memilih untuk memanggilnya tergantung pada apa yang ada dalam konteks model. Ketika model memutuskan untuk memanggil alat Lambda, API akan membuat permintaan ke fungsi Lambda untuk memanggil alat dan memasukkan outputnya ke dalam konteks model. Anda dapat membaca lebih lanjut tentang alat daftar dan alat panggilan dalam dokument asi OpenAI. Perhatikan bahwa fungsi Lambda Anda harus memiliki peran dan kebijakan IAM yang sama dengan fungsi aplikasi yang memanggil model di Amazon Bedrock, jika tidak fungsi Lambda akan gagal. Berikut ini adalah definisi kesalahan.

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

Menggunakan alat AWS yang disediakan di Responses API

Ada dua alat AWS yang disediakan yang dibangun ke dalam openai.gpt-oss-120b model openai.gpt-oss-20b dan: Note-taking fungsionalitas (alat catatan) dan manajemen tugas (alat tugas). Alat-alat ini tersedia secara otomatis - Anda tidak perlu mendefinisikannya dalam tools parameter.

Ikhtisar Alat Catatan

notesAlat ini memungkinkan model untuk menyimpan catatan dalam sesi percakapan yang sama. Ini menyediakan mekanisme memori sederhana untuk mempertahankan konteks di beberapa interaksi. Memori hanya dicakup untuk percakapan saat ini.

Ketika model menggunakan alat catatan, ia memancarkan mcp_call output dengan diset name el ke"notes". Model menentukan argumen yang sesuai berdasarkan permintaan Anda.

Anda dapat menggunakan salah satu bahasa alami (misalnya “Ingat bahwa warna favorit saya adalah biru”, “Apa yang saya katakan tentang warna favorit saya?” , “Simpan fakta bahwa saya lebih suka rapat pagi”, “Ingat apa yang saya katakan tentang preferensi rapat”) atau Anda dapat menggunakan panggilan alat langsung di prompt Anda (“Gunakan alat catatan untuk menyimpan email saya sebagai john@example.com “, “Periksa catatan untuk alamat email saya”).

Ikhtisar Alat Tugas

tasksAlat ini menyediakan tumpukan untuk mengelola tugas dalam sesi percakapan. Anda dapat mendorong tugas ke tumpukan dan melepaskannya, membuatnya berguna untuk mengelola alur kerja, pengingat, atau manajemen tugas hierarkis. Tugas tetap ada sepanjang sesi percakapan. Memori hanya dicakup untuk percakapan saat ini.

Ketika model menggunakan alat tugas, ia memancarkan mcp_call output dengan diset name el ke"tasks". Model menentukan argumen yang sesuai (sepertimethod,task.title, dantask.description) berdasarkan permintaan Anda.

Anda dapat memanggil alat Tugas dengan menggunakan bahasa alami (misalnya “Tambahkan tugas untuk meninjau anggaran”, “Dorong pengingat untuk memanggil klien”, “Apa tugas selanjutnya yang perlu saya lakukan?” , “Buka tugas terbaru”, “Dapatkan tugas terbaru dari tumpukan saya”) atau Anda dapat memanggil alat secara langsung di prompt Anda (“Gunakan alat tugas untuk mendorong 'selesaikan presentasi'”, “Masukkan tugas dari tumpukan”, “Tambahkan 'jadwal pertemuan' ke daftar tugas saya”).

Contoh kode: Menggunakan alat catatan dan tugas

Alat catatan dan tugas dibangun ke dalam openai.gpt-oss-120b model openai.gpt-oss-20b dan. Anda tidak perlu mendefinisikannya secara eksplisit dalam tools parameter — cukup referensikan mereka di prompt Anda:

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 integrasi penggunaan alat dengan Gateway AgentCore

Amazon Bedrock sekarang mendukung AgentCore Gateway sebagai alat sisi server yang memanggil tipe integrasi. Dengan fitur ini, Anda dapat menghubungkan model Anda langsung ke titik akhir AgentCore Gateway untuk akses tanpa batas ke alat yang dikelola melalui infrastruktur gateway.

Integrasi AgentCore Gateway mengikuti pola yang sama dengan integrasi fungsi Lambda, dengan satu perbedaan utama.

Integrasi Lambda:

  • Menggunakan fungsi Lambda ARN

  • Langsung memanggil fungsi Lambda AWS

AgentCore Integrasi Gateway:

  • Menggunakan AgentCore Gateway ARN

  • Merutekan panggilan alat melalui infrastruktur AgentCore Gateway

  • Menyediakan manajemen dan penemuan alat terpusat

Konfigurasi

Struktur Permintaan

Saat mengonfigurasi AgentCore Gateway sebagai sumber alat, gunakan struktur berikut dalam tools array Anda dalam permintaan Responses API Anda.

{ "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" }

Parameter

Parameter Tipe Diperlukan Deskripsi
type string Ya Harus diatur ke mcp
server_label string Ya Pengidentifikasi unik untuk konektor alat ini dalam permintaan Anda
connector_id string Ya ARN AgentCore Gateway Anda
server_description string Tidak Human-readable deskripsi alat yang disediakan oleh gateway ini
require_approval string Ya Bidang harus "never"

Contoh Permintaan Lengkap

{ "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?" } ] } ] }

Prasyarat

Sebelum menggunakan integrasi AgentCore Gateway, pastikan Anda memiliki:

  1. Membuat AgentCore Gateway dengan target yang dikonfigurasi (fungsi Lambda, tahap API Gateway, skema OpenAPI, atau server MCP)

  2. Izin IAM yang dikonfigurasi memungkinkan peran layanan Bedrock Anda untuk memanggil gateway. Perhatikan bahwa Bedrock hanya mendukung gateway dengan otentikasi IAM.

  3. Gateway ARN dalam format yang benar

Manfaat Integrasi AgentCore Gateway

  • Manajemen Alat Terpusat: Kelola semua alat Anda melalui satu titik akhir gateway

  • Penemuan Alat: Agen dapat secara dinamis menemukan alat yang tersedia melalui gateway

  • Keamanan: Built-in otentikasi dan otorisasi melalui kebijakan IAM dan gateway

  • Pengamatan: Pemantauan komprehensif dan pencatatan pemanggilan alat

  • Fleksibilitas: Dukungan untuk beberapa jenis target (Lambda, API Gateway, OpenAPI, server MCP)

Izin IAM

Peran eksekusi Bedrock Anda memerlukan izin untuk memanggil Gateway: AgentCore

{ "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" } ] }

Langkah Berikutnya