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.
Steuern des Kontexts von Agentensitzungen
Zur besseren Steuerung von Sitzungskontext können Sie das SessionState-Objekt in Ihrem Agenten ändern. Das SessionState-Objekt enthält Informationen, die abwechselnd verwaltet werden können (separate InvokeAgent-Anfrage und -Antworten). Anhand dieser Informationen können Sie dem Agenten während Benutzerkonversationen einen Konversationskontext zur Verfügung zu stellen.
Das allgemeine Format des SessionState-Objekts sieht folgendermaßen 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 im SessionState-Objekt zu erfahren.
Themen
Sitzungs- und Prompt-Sitzungsattribute
Mit Agenten für 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 InvokeAgent-Anfragen, die mit derselben
sessionIdgesendet werden, gehören zur selben Sitzung, sofern das Sitzungszeitlimit (idleSessionTTLinSeconds) nicht überschritten wurde. -
conversationHistory – Akzeptiert für die Zusammenarbeit mehrerer Agenten zusätzlichen Kontext für die Verarbeitung von Laufzeitanforderungen, sofern
conversationalHistorySharingfür einen Partner-Agenten aktiviert ist. Standardmäßig wird dieses Feld automatisch vom Supervisor-Agenten erstellt, wenn der Partner-Agent aufgerufen wird. Sie können dieses Feld optional verwenden, um zusätzlichen Kontext bereitzustellen. Weitere Informationen finden Sie unter Verwenden der Zusammenarbeit mehrerer Agenten mit Agenten für Amazon Bedrock . -
promptSessionAttributes – Attribute, die während einer einzigen Runde (ein InvokeAgent-Aufruf) bestehen bleiben. Sie können den Platzhalter „$prompt_session_attributes$“ verwenden, wenn Sie die Basis-Prompt-Vorlage für Orchestrierung bearbeiten. Dieser Platzhalter wird zur Laufzeit mit den Attributen gefüllt, die Sie im Feld
promptSessionAttributesangeben.
Sie können die Sitzungsstatusattribute in zwei verschiedenen Schritten definieren:
-
Wenn Sie eine Aktionsgruppe einrichten und die Lambda-Funktion schreiben, schließen Sie
sessionAttributesoderpromptSessionAttributesin das Antwortereignis ein, das an Amazon Bedrock zurückgegeben wird. -
Fügen Sie während der Laufzeit, wenn Sie eine InvokeAgent-Anfrage senden, ein
sessionState-Objekt in den Anforderungstext ein, um die Sitzungsstatusattribute 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.
-
Schreiben Sie Ihren Anwendungscode so, dass der Benutzer aufgefordert wird, seinen Vornamen und die Anforderung, die er an den Agenten richten möchte, anzugeben, und speichern Sie die Antworten als die Variablen
<first_name>und<request>. -
Schreiben Sie Ihren Anwendungscode, um eine InvokeAgent-Anfrage mit dem folgenden Text zu senden:
{ "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } } -
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.
-
Da Sitzungsattribute im Lambda-Eingabeereignis gesendet werden, können Sie in einer Lambda-Funktion für eine Aktionsgruppe auf diese Sitzungsattribute verweisen. Wenn das API-Schema der Aktion beispielsweise einen Vornamen im Anforderungstext erfordert, können Sie beim Schreiben der Lambda-Funktion für eine Aktionsgruppe das Sitzungsattribut
firstNameverwenden, um dieses Feld beim Senden der API-Anfrage automatisch auszufüllen.
Beispiel für ein Prompt-Sitzungsattribut
Im folgenden allgemeinen Beispiel wird ein Prompt-Sitzungsattribut verwendet, um dem Agenten einen zeitlichen Kontext zur Verfügung zu stellen.
-
Schreiben Sie Ihren Anwendungscode, um die Benutzeranforderung in einer Variablen namens
<request>zu speichern. -
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“) in der
<request>hinweist, und speichern Sie ihn in einer Variablen namens<timezone>. -
Schreiben Sie Ihren Anwendungscode, um eine InvokeAgent-Anfrage mit dem folgenden Text zu senden:
{ "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } } -
Wenn ein Benutzer ein Wort verwendet, das die relative Zeit angibt, sendet Ihr Code das Prompt-Sitzungsattribut
timeZoneund der Agent speichert es für die Dauer der Runde. -
Wenn ein Benutzer beispielsweise die Frage
I need to book a hotel for tomorrowstellt, sendet Ihr Code die Zeitzone des Benutzers an den Agenten, und der Agent kann das genaue Datum bestimmen, auf das sich „morgen“ bezieht. -
Das Prompt-Sitzungsattribut kann in den folgenden Schritten verwendet werden.
-
Wenn Sie den Platzhalter „$prompt_session_attributes$“ in die Vorlage für die Prompt-Vorlage für Orchestrierung aufnehmen, enthält die Orchestrierungsaufforderung für das FM die Prompt-Sitzungsattribute.
-
Prompt-Sitzungsattribute werden im Lambda-Eingabeereignis gesendet und können zum Füllen von API-Anfragen verwendet oder in der Antwort zurückgegeben werden.
-
Ergebnisse des Aufrufs von Aktionsgruppen
Wenn Sie eine Aktionsgruppe so konfiguriert haben, dass sie die Steuerung in einer InvokeAgent-Antwort zurückgibt, können Sie die Ergebnisse des Aufrufs der Aktionsgruppe im sessionState einer nachfolgenden InvokeAgent-Antwort senden, indem Sie die folgenden Felder angeben:
-
invocationId– Diese ID muss mit der im ReturnControlPayload-Objekt zurückgegebeneninvocationIdimreturnControl-Feld der InvokeAgent-Antwort übereinstimmen. -
returnControlInvocationResults– Schließt Ergebnisse ein, die Sie beim Aufrufen der Aktion erhalten. Sie können Ihre Anwendung so einrichten, dass das ReturnControlPayload-Objekt übergeben wird, um eine API-Anfrage auszuführen oder eine von Ihnen definierte Funktion aufzurufen. Sie können die Ergebnisse dieser Aktion anschließend hier bereitstellen. Jedes Mitglied derreturnControlInvocationResults-Liste ist eines der folgenden:-
Ein ApiResult-Objekt, das die API-Operation enthält, von der der Agent vorhergesagt hat, dass sie in einer vorherigen InvokeAgent-Sequenz aufgerufen werden sollte, sowie 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 FunctionResult-Objekt, das die Funktion enthält, von der der Agent vorhergesagt hat, dass sie in einer vorherigen InvokeAgent-Sequenz aufgerufen werden sollte, sowie 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 direkt in der Antwort des Agenten an den Benutzer verwendet werden.
Konfigurationen für den Abruf aus der Wissensdatenbank
Um die Abrufkonfiguration von Wissensdatenbanken zu ändern, die mit Ihrem Agenten verknüpft sind, fügen Sie das Feld knowledgeBaseConfigurations mit einer Liste von Konfigurationen für jede Wissensdatenbank hinzu, deren Konfigurationen Sie angeben möchten. Geben Sie die knowledgeBaseId an. Im Feld vectorSearchConfiguration können Sie die folgenden Abfragekonfigurationen angeben (weitere Informationen zu diesen Konfigurationen finden Sie unter So konfigurieren Sie Abfragen und die Antwortgenerierung und passen diese an):
-
Suchtyp – Gibt an, ob die Wissensdatenbank nur nach Vektoreinbettungen (
SEMANTIC) oder sowohl nach Vektoreinbettungen als auch nach Rohtext (HYBRID) sucht. Verwenden Sie das FeldoverrideSearchType. -
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.