제어 세션 컨텍스트 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

제어 세션 컨텍스트

세션 컨텍스트를 더 잘 제어하기 위해 에이전트에서 SessionState개체를 수정할 수 있습니다. SessionState개체에는 차례에 걸쳐 유지 관리할 수 있는 정보 (별도의 InvokeAgent요청 및 응답) 가 포함되어 있습니다. 이 정보를 사용하여 사용자 대화 중에 상담원에게 대화 상황을 제공할 수 있습니다.

SessionState개체의 일반적인 형식은 다음과 같습니다.

{ "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 } } }, ... ] }

주제를 선택하여 SessionState개체의 필드에 대해 자세히 알아보십시오.

세션 및 프롬프트 세션 속성

Amazon Bedrock용 에이전트를 사용하면 세션의 일부에 걸쳐 지속되는 다음과 같은 유형의 컨텍스트 속성을 정의할 수 있습니다.

세션 상태 속성은 다음과 같은 두 단계로 정의할 수 있습니다.

  • 작업 그룹을 설정하고 Lambda 함수를 작성할 때는 Amazon Bedrock에 반환되는 응답 이벤트에 promptSessionAttributes 또는 를 sessionAttributes 포함하십시오.

  • 런타임 중에 요청을 보낼 때 InvokeAgent요청 본문에 sessionState 객체를 포함시켜 대화 도중에 세션 상태 속성을 동적으로 변경하십시오.

세션 속성 예제

다음 예제에서는 세션 속성을 사용하여 사용자에게 보내는 메시지를 개인화합니다.

  1. <first_name><request>애플리케이션 코드를 작성하여 사용자에게 이름과 상담원에게 하고 싶은 요청을 제공하고 답변을 변수로 저장하도록 요청하세요.

  2. 신청 코드를 작성하여 다음 InvokeAgent본문과 함께 요청을 보내십시오.

    { "inputText": "<request>", "sessionState": { "sessionAttributes": { "firstName": "<first_name>" } } }
  3. 사용자가 애플리케이션을 사용하고 이름을 입력하면 코드가 세션 속성으로 이름을 보내고 에이전트는 세션 기간 동안 이름을 저장합니다.

  4. 세션 속성은 Lambda 입력 이벤트에서 전송되므로 작업 그룹의 Lambda 함수에서 이러한 세션 속성을 참조할 수 있습니다. 예를 들어, 작업 API 스키마가 요청 본문의 이름을 요구하는 경우, API 요청을 전송할 때 해당 필드를 자동으로 채우도록 작업 그룹에 대한 Lambda 함수를 작성할 때 firstName 세션 속성을 사용할 수 있습니다.

프롬프트 세션 속성 예제

다음 일반 예제에서는 프롬프트 세션 속성을 사용하여 에이전트에 임시 컨텍스트를 제공합니다.

  1. <request>라는 변수에 사용자 요청을 저장하는 애플리케이션 코드를 작성하십시오.

  2. 사용자가 에서 상대 시간 (예: “내일”) 을 나타내는 단어를 사용하는 경우 사용자 위치의 시간대를 검색하도록 애플리케이션 코드를 작성하고 <request>라는 변수에 저장합니다<timezone>.

  3. 다음 본문과 함께 InvokeAgent요청을 보내도록 애플리케이션을 작성하십시오.

    { "inputText": "<request>", "sessionState": { "promptSessionAttributes": { "timeZone": "<timezone>" } } }
  4. 사용자가 상대 시간을 나타내는 단어를 사용하는 경우 코드는 timeZone prompt 세션 속성을 전송하고 에이전트는 기간 동안 이를 저장합니다.

  5. 예를 들어 사용자가 I need to book a hotel for tomorrow 요청하면 코드가 사용자의 시간대를 상담원에게 보내고 상담원은 “내일”이 가리키는 정확한 날짜를 확인할 수 있습니다.

  6. 프롬프트 세션 속성은 다음 단계에서 사용할 수 있습니다.

작업 그룹 호출 결과

응답에서 제어를 반환하도록 작업 그룹을 구성한 경우 다음 필드를 포함하여 후속 InvokeAgentInvokeAgent응답에 작업 그룹을 호출한 결과를 보낼 수 있습니다. sessionState

  • invocationId— 이 ID는 InvokeAgent응답 returnControl 필드의 ReturnControlPayload개체에 invocationId 반환된 ID와 일치해야 합니다.

  • returnControlInvocationResults— 작업을 호출하여 얻은 결과를 포함합니다. ReturnControlPayload객체를 전달하여 API 요청을 수행하거나 정의한 함수를 호출하도록 애플리케이션을 설정할 수 있습니다. 그런 다음 여기에 해당 작업의 결과를 제공할 수 있습니다. returnControlInvocationResults목록의 각 구성원은 다음 중 하나입니다.

    • 에이전트가 이전 InvokeAgent시퀀스에서 호출해야 한다고 예측한 API 작업과 시스템에서 해당 작업을 호출한 결과를 포함하는 ApiResult객체입니다. 일반적인 형식은 다음과 같습니다.

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": integer, "responseBody": { "TEXT": { "body": "string" } } }
    • 에이전트가 이전 InvokeAgent시퀀스에서 호출해야 한다고 예측한 함수와 시스템에서 작업을 호출한 결과를 포함하는 FunctionResult객체입니다. 일반적인 형식은 다음과 같습니다.

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

제공된 결과는 추가 조정을 위한 컨텍스트로 사용하거나, 에이전트가 응답 형식을 지정할 수 있도록 사후 처리에 보내거나, 에이전트의 사용자 응답에 직접 사용할 수 있습니다.

지식 기반 검색 구성

에이전트에 연결된 지식베이스의 검색 구성을 수정하려면 구성을 지정하려는 각 지식베이스의 구성 목록이 있는 knowledgeBaseConfigurations 필드를 포함하세요. knowledgeBaseId를 지정합니다. vectorSearchConfiguration필드에서 다음과 같은 쿼리 구성을 지정할 수 있습니다 (이러한 구성에 대한 자세한 내용은 참조쿼리 구성).

  • 검색 유형 — 지식 베이스에서 벡터 임베딩만 검색할지 (SEMANTIC) 벡터 임베딩과 원시 텍스트 (HYBRID) 를 모두 검색할지 여부 필드를 사용하세요. overrideSearchType

  • 검색된 결과 최대 수 — 응답에 사용할 쿼리 검색 결과의 최대 수입니다.

  • 메타데이터 및 필터링 - 데이터 소스 파일의 메타데이터 속성을 기반으로 결과를 필터링하도록 구성할 수 있는 필터입니다.