Amazon Bedrock 에이전트가 사용자로부터 추출한 정보를 전송하도록 Lambda 함수를 구성합니다. - Amazon Bedrock

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

Amazon Bedrock 에이전트가 사용자로부터 추출한 정보를 전송하도록 Lambda 함수를 구성합니다.

Lambda 함수를 정의하여 작업 그룹의 비즈니스 로직을 프로그래밍할 수 있습니다. Amazon Bedrock 에이전트는 작업 그룹에서 호출해야 하는 API 작업을 결정한 후 관련 메타데이터와 함께 API 스키마의 정보를 입력 이벤트로 Lambda 함수에 전송합니다. 함수를 작성하려면 Lambda 함수의 다음 구성 요소를 이해해야 합니다.

  • 입력 이벤트 - 작업의 요청 본문에서 관련 메타데이터와 채워진 필드 또는 에이전트가 호출해야 한다고 판단하는 API 작업에 대한 함수 파라미터를 포함합니다.

  • 응답 - API 작업 또는 함수에서 반환된 응답 본문의 관련 메타데이터 및 채워진 필드를 포함합니다.

Lambda 함수를 작성하여 작업 그룹을 처리하는 방법을 정의하고 응답 반환 방법을 사용자 지정합니다. API 입력 이벤트에서 변수를 사용하여 함수를 정의하고 에이전트에 응답을 반환합니다.

참고

작업 그룹은 최대 11개의 API 작업을 포함할 수 있지만 Lambda 함수는 하나만 작성할 수 있습니다. Lambda 함수는 입력 이벤트를 수신하고 한 번에 API 하나의 작업에 대한 응답만 반환할 수 있으므로 호출될 수 있는 API 다양한 작업을 고려하여 함수를 작성해야 합니다.

에이전트가 Lambda 함수를 사용하려면 에이전트에 권한을 제공하는 리소스 기반 정책을 함수에 연결해야 합니다. 자세한 내용은 의 단계를 따르십시오. Amazon Bedrock이 작업 그룹 Lambda 함수를 호출하도록 허용하는 리소스 기반 정책 Lambda의 리소스 기반 정책에 대한 자세한 내용은 Lambda의 리소스 기반 정책 사용을 참조하십시오. AWS Lambda 개발자 안내서

작업 그룹을 생성하는 동안 함수를 정의하는 방법을 알아보려면 을 참조하십시오. Amazon Bedrock에서 에이전트에 작업 그룹 추가

Amazon Bedrock의 Lambda 입력 이벤트

Lambda 함수를 사용하는 작업 그룹이 간접적으로 호출되면 Amazon Bedrock은 다음의 일반 형식의 Lambda 입력 이벤트를 전송합니다. 입력 이벤트 필드를 사용하여 함수 내의 비즈니스 로직을 조작하여 작업을 성공적으로 수행하도록 Lambda 함수를 정의할 수 있습니다. Lambda 함수에 대한 자세한 내용은 의 이벤트 기반 호출을 참조하십시오. AWS Lambda 개발자 안내서

입력 이벤트 형식은 작업 그룹을 API 스키마로 정의했는지 아니면 함수 세부 정보로 정의했는지에 따라 달라집니다.

  • API스키마를 사용하여 작업 그룹을 정의한 경우 입력 이벤트 형식은 다음과 같습니다.

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { "content": { "<content_type>": { "properties": [ { "name": "string", "type": "string", "value": "string" }, ... ] } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }
  • 함수 세부 정보가 포함된 작업 그룹을 정의한 경우 입력 이벤트 형식은 다음과 같습니다.

    { "messageVersion": "1.0", "agent": { "name": "string", "id": "string", "alias": "string", "version": "string" }, "inputText": "string", "sessionId": "string", "actionGroup": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" } }

다음 목록은 입력 이벤트 필드를 설명합니다.

  • messageVersion - Lambda 함수로 이동하는 이벤트 데이터의 형식과 Lambda 함수에서 나올 것으로 예상되는 응답 형식을 식별하는 메시지 버전입니다. Amazon Bedrock은 버전 1.0만 지원합니다.

  • agent - 작업 그룹이 속한 에이전트의 이름, ID, 별칭 및 버전에 대한 정보가 들어 있습니다.

  • inputText - 대화 턴에 대한 사용자 입력입니다.

  • sessionId - 에이전트 세션의 고유 식별자입니다.

  • actionGroup - 작업 그룹의 이름입니다.

  • parameters - 객체 목록을 포함합니다. 각 개체에는 에 정의된 대로 API 작업의 매개 변수 이름, 유형 및 값이 포함됩니다.OpenAPI 스키마 또는 함수에서.

  • API스키마로 작업 그룹을 정의한 경우 입력 이벤트에는 다음 필드가 포함됩니다.

    • apiPath— 에 정의된 API 작업 경로 OpenAPI 스키마.

    • httpMethod— 에 정의된 API 작업 방법 OpenAPI 스키마.

    • requestBody— 에 정의된 대로 요청 본문과 해당 속성을 포함합니다.OpenAPI 작업 그룹의 스키마입니다.

  • 함수 세부 정보로 작업 그룹을 정의한 경우 입력 이벤트에는 다음 필드가 포함됩니다.

    • function— 작업 그룹의 함수 세부 정보에 정의된 함수 이름.

  • sessionAttributes세션 속성 및 해당 값을 포함합니다. 이러한 속성은 세션을 통해 저장되며 에이전트에 컨텍스트를 제공합니다.

  • promptSessionAttributes프롬프트 세션 속성 및 해당 값을 포함합니다. 이러한 속성은 차례에 걸쳐 저장되며 에이전트에게 컨텍스트를 제공합니다.

Amazon Bedrock에 대한 Lambda 응답 이벤트

Amazon Bedrock은 Lambda 함수에서 다음 형식과 일치하는 응답을 기대합니다. 응답은 API 작업에서 반환된 매개변수로 구성됩니다. 에이전트는 Lambda 함수의 응답을 사용하여 추가 오케스트레이션을 수행하거나 고객에게 응답을 반환하도록 지원할 수 있습니다.

참고

최대 Lambda 페이로드 응답 크기는 25KB입니다.

입력 이벤트 형식은 작업 그룹을 API 스키마로 정의했는지 아니면 함수 세부 정보로 정의했는지에 따라 달라집니다.

  • API스키마를 사용하여 작업 그룹을 정의한 경우 응답 형식은 다음과 같습니다.

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "httpStatusCode": number, "responseBody": { "<contentType>": { "body": "JSON-formatted string" } } }, "sessionAttributes": { "string": "string", ... }, "promptSessionAttributes": { "string": "string", ... }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "overrideSearchType": "HYBRID | SEMANTIC", "filter": RetrievalFilter object } } }, ... ] }
  • 함수 세부 정보가 포함된 작업 그룹을 정의한 경우 응답 형식은 다음과 같습니다.

    { "messageVersion": "1.0", "response": { "actionGroup": "string", "function": "string", "functionResponse": { "responseState": "FAILURE | REPROMPT", "responseBody": { "<functionContentType>": { "body": "JSON-formatted string" } } } }, "sessionAttributes": { "string": "string", }, "promptSessionAttributes": { "string": "string" }, "knowledgeBasesConfiguration": [ { "knowledgeBaseId": "string", "retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": int, "filter": { RetrievalFilter object } } } }, ... ] }

