Aufrufen eines Agenten über Ihre Anwendung - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aufrufen eines Agenten über Ihre Anwendung

Verwenden Sie Ihren Agenten in der Anwendung, indem Sie eine InvokeAgent-Anfrage mit einem Runtime-Endpunkt von Agenten für Amazon Bedrock senden.

Standardmäßig enthält die Antwort von InvokeAgent einen Abschnitt mit der vollständigen Antwort des Agenten, was einige Zeit in Anspruch nehmen kann. Alternativ können Sie InvokeAgent so konfigurieren, dass die Antwort in mehreren kleineren Abschnitten gestreamt wird. Dadurch wird die Latenz der ersten Antwort des Agenten verringert.

Streaming-Antworten

Sie können optional das Streaming der Antwort aktivieren, indem Sie streamFinalResponse in Streaming-Konfigurationen (StreamingConfigurations) auf true festlegen. Der Antwort-Stream enthält mehrere Ereignisse mit Abschnitten für jeden Teil der Antwort in der richtigen Reihenfolge.

Stellen Sie zum Streamen von Antworten sicher, dass die Ausführungsrolle des Agenten die Berechtigung bedrock:InvokeModelWithResponseStream für das konfigurierte Agentenmodell umfasst. Weitere Informationen finden Sie unter Identitätsbasierte Berechtigungen für die Agenten-Servicerolle.

Wenn Ihr Agent mit einem Integritätsschutz konfiguriert ist, können Sie auch das applyGuardrailInterval in den StreamingConfigurations angeben, um zu steuern, wie oft ein ApplyGuardrail-Anruf bei ausgehenden Antwortzeichen getätigt wird (z. B. alle 50 Zeichen) erfolgt.

Standardmäßig ist das Intervall für den Integritätsschutz auf 50 Zeichen festgelegt. Wenn ein größeres Intervall angegeben wird, wird die Antwort in größeren Abschnitten mit weniger ApplyGuardrail-Aufrufen generiert. Die folgenden Beispiele zeigen die Antwort, die für die Eingabezeichenfolge Hallo, ich bin ein Agent generiert wurde.

Beispiel für eine Antwort in Blöcken: Das Intervall ist auf 3 Zeichen festgelegt

'Hel', 'lo, ', 'I am', ' an', ' Age', 'nt'

Jeder Block weist mindestens 3 Zeichen auf, mit Ausnahme des letzten Blocks.

Beispiel für eine Antwort in Blöcken: Das Intervall ist auf mindestens 20 Zeichen festgelegt

'Hello, I am an Agent'

Aufrufen eines Agenten

Das folgende Python-Beispiel zeigt, wie der Vorgang InvokeAgent aufgerufen wird und die Ausgabe des Agenten sowie alle durch den Aufruf generierten Trace-Informationen angezeigt werden.

Aufrufen eines Agenten
  1. Erstellen Sie einen Agenten, indem Sie die Anleitungen unter Manuelles Erstellen und Konfigurieren von Agenten befolgen. Notieren Sie sich die ID für den Agenten. Bei Bedarf können Sie die ID später abrufen. Weitere Informationen finden Sie unter Anzeigen von Informationen über einen Agenten.

  2. Erstellen Sie einen Alias für den Agenten, indem Sie die Anleitungen unter Erstellen eines Alias für einen Agenten befolgen. Notieren Sie sich die ID des Alias. Bei Bedarf können Sie die ID später abrufen. Weitere Informationen finden Sie unter Anzeigen von Informationen zu Aliasen von Agenten in Amazon Bedrock.

  3. Führen Sie folgenden Code aus. Aktualisieren Sie den Wert von agent_id auf die ID Ihres Agenten und den Wert alias_id auf die Alias-ID des Agenten. Wenn Sie die Antwort des Agenten streamen möchten, ändern Sie den Wert von streamFinalResponse in True. Sie können das Intervall des Integritätsschutzes auch ändern, indem Sie den Wert von applyGuardrailInterval ändern.

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