

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
<a name="agents-invoke-agent"></a>

Utilizza l’agente in un’applicazione effettuando una richiesta [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) con un [endpoint di runtime Agent per Amazon Bedrock](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt). 

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](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StreamingConfigurations.html)). 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.](agents-permissions.md#agents-permissions-identity).

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
<a name="invoke-agent-example"></a>

L’esempio seguente Python mostra come chiamare l’operazione [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) e visualizzare l’output dell’agente, nonché tutte le informazioni di [traccia](trace-events.md) generate dalla chiamata. 

**Per invocare un agente**

1. Crea un agente seguendo le istruzioni fornite in [Creazione e configurazione manuale dell’agente](agents-create.md). 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](agents-view.md).

1. Crea un alias per l’agente seguendo le istruzioni fornite in [Creazione di un alias per l’agente](deploy-agent-proc.md). 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](agents-alias-view.md).

1. Eseguire il seguente codice. Aggiorna il valore di `agent_id` all’ID dell’agente e il valore di `alias_id` all’ID dell’alias dell’agente. Per trasmettere in streaming la risposta dell’agente, modifica il valore di `streamFinalResponse` in `True`. Puoi inoltre modificare l’intervallo del guardrail modificando il valore di `applyGuardrailInterval`.

   ```
   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)})
   ```