AWS Obiettivi della funzione Lambda
Gli obiettivi Lambda ti consentono di connettere il gateway alle funzioni AWS Lambda che implementano i tuoi strumenti. Ciò è utile quando si desidera eseguire codice personalizzato in risposta alle chiamate degli strumenti.
Si crea una funzione Lambda utilizzando il servizio Lambda AWS . 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 la lingua che preferisci.
Dopo aver creato la funzione, configuri le autorizzazioni affinché il gateway possa accedervi.
Esamina le considerazioni e le limitazioni principali per 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 alla destinazione. Per ulteriori informazioni, scegli un argomento:
Argomenti
Considerazioni e limitazioni chiave
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, vedi Comprendere come AgentCore vengono denominati gli strumenti Gateway.
-
Se si utilizza una funzione AWS Lambda esistente e la si importa come strumento nel gateway, sarà necessario 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
-
Prendi in considerazione l'implementazione della gestione degli errori nella tua funzione LLambda per fornire messaggi di errore significativi al client
Schema dello strumento delle funzioni 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 eseguire una delle seguenti operazioni:
-
Caricalo in un bucket Amazon S3 e fai riferimento alla posizione S3 quando aggiungi la destinazione al gateway.
-
Incolla la definizione in linea quando aggiungi il target al gateway.
Seleziona un argomento per saperne di più sui dettagli dello schema dello strumento o per vedere degli esempi:
Argomenti
Definizione dell'utensile
Quando aggiungi una funzione Lambda come destinazione gateway, fornisci una configurazione ToolDefinitionquando fornisci la destinazione. La struttura della definizione dell'utensile è 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 dell'utensile contiene i seguenti campi:
-
name (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.
Entrambi outputSchema i campi inputSchema and sono mappati a un tipo di oggetto SchemaDefinition, descritto nella sezione seguente.
Definizione dello schema di primo livello per gli 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 SchemaDefinitionche 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à ed è mappata a un SchemaDefinitionoggetto 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 dello strumento, si fornisce una definizione dello schema per ogni argomento. I diversi tipi di definizioni degli schemi sono descritti nella sezione successiva.
Definizione dello schema delle proprietà
Ogni proprietà di livello superiore è SchemaDefinition mappata su un SchemaDefinitionoggetto con requisiti leggermente diversi dalla definizione dello schema di livello superiore. I campi disponibili dipendono dalla type proprietà. Per visualizzare la forma di un tipo, selezionate una delle seguenti schede: SchemaDefinition
Esempio
Se includete un'altra proprietà del tipo di oggetto, ne aggiungerete ricorsivamente un'altra. 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 eventi Lambda che scrivi può accedere ai valori di questi oggetti.
Oggetto evento
Una mappa properties dei inputSchema relativi valori, restituiti 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 contestuale
Contiene i seguenti metadati:
-
bedrockAgentCoreMessageVersion : la versione del messaggio.
-
bedrockAgentCoreAwsRequestId : l'ID della richiesta effettuata al servizio Amazon Bedrock AgentCore .
-
bedrockAgentCoreMcpMessageId : l'ID del messaggio inviato al server MCP.
-
bedrockAgentCoreGatewayId : l'ID del gateway che è stato richiamato.
-
bedrock AgentCoreTargetId — L'ID della destinazione del gateway che è stata richiamata.
-
bedrock AgentCoreToolName — Il nome dello strumento chiamato. Il nome dello strumento è nel formato
${target_name}_${tool_name}.
Il formato dell'oggetto contestuale è 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 context. Puoi usare 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