View a markdown version of this page

AWS Target fungsi lambda - Batu Dasar Amazon AgentCore

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

AWS Target fungsi lambda

Target Lambda memungkinkan Anda menghubungkan gateway Anda ke fungsi AWS Lambda yang mengimplementasikan alat Anda. Ini berguna ketika Anda ingin mengeksekusi kode khusus sebagai respons terhadap pemanggilan alat.

Anda membuat fungsi Lambda menggunakan layanan AWS Lambda. Untuk membuat fungsi, Anda harus melakukan hal berikut:

  • Buat skema alat yang mendefinisikan alat yang dapat dipanggil fungsi Lambda Anda.

  • Memahami format input Lambda. Anda kemudian dapat mengikuti langkah-langkah dalam Panduan Pengembang AWS Lambda untuk Membangun dengan bahasa pilihan Anda.

Setelah Anda membuat fungsi, Anda mengonfigurasi izin untuk gateway agar dapat mengaksesnya.

Tinjau pertimbangan dan batasan utama untuk membantu Anda memutuskan apakah target Lambda berlaku untuk kasus penggunaan Anda. Jika ya, Anda dapat membuat skema alat dan fungsi Lambda dan kemudian mengatur izin untuk gateway untuk dapat mengakses target. Pilih topik untuk mempelajari lebih lanjut:

Pertimbangan dan batasan utama

Saat bekerja dengan target Lambda, perhatikan batasan dan pertimbangan berikut:

  • Awalan nama alat perlu dilucuti secara manual dari nama alat dalam fungsi Lambda Anda AWS . Untuk informasi selengkapnya, lihat Memahami bagaimana alat AgentCore Gateway diberi nama.

  • Jika Anda menggunakan fungsi AWS Lambda yang ada dan mengimpornya sebagai alat ke gateway, Anda perlu mengubah kode fungsi untuk memperhitungkan perubahan skema untuk objek peristiwa dan konteks

  • Fungsi Lambda harus mengembalikan respons JSON yang valid yang dapat diurai oleh gateway

  • Waktu tunggu fungsi lambda harus dikonfigurasi dengan tepat untuk menangani waktu pemrosesan yang diharapkan dari alat Anda

  • Pertimbangkan untuk menerapkan penanganan kesalahan dalam fungsi Lambda Anda untuk memberikan pesan kesalahan yang berarti kepada klien

Skema alat fungsi lambda

Bagian ini menjelaskan struktur skema alat yang mendefinisikan alat yang dapat dikembalikan fungsi Lambda Anda. Setelah menentukan skema alat Anda, Anda dapat melakukan salah satu hal berikut:

  • Unggah ke bucket Amazon S3 dan rujuk ke lokasi S3 saat Anda menambahkan target ke gateway Anda.

  • Tempelkan definisi sebaris saat Anda menambahkan target ke gateway Anda.

Pilih topik untuk mempelajari lebih lanjut tentang detail skema alat atau untuk melihat contoh:

Definisi alat

Saat Anda menambahkan fungsi Lambda sebagai target gateway, Anda memberikan ToolDefinition saat menyediakan konfigurasi target. Struktur definisi alat adalah sebagai berikut:

{ "name": "string", "description": "string", "inputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }, "outputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] } }

Definisi alat berisi bidang berikut:

  • name (required) — Nama alat.

  • deskripsi (wajib) — Deskripsi alat dan tujuan serta penggunaannya.

  • InputSchema (required) — Objek JSON yang mendefinisikan struktur input yang diterima alat.

  • OutputSchema (opsional) — Objek JSON yang mendefinisikan struktur output yang dihasilkan alat.

outputSchemaBid inputSchema ang dan keduanya dipetakan ke tipe objek SchemaDefinition, dijelaskan di bagian berikut.

Definisi skema tingkat atas untuk skema input dan output

outputSchemaBid inputSchema ang dan di tingkat atas definisi alat keduanya dipetakan ke tipe objek SchemaDefinition yang berisi bidang berikut:

