Sitzungskontext steuern - 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.

Sitzungskontext steuern

Um den Sitzungskontext besser kontrollieren zu können, können Sie das SessionStateObjekt in Ihrem Agenten ändern. Das SessionStateObjekt enthält Informationen, die abwechselnd verwaltet werden können (separate InvokeAgentAnfrage und Antwort). Sie können diese Informationen verwenden, um dem Agenten während Benutzergesprächen einen Konversationskontext zur Verfügung zu stellen.

Das allgemeine Format des SessionStateObjekts lautet wie folgt.

{ "sessionAttributes": { "<attributeName1>": "<attributeValue1>", "<attributeName2>": "<attributeValue2>", ... }, "promptSessionAttributes": { "<attributeName3>": "<attributeValue3>", "<attributeName4>": "<attributeValue4>", ... }, "invocationId": "string", "returnControlInvocationResults": [ ApiResult or FunctionResult, ... ], "knowledgeBases": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "overrideSearchType": "HYBRID | SEMANTIC", "numberOfResults": int, "filter": RetrievalFilter object } } }, ... ] }

Wählen Sie ein Thema aus, um mehr über Felder im SessionStateObjekt zu erfahren.

Sitzungsattribute für Sitzung und Eingabeaufforderung

Mit Agents for Amazon Bedrock können Sie die folgenden Typen von kontextuellen Attributen definieren, die über Teile einer Sitzung hinweg bestehen bleiben:

  • SessionAttributes — Attribute, die während einer Sitzung zwischen einem Benutzer und einem Agenten bestehen bleiben. Alle InvokeAgentAnfragen, die mit derselben Anfrage gestellt werden, sessionId gehören zu derselben Sitzung, sofern das Sitzungszeitlimit (dasidleSessionTTLinSeconds) nicht überschritten wurde.

  • promptSessionAttributes— Attribute, die über einen einzigen Spielzug (einen InvokeAgentAnruf) hinweg bestehen bleiben. Sie können den Platzhalter $prompt_session_attributes$ verwenden, wenn Sie die Orchestrierungs-Base-Prompt-Vorlage bearbeiten. Dieser Platzhalter wird zur Laufzeit mit den Attributen gefüllt, die Sie in dem Feld angeben. promptSessionAttributes

Sie können die Attribute für den Sitzungsstatus in zwei verschiedenen Schritten definieren:

  • Wenn Sie eine Aktionsgruppe einrichten und die Lambda-Funktion schreiben, schließen Sie sessionAttributes oder promptSessionAttributes in das Antwortereignis ein, das an Amazon Bedrock zurückgegeben wird.

  • Fügen Sie während der Laufzeit, wenn Sie eine InvokeAgentAnfrage senden, ein sessionState Objekt in den Anfragetext ein, um die Attribute des Sitzungsstatus während der Konversation dynamisch zu ändern.

Beispiel für ein Sitzungsattribut

Im folgenden Beispiel wird ein Sitzungsattribut verwendet, um eine Nachricht an Ihren Benutzer zu personalisieren.

  1. <request>Schreiben Sie Ihren Anwendungscode, um den Benutzer aufzufordern, seinen Vornamen und die Anfrage, die er an den Agenten stellen möchte, anzugeben und die Antworten als Variablen <first_name>und zu speichern.

  2. Schreiben Sie Ihren Anwendungscode, um eine InvokeAgentAnfrage mit dem folgenden Text zu senden:

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. Wenn ein Benutzer Ihre Anwendung verwendet und seinen Vornamen angibt, sendet Ihr Code den Vornamen als Sitzungsattribut und der Agent speichert seinen Vornamen für die Dauer der Sitzung.

  4. Da Sitzungsattribute im Lambda-Eingabeereignis gesendet werden, können Sie in einer Lambda-Funktion für eine Aktionsgruppe auf diese Sitzungsattribute verweisen. Wenn das Aktions-API-Schema beispielsweise einen Vornamen im Anforderungstext erfordert, können Sie beim Schreiben der Lambda-Funktion für eine Aktionsgruppe das firstName Sitzungsattribut verwenden, um dieses Feld beim Senden der API-Anfrage automatisch auszufüllen.

Beispiel für ein Sitzungsattribut „Aufforderung“

