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à.
Richiama un agente AgentCore Runtime
L'InvokeAgentRuntimeoperazione consente di inviare richieste a specifici endpoint AgentCore di runtime identificati dal relativo Amazon Resource Name (ARN) e ricevere risposte in streaming contenenti l'output dell'agente. L'API supporta la gestione delle sessioni tramite identificatori di sessione, consentendoti di mantenere il contesto della conversazione tra più interazioni. È possibile scegliere come target specifici endpoint di agenti utilizzando qualificatori opzionali.
Per chiamareInvokeAgentRuntime, sono necessarie le autorizzazioni. bedrock-agentcore:InvokeAgentRuntime Nella chiamata puoi anche passare un token al portatore che l'agente può utilizzare per l'autenticazione dell'utente.
L'InvokeAgentRuntimeoperazione accetta il payload della richiesta come dati binari di dimensioni fino a 100 MB e restituisce una risposta in streaming che fornisce blocchi di dati in tempo reale mentre l'agente elabora la richiesta. Questo approccio di streaming consente di ricevere immediatamente risultati parziali anziché attendere la risposta completa, rendendolo ideale per le applicazioni interattive.
Per eseguire i comandi della shell (come l'esecuzione di test, le operazioni git o la configurazione dell'ambiente) nella stessa sessione, usa i comandi della shell Execute nell'operazione AgentCore Runtime sessions. Entrambe le operazioni funzionano sullo stesso runtime e sulla stessa sessione dell'agente.
Se prevedi di integrare il tuo agente con OAuth, non puoi utilizzare l' AWS SDK per chiamare. InvokeAgentRuntime Effettua invece una richiesta HTTPS a. InvokeAgentRuntime Per ulteriori informazioni, consulta Autenticazione e autorizzazione con Inbound Auth e Outbound Auth.
Richiama gli agenti di streaming
L'esempio seguente mostra come utilizzare boto3 per richiamare il runtime di un agente:
import boto3 import json # Initialize the Bedrock AgentCore client agent_core_client = boto3.client('bedrock-agentcore') # Prepare the payload payload = json.dumps({"prompt": prompt}).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload ) # Process and print the response if "text/event-stream" in response.get("contentType", ""): # Handle streaming response content = [] for line in response["response"].iter_lines(chunk_size=10): if line: line = line.decode("utf-8") if line.startswith("data: "): line = line[6:] print(line) content.append(line) print("\nComplete response:", "\n".join(content)) elif response.get("contentType") == "application/json": # Handle standard JSON response content = [] for chunk in response.get("response", []): content.append(chunk.decode('utf-8')) print(json.loads(''.join(content))) else: # Print raw response for other content types print(response)
Richiama agenti multimodali
È possibile utilizzare l'InvokeAgentRuntimeoperazione per inviare richieste multimodali che includono testo e immagini. L'esempio seguente mostra come richiamare un agente multimodale:
import boto3 import json import base64 # Read and encode image with open("image.jpg", "rb") as image_file: image_data = base64.b64encode(image_file.read()).decode('utf-8') # Prepare multi-modal payload payload = json.dumps({ "prompt": "Describe what you see in this image", "media": { "type": "image", "format": "jpeg", "data": image_data } }).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload )
Gestione della sessione
L'InvokeAgentRuntimeoperazione supporta la gestione delle sessioni tramite il parametro. runtimeSessionId Fornendo lo stesso identificatore di sessione per più richieste, è possibile mantenere il contesto della conversazione, consentendo all'agente di fare riferimento alle interazioni precedenti.
Per iniziare una nuova conversazione, genera un identificatore di sessione univoco. Per continuare una conversazione esistente, utilizza lo stesso identificativo di sessione delle richieste precedenti. Questo approccio consente di creare applicazioni interattive che mantengono il contesto nel tempo.
Suggerimento
Per ottenere risultati ottimali, utilizzate un UUID o un altro identificatore univoco per gli ID di sessione per evitare collisioni tra utenti o conversazioni diversi.
Gestione degli errori
Quando si utilizza l'InvokeAgentRuntimeoperazione, è possibile che si verifichino diversi errori. Ecco alcuni errori comuni e come gestirli:
- ValidationException
-
Si verifica quando i parametri della richiesta non sono validi. Verifica che l'ARN dell'agente, l'ID di sessione e il payload siano formattati correttamente.
- ResourceNotFoundException
-
Si verifica quando non è possibile trovare il runtime dell'agente specificato. Verifica che l'ARN dell'agente sia corretto e che l'agente sia presente nel tuo AWS account.
- AccessDeniedException
-
Si verifica quando non si dispone delle autorizzazioni necessarie. Assicurati che la tua politica IAM includa l'
bedrock-agentcore:InvokeAgentRuntimeautorizzazione. - ThrottlingException
-
Si verifica quando si superano i limiti di frequenza delle richieste. Implementa la logica esponenziale di backoff e riprova nell'applicazione.
- RetryableConflictException
-
Si verifica (HTTP 409) quando una seconda operazione ha come obiettivo una sessione mentre il servizio esegue il provisioning o la disattiva di tale sessione. Il messaggio è.
Session operation in progress, please retryQuesta condizione è transitoria e riprovabile. La finestra è breve e le sessioni già in esecuzione non sono interessate. Riprova con un breve backoff esponenziale. Gli AWS SDK riprovano automaticamente questa eccezione quando i tentativi predefiniti sono abilitati. Se hai disabilitato i tentativi o chiami direttamente l'API, riprova tu stesso.
Implementa una corretta gestione degli errori nella tua applicazione per fornire una migliore esperienza utente e risolvere i problemi in modo efficace.
Best practice
Segui queste best practice quando utilizzi l'InvokeAgentRuntimeoperazione:
-
Convalida che il campo del prompt sia una stringa nel punto di ingresso dell'agente: il payload arriva come JSON analizzato, quindi il
promptcampo può essere di qualsiasi tipo JSON (stringa, elenco, oggetto). Se un valore non stringa contenente un blocco ditoolUsecontenuto raggiunge il framework dell'agente, il framework potrebbe eseguire direttamente lo strumento indicato. Il ragionamento del modello e la valutazione del guardrail vengono aggirati. Applica sempreisinstance(prompt, str)prima di passare l'input all'agente. Per ulteriori informazioni, consulta le best practice di sicurezza per AgentCore Runtime. -
Usa la gestione delle sessioni per mantenere il contesto della conversazione per una migliore esperienza utente.
-
Elabora le risposte in streaming in modo incrementale per fornire feedback in tempo reale agli utenti.
-
Implementa una corretta gestione degli errori e una logica di riprova per un'applicazione robusta.
-
Considerate i limiti delle dimensioni del payload (100 MB) quando inviate richieste, in particolare per i contenuti multimodali.
-
Utilizzate i qualificatori appropriati per scegliere come target versioni o endpoint specifici degli agenti.
-
Implementa meccanismi di autenticazione quando necessario utilizzando token al portatore.
-
InvokeAgentRuntimeCommandUtilizzalo per operazioni deterministiche (test, git, build) invece di instradarle tramite il LLM dell'agente. Vedi Eseguire i comandi della shell nelle sessioni di Runtime. AgentCore