{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
  • jenis (wajib) - Harusobject.

  • deskripsi (opsional) — Deskripsi skema dan tujuan serta penggunaannya.

  • properti (opsional) — Objek JSON yang mendefinisikan properti atau argumen alat. Setiap kunci adalah nama properti dan dipetakan ke SchemaDefinition objek yang mendefinisikan properti.

  • required (optional) — Sebuah array yang menyebutkan properti yang diperlukan dalam properties objek.

Jika Anda menyertakan properties bidang untuk menentukan argumen untuk alat, Anda memberikan definisi skema untuk setiap argumen. Berbagai jenis definisi skema diuraikan di bagian berikutnya.

Definisi skema properti

Setiap properti di tingkat atas mem SchemaDefinition etakan ke SchemaDefinition objek yang memiliki persyaratan sedikit berbeda dari definisi skema tingkat atas. Bidang yang tersedia tergantung type pada properti. Untuk melihat bentuk SchemaDefinition untuk jenis, pilih dari tab berikut:

contoh
String
  1. Pro SchemaDefinition perti for a string memiliki struktur sebagai berikut:

    { "type": "string", "description": "string" }
Number
  1. Pro SchemaDefinition perti for a number memiliki struktur sebagai berikut:

    { "type": "number", "description": "string" }
Integer
  1. Pro SchemaDefinition perti for a integer memiliki struktur sebagai berikut:

    { "type": "integer", "description": "string" }
Boolean
  1. Pro SchemaDefinition perti for a boolean memiliki struktur sebagai berikut:

    { "type": "boolean", "description": "string" }
Array
  1. Pro SchemaDefinition perti for a array memiliki struktur sebagai berikut:

    { "type": "array", "description": "string", "items": SchemaDefinition }

    Nilai items bidang adalah SchemaDefinition yang mendefinisikan struktur setiap item dalam array.

Object
  1. Pro SchemaDefinition perti for a object memiliki struktur berikut dan cocok dengan definisi skema properti tingkat atas.

    { "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }

Jika Anda menyertakan properti tipe objek lain, Anda akan secara rekursif menambahkan yang lain. SchemaDefinition

Contoh definisi alat Lambda

Pilih tab untuk melihat contoh definisi alat yang dapat Anda sertakan dalam fungsi Lambda Anda.

contoh
Weather tool
  1. get_weatherAlat berikut memerlukan argumen location string dan dapat digunakan untuk mengembalikan cuaca untuk lokasi tersebut:

    { "name": "get_weather", "description": "Get weather for a location", "inputSchema": { "type": "object", "properties": { "location": { "type": "string", "description": "the location e.g. seattle, wa" } }, "required": [ "location" ] } }
Time tool
  1. get_timeAlat berikut memerlukan argumen timezone string dan dapat digunakan untuk mengembalikan waktu untuk zona waktu tersebut:

    { "name": "get_time", "description": "Get time for a timezone", "inputSchema": { "type": "object", "properties": { "timezone": { "type": "string" } }, "required": [ "timezone" ] } }

Format input fungsi lambda

Ketika AgentCore gateway Amazon Bedrock memanggil fungsi Lambda, ia meneruskan event objek dan objek ke fungsi tersebutcontext. Penangan peristiwa Lambda yang Anda tulis dapat mengakses nilai dalam objek ini.

Objek acara

Peta properties dari inputSchema ke nilainya, seperti yang dikembalikan oleh alat. Misalnya, jika skema input Anda berisi properti keywords dancategory, objek acara bisa jadi sebagai berikut:

{ "keywords": "wireless headphones", "category": "electronics" }

Objek konteks

Berisi metadata berikut:

  • batuan AgentCoreMessageVersion dasar — Versi pesan.

  • batuan AgentCoreAwsRequestId dasar — ID permintaan yang dibuat ke layanan Amazon Bedrock AgentCore .

  • Bedrock AgentCoreMcpMessageId — ID pesan yang dikirim ke server MCP.

  • batuan AgentCoreGatewayId dasar — ID gerbang yang dipanggil.

  • batuan AgentCoreTargetId dasar — ID target gateway yang dipanggil.

  • batuan AgentCoreToolName dasar — Nama alat yang dipanggil. Nama alat dalam format ${target_name} _ ${tool_name}.

Format objek konteks adalah sebagai berikut:

{ "bedrockAgentCoreMessageVersion": "1.0", "bedrockAgentCoreAwsRequestId": "string", "bedrockAgentCoreMcpMessageId": "string", "bedrockAgentCoreGatewayId": "string", "bedrockAgentCoreTargetId": "string", "bedrockAgentCoreToolName": "string" }

Fungsi Lambda yang Anda tulis dapat mengakses properti dari objek peristiwa dan konteks. Anda dapat menggunakan kode boilerplate berikut untuk memulai:

# Access context properties in your Lambda function def lambda_handler(event, context): # Since the visible tool name includes the target name as a prefix, we can use this delimiter to strip the prefix delimiter = "___" # Get the tool name from the context originalToolName = context.client_context.custom['bedrockAgentCoreToolName'] toolName = originalToolName[originalToolName.index(delimiter) + len(delimiter):] # Get other context properties message_version = context.client_context.custom['bedrockAgentCoreMessageVersion'] aws_request_id = context.client_context.custom['bedrockAgentCoreAwsRequestId'] mcp_message_id = context.client_context.custom['bedrockAgentCoreMcpMessageId'] gateway_id = context.client_context.custom['bedrockAgentCoreGatewayId'] target_id = context.client_context.custom['bedrockAgentCoreTargetId'] # Process the request based on the tool name if tool_name == 'searchProducts': # Handle searchProducts tool pass elif tool_name == 'getProductDetails': # Handle getProductDetails tool pass else: # Handle unknown tool pass