Im folgenden allgemeinen Beispiel wird ein Prompt-Sitzungsattribut verwendet, um dem Agenten einen zeitlichen Kontext zu bieten.

  1. Schreiben Sie Ihren Anwendungscode, um die Benutzeranforderung in einer Variablen namens zu speichern<request>.

  2. Schreiben Sie Ihren Anwendungscode, um die Zeitzone am Standort des Benutzers abzurufen, wenn der Benutzer ein Wort verwendet, das auf eine relative Zeit (z. B. „morgen“) hinweist<request>, und speichern Sie ihn in einer Variablen namens<timezone>.

  3. Schreiben Sie Ihre Bewerbung, um eine InvokeAgentAnfrage zu senden, mit dem folgenden Text:

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. Wenn ein Benutzer ein Wort verwendet, das die relative Zeit angibt, sendet Ihr Code das Sitzungsattribut „timeZoneEingabeaufforderung“ und der Agent speichert es für die Dauer des Zuges.

  5. Wenn ein Benutzer beispielsweise fragtI need to book a hotel for tomorrow, sendet Ihr Code die Zeitzone des Benutzers an den Agenten, und der Agent kann das genaue Datum bestimmen, auf das sich „morgen“ bezieht.

  6. Das Sitzungsattribut prompt kann in den folgenden Schritten verwendet werden.

Ergebnisse des Aufrufs von Aktionsgruppen

Wenn Sie eine Aktionsgruppe so konfiguriert haben, dass sie die Kontrolle in einer InvokeAgentAntwort zurückgibt, können Sie die Ergebnisse des Aufrufs der Aktionsgruppe in sessionState einer nachfolgenden InvokeAgentAntwort senden, indem Sie die folgenden Felder angeben:

  • invocationId— Diese ID muss mit der ID übereinstimmen, die im ReturnControlPayloadObjekt im returnControl Feld der InvokeAgentAntwort invocationId zurückgegeben wurde.

  • returnControlInvocationResults— Schließt Ergebnisse ein, die Sie beim Aufrufen der Aktion erhalten. Sie können Ihre Anwendung so einrichten, dass das ReturnControlPayloadObjekt übergeben wird, um eine API-Anfrage auszuführen oder eine von Ihnen definierte Funktion aufzurufen. Sie können dann die Ergebnisse dieser Aktion hier angeben. Jedes Mitglied der returnControlInvocationResults Liste ist eines der folgenden:

    • Ein ApiResultObjekt, das die API-Operation enthält, von der der Agent vorhergesagt hat, dass sie in einer vorherigen InvokeAgentSequenz aufgerufen werden sollte, sowie die Ergebnisse des Aufrufs der Aktion in Ihren Systemen. Das allgemeine Format lautet wie folgt:

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • Ein FunctionResultObjekt, das die Funktion enthält, von der der Agent vorhergesagt hat, dass sie in einer vorherigen InvokeAgentSequenz aufgerufen werden sollte, sowie die Ergebnisse des Aufrufs der Aktion in Ihren Systemen. Das allgemeine Format lautet wie folgt:

      { "actionGroup": "string", "function": "string", "responseBody": { "TEXT": { "body": "string" } } }

Die bereitgestellten Ergebnisse können als Kontext für die weitere Orchestrierung verwendet, zur Nachbearbeitung gesendet werden, damit der Agent eine Antwort formatieren kann, oder sie können direkt in der Antwort des Agenten an den Benutzer verwendet werden.

Konfigurationen für den Abruf der Wissensdatenbank

Um die Abrufkonfiguration von Wissensdatenbanken zu ändern, die mit Ihrem Agenten verknüpft sind, fügen Sie das knowledgeBaseConfigurations Feld mit einer Liste von Konfigurationen für jede Wissensdatenbank hinzu, deren Konfigurationen Sie angeben möchten. Geben Sie knowledgeBaseId an. In dem vectorSearchConfiguration Feld können Sie die folgenden Abfragekonfigurationen angeben (weitere Informationen zu diesen Konfigurationen finden Sie unterKonfigurationen abfragen):

  • Suchtyp — Gibt an, ob die Wissensdatenbank nur nach Vektoreinbettungen (SEMANTIC) oder sowohl nach Vektoreinbettungen als auch nach Rohtext () sucht. HYBRID Verwenden Sie das Feld. overrideSearchType

  • Maximale Anzahl von abgerufenen Ergebnissen — Die maximale Anzahl von Ergebnissen aus dem Abfrageabruf, die in der Antwort verwendet werden sollen.

  • Metadaten und Filterung — Filter, die Sie konfigurieren können, um die Ergebnisse auf der Grundlage von Metadatenattributen in den Datenquellendateien zu filtern.