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à.
Invocazione di un agente dalla propria applicazione
Utilizza l’agente in un’applicazione effettuando una richiesta InvokeAgent con un endpoint di runtime Agent per Amazon Bedrock.
Per impostazione predefinita, la risposta di InvokeAgent include un blocco che contiene la risposta completa dell’agente, il cui completamento può richiedere un po’ di tempo. In alternativa, puoi configurare InvokeAgent in modo che esegua lo streaming della risposta in più blocchi di minori dimensioni. Questo riduce la latenza della risposta iniziale dell’agente.
Streaming delle risposte
Facoltativamente, è possibile abilitare lo streaming della risposta impostando streamFinalResponse su true nelle configurazioni per lo streaming (StreamingConfigurations). Il flusso di risposta contiene più eventi con blocchi per ogni parte della risposta in ordine.
Per lo streaming delle risposte, assicurati che il ruolo di esecuzione dell’agente includa l’autorizzazione bedrock:InvokeModelWithResponseStream per il modello di agente configurato. Per ulteriori informazioni, consulta Autorizzazioni basate sull’identità per il ruolo di servizio degli agenti..
Se l’agente è configurato con un guardrail, puoi anche specificare applyGuardrailInterval nel campo StreamingConfigurations, per controllare con quale frequenza viene effettuata una chiamata ApplyGuardrail sui caratteri di risposta in uscita (ad esempio, ogni 50 caratteri).
Per impostazione predefinita, l’intervallo del guardrail è impostato su 50 caratteri. Se specifichi un intervallo maggiore, la risposta verrà generata in blocchi più grandi con un minor numero di chiamate ApplyGuardrail. Gli esempi seguenti mostrano la risposta generata per la stringa di input Hello, I am an agent.
Esempio di risposta in blocchi: intervallo impostato su 3 caratteri
'Hel', 'lo, ', 'I am', ' an', ' Age', 'nt'
Ogni blocco, tranne l’ultimo, contiene almeno 3 caratteri.
Esempio di risposta in blocchi: intervallo impostato su 20 o più caratteri
'Hello, I am an Agent'
Invocazione di un agente
L’esempio seguente Python mostra come chiamare l’operazione InvokeAgent e visualizzare l’output dell’agente, nonché tutte le informazioni di traccia generate dalla chiamata.
Per invocare un agente
-
Crea un agente seguendo le istruzioni fornite in Creazione e configurazione manuale dell’agente. Prendi nota dell’ID dell’agente. Se necessario, puoi ottenere l’ID in un secondo momento. Per ulteriori informazioni, consulta Visualizzazione di informazioni su un agente.
Crea un alias per l’agente seguendo le istruzioni fornite in Creazione di un alias per l’agente. Prendi nota dell’ID dell’alias. Se necessario, puoi ottenere l’ID in un secondo momento. Per ulteriori informazioni, consulta Visualizzazione di informazioni sugli alias degli agenti in Amazon Bedrock.
Eseguire il seguente codice. Aggiorna il valore di
agent_idall’ID dell’agente e il valore dialias_idall’ID dell’alias dell’agente. Per trasmettere in streaming la risposta dell’agente, modifica il valore distreamFinalResponseinTrue. Puoi inoltre modificare l’intervallo del guardrail modificando il valore diapplyGuardrailInterval.import boto3 import logging from botocore.exceptions import ClientError logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def invoke_agent(client, agent_id, alias_id, prompt, session_id): response = client.invoke_agent( agentId=agent_id, agentAliasId=alias_id, enableTrace=True, sessionId = session_id, inputText=prompt, streamingConfigurations = { "applyGuardrailInterval" :20, "streamFinalResponse" :False} ) completion = "" for event in response.get("completion"): #Collect agent output. if 'chunk' in event: chunk = event["chunk"] completion += chunk["bytes"].decode() # Log trace output. if 'trace' in event: trace_event = event.get("trace") trace = trace_event['trace'] for key, value in trace.items(): logging.info("%s: %s",key,value) print(f"Agent response: {completion}") if __name__ == "__main__": client=boto3.client( service_name="bedrock-agent-runtime" ) agent_id = "AGENT_ID" alias_id = "ALIAS_ID" session_id = "MY_SESSION_ID" prompt = "Prompt to send to agent" try: invoke_agent(client, agent_id, alias_id, prompt, session_id) except ClientError as e: print(f"Client error: {str(e)}") logger.error("Client error: %s", {str(e)})