Den Kontext der Agentensitzung 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.

Den Kontext der Agentensitzung steuern

Um den Sitzungskontext besser kontrollieren zu können, können Sie den SessionStateObjekt in Ihrem Agenten. Die SessionStateDas Objekt enthält Informationen, die über Runden hinweg beibehalten werden können (separat) InvokeAgentAnfrage und Antworten). Sie können diese Informationen verwenden, um dem Agenten während Benutzergesprächen einen Konversationskontext zur Verfügung zu stellen.

Das allgemeine Format der SessionStateObjekt sieht wie folgt aus.

{ "sessionAttributes": { "<attributeName1>": "<attributeValue1>", "<attributeName2>": "<attributeValue2>", ... }, "conversationHistory": { "messages": [{ "role": "user | assistant", "content": [{ "text": "string" }] }], }, "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 in der SessionStateObjekt.

Sitzungsattribute für Sitzung und Eingabeaufforderung

Mit Amazon Bedrock Agents 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 sessionId Person gestellt werden, gehören zu derselben Sitzung, solange das Sitzungszeitlimit (dasidleSessionTTLinSeconds) nicht überschritten wurde.

  • conversationHistory— Akzeptiert für die Zusammenarbeit mit mehreren Agenten zusätzlichen Kontext für die Verarbeitung von Laufzeitanfragen, wenn diese Option für einen Collaborator-Agenten aktiviert conversationalHistorySharing ist. Standardmäßig wird dieses Feld automatisch vom Supervisor-Agenten erstellt, wenn der Collaborator-Agent aufgerufen wird. Sie können dieses Feld optional verwenden, um zusätzlichen Kontext bereitzustellen. Weitere Informationen finden Sie unter Nutzen Sie die Zusammenarbeit mit mehreren Agenten mit Amazon Bedrock Agents .

  • promptSessionAttributes— Attribute, die über einen einzigen Spielzug (eine Runde) bestehen bleiben InvokeAgentAnruf). 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 Sitzungsstatusattribute 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.

  • Während der Laufzeit, wenn Sie eine senden InvokeAgentBitte fügen Sie ein sessionState Objekt in den Anforderungstext 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. 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 <request> zu speichern.

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

    { "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 APIAktionsschema 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 zu senden InvokeAgentAnfrage 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 zurückgibt InvokeAgentAntwort, Sie können die Ergebnisse des Aufrufs der Aktionsgruppe in einem nachfolgenden sessionState InvokeAgentAntwort, indem Sie die folgenden Felder einbeziehen:

  • invocationId— Diese ID muss mit der im ReturnControlPayloadObjekt invocationId zurückgegebenen ID im returnControl Feld von übereinstimmen InvokeAgentAntwort.

  • returnControlInvocationResults— Beinhaltet Ergebnisse, die Sie durch das Aufrufen der Aktion erhalten. Sie können Ihre Anwendung so einrichten, dass das ReturnControlPayloadObjekt zur Ausführung einer API Anforderung oder zum Aufrufen einer von Ihnen definierten Funktion übergeben wird. Sie können dann die Ergebnisse dieser Aktion hier angeben. Jedes Mitglied der returnControlInvocationResults Liste ist eines der folgenden:

    • Ein ApiResultObjekt, das den API Vorgang enthält, von dem der Agent vorhergesagt hat, dass er in einem früheren Vorgang aufgerufen werden sollte InvokeAgentReihenfolge und die Ergebnisse des Aufrufs der Aktion in Ihren Systemen. Das allgemeine Format lautet wie folgt:

      { "actionGroup": "string", "agentId" : :string", "apiPath": "string", "confirmationState" : "CONFIRM | DENY", "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 früheren Version aufgerufen werden sollte InvokeAgentSequenz und die Ergebnisse des Aufrufs der Aktion in Ihren Systemen. Das allgemeine Format lautet wie folgt:

      { "actionGroup": "string", "agentId" : :string", "confirmationState" : "CONFIRM | DENY", "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 unterAbfragen und Antwortgenerierung konfigurieren und anpassen):

  • 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.