다음 목록은 응답 필드를 설명합니다.

  • messageVersion - Lambda 함수로 이동하는 이벤트 데이터의 형식과 Lambda 함수에서 나올 것으로 예상되는 응답 형식을 식별하는 메시지 버전입니다. Amazon Bedrock은 버전 1.0만 지원합니다.

  • response— API 응답에 대한 다음 정보가 들어 있습니다.

    • actionGroup - 작업 그룹의 이름입니다.

    • API스키마를 사용하여 작업 그룹을 정의한 경우 응답에 다음 필드가 있을 수 있습니다.

      • apiPath— API 작업에 대한 경로 (에 정의된 대로) OpenAPI 스키마.

      • httpMethod— 에 정의된 API 작업 방법 OpenAPI 스키마.

      • httpStatusCode— API 작업에서 반환된 HTTP 상태 코드입니다.

      • responseBody— 에 정의된 응답 본문을 포함합니다.OpenAPI 스키마.

    • 함수 세부 정보가 포함된 작업 그룹을 정의한 경우 응답에 다음 필드가 있을 수 있습니다.

      • responseState(선택 사항) — 작업 처리 후 에이전트의 동작을 정의하려면 다음 상태 중 하나로 설정합니다.

        • FAILURE— 에이전트가 현재 DependencyFailedException 세션에 a를 던집니다. 종속성 오류로 인해 함수 실행이 실패할 때 적용됩니다.

        • REPROMPT— 에이전트는 응답 문자열을 모델에 전달하여 다시 프롬프트를 표시합니다. 잘못된 입력으로 인해 함수 실행이 실패할 때 적용됩니다.

      • responseBody— 함수 실행으로 인한 응답을 정의하는 객체를 포함합니다. 키는 콘텐츠 유형 (현재만 TEXT 지원됨) 이고 값은 응답이 포함된 객체입니다. body

  • (선택 사항) sessionAttributes - 세션 속성 및 해당 값을 포함합니다. 자세한 내용은 세션 및 프롬프트 세션 속성 단원을 참조하십시오.

  • (선택 사항) promptSessionAttributes - 프롬프트 속성 및 해당 값을 포함합니다. 자세한 내용은 세션 및 프롬프트 세션 속성 단원을 참조하십시오.

  • (선택 사항) knowledgeBasesConfiguration — 에이전트에 연결된 지식 베이스의 쿼리 구성 목록을 포함합니다. 자세한 내용은 지식 기반 검색 구성 단원을 참조하십시오.

작업 그룹 Lambda 함수 예제

다음은 Lambda 함수를 정의하는 방법에 대한 간단한 예제입니다.Python. 액션 그룹을 다음과 같이 정의했는지 여부에 해당하는 탭을 선택합니다.OpenAPI 스키마 또는 함수 세부 정보 포함:

OpenAPI schema
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] api_path = event['apiPath'] # get parameters get_parameters = event.get('parameters', []) # post parameters post_parameters = event['requestBody']['content']['application/json']['properties'] response_body = { 'application/json': { 'body': "sample response" } } action_response = { 'actionGroup': event['actionGroup'], 'apiPath': event['apiPath'], 'httpMethod': event['httpMethod'], 'httpStatusCode': 200, 'responseBody': response_body } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] api_response = { 'messageVersion': '1.0', 'response': action_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return api_response
Function details
def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] function = event['function'] parameters = event.get('parameters', []) response_body = { 'TEXT': { 'body': "sample response" } } function_response = { 'actionGroup': event['actionGroup'], 'function': event['function'], 'functionResponse': { 'responseBody': response_body } } session_attributes = event['sessionAttributes'] prompt_session_attributes = event['promptSessionAttributes'] action_response = { 'messageVersion': '1.0', 'response': function_response, 'sessionAttributes': session_attributes, 'promptSessionAttributes': prompt_session_attributes } return action_response