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à.
AWS Obiettivi della funzione Lambda
I target Lambda ti consentono di connettere il tuo gateway alle funzioni AWS Lambda che implementano i tuoi strumenti. Ciò è utile quando si desidera eseguire codice personalizzato in risposta alle chiamate degli strumenti.
Crei una funzione Lambda utilizzando il AWS servizio Lambda. Per creare la funzione, devi fare quanto segue:
-
Crea uno schema di strumenti che definisca gli strumenti che la tua funzione Lambda può chiamare.
-
Comprendi il formato di input Lambda. Puoi quindi seguire i passaggi della AWS Lambda Developer Guide for Building con il linguaggio che preferisci.
Dopo aver creato la funzione, si configurano le autorizzazioni per consentire al gateway di accedervi.
Esamina le principali considerazioni e limitazioni per aiutarti a decidere se un target Lambda è applicabile al tuo caso d'uso. In tal caso, puoi creare lo schema dello strumento e la funzione Lambda e quindi impostare le autorizzazioni affinché il gateway possa accedere al target. Per ulteriori informazioni, scegli un argomento:
Argomenti
Considerazioni e limitazioni principali
Quando lavori con obiettivi Lambda, tieni presente le seguenti limitazioni e considerazioni:
-
I prefissi dei nomi degli strumenti dovranno essere rimossi manualmente dal nome dello strumento nella funzione Lambda. AWS Per ulteriori informazioni, consulta AgentCore Comprendere il nome degli strumenti Gateway.
-
Se stai utilizzando una funzione AWS Lambda esistente e la importi come strumento nel gateway, dovrai modificare il codice della funzione per tenere conto di una modifica dello schema per gli oggetti evento e contesto
-
La funzione Lambda deve restituire una risposta JSON valida che può essere analizzata dal gateway
-
I timeout delle funzioni Lambda devono essere configurati in modo appropriato per gestire il tempo di elaborazione previsto degli strumenti
-
Valuta la possibilità di implementare la gestione degli errori nella tua funzione Lambda per fornire messaggi di errore significativi al client
Schema dello strumento funzionale Lambda
Questa sezione spiega la struttura dello schema dello strumento che definisce uno strumento che la funzione Lambda può restituire. Dopo aver definito lo schema dello strumento, puoi effettuare una delle seguenti operazioni:
-
Caricalo in un bucket Amazon S3 e fai riferimento alla posizione S3 quando aggiungi la destinazione al tuo gateway.
-
Incolla la definizione in linea quando aggiungi la destinazione al gateway.
Seleziona un argomento per saperne di più sui dettagli dello schema dello strumento o per visualizzare alcuni esempi:
Argomenti
Definizione dello strumento
Quando aggiungi una funzione Lambda come destinazione del gateway, fornisci un ToolDefinition quando fornisci la configurazione della destinazione. La struttura della definizione dello strumento è la seguente:
{ "name": "string", "description": "string", "inputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }, "outputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] } }
La definizione dello strumento contiene i seguenti campi:
-
nome (obbligatorio) — Il nome dello strumento.
-
descrizione (obbligatorio): una descrizione dello strumento, del suo scopo e utilizzo.
-
inputSchema (obbligatorio) — Un oggetto JSON che definisce la struttura dell'input accettato dallo strumento.
-
outputSchema (opzionale) — Un oggetto JSON che definisce la struttura dell'output prodotto dallo strumento.
I outputSchema campi inputSchema and sono entrambi mappati a un tipo di oggetto SchemaDefinition, descritto nella sezione seguente.
Definizione di schema di primo livello per schemi di input e output
I outputSchema campi inputSchema e al livello superiore della definizione dello strumento sono entrambi mappati a un tipo di oggetto SchemaDefinition che contiene i seguenti campi:
{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
-
tipo (obbligatorio) — Deve essere.
object -
descrizione (opzionale): una descrizione dello schema, del suo scopo e utilizzo.
-
properties (opzionale) — Un oggetto JSON che definisce le proprietà o gli argomenti dello strumento. Ogni chiave è il nome di una proprietà e viene associata a un SchemaDefinition oggetto che definisce la proprietà.
-
required (opzionale) — Un array che enumera le proprietà richieste nell'oggetto.
properties
Se si include un properties campo per definire gli argomenti per lo strumento, si fornisce una definizione dello schema per ogni argomento. I diversi tipi di definizioni dello schema sono descritti nella sezione successiva.
Definizione dello schema delle proprietà
Ogni proprietà nel livello superiore è SchemaDefinition mappata a un SchemaDefinition oggetto che ha requisiti leggermente diversi dalla definizione dello schema di primo livello. I campi disponibili dipendono dal tipo type di proprietà. Per visualizzare la forma di un tipo, seleziona una delle seguenti schede: SchemaDefinition
Esempio
Se includete un'altra proprietà del tipo di oggetto, ne aggiungerete un'altra in modo ricorsivo. SchemaDefinition
Esempi di definizioni degli strumenti Lambda
Seleziona una scheda per visualizzare esempi di definizioni di strumenti che puoi includere nella tua funzione Lambda.
Esempio
Formato di input della funzione Lambda
Quando un AgentCore gateway Amazon Bedrock richiama una funzione Lambda, passa un event oggetto e un context oggetto alla funzione. Il gestore di eventi Lambda che scrivi può accedere ai valori in questi oggetti.
Oggetto evento
Una mappa properties dai valori inputSchema ai relativi valori, come restituito dallo strumento. Ad esempio, se lo schema di input contiene le proprietà keywords ecategory, l'oggetto evento potrebbe essere il seguente:
{ "keywords": "wireless headphones", "category": "electronics" }
Oggetto di contesto
Contiene i seguenti metadati:
-
bedrock AgentCoreMessageVersion — La versione del messaggio.
-
bedrockAgentCoreAwsRequestId : l'ID della richiesta effettuata al servizio Amazon AgentCore Bedrock.
-
bedrock AgentCoreMcpMessageId — L'ID del messaggio inviato al server MCP.
-
bedrock AgentCoreGatewayId — L'ID del gateway richiamato.
-
bedrock AgentCoreTargetId — L'ID del target del gateway richiamato.
-
bedrock AgentCoreToolName — Il nome dello strumento che è stato chiamato. Il nome dello strumento è nel formato
${target_name}_${tool_name}.
Il formato dell'oggetto di contesto è il seguente:
{ "bedrockAgentCoreMessageVersion": "1.0", "bedrockAgentCoreAwsRequestId": "string", "bedrockAgentCoreMcpMessageId": "string", "bedrockAgentCoreGatewayId": "string", "bedrockAgentCoreTargetId": "string", "bedrockAgentCoreToolName": "string" }
La funzione Lambda che scrivi può accedere alle proprietà dell'evento e dell'oggetto di contesto. È possibile utilizzare il seguente codice standard per iniziare:
# 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