Amazon Bedrock 에이전트가 Amazon Bedrock에서 작업 그룹을 처리하기 위해 사용자로부터 수집한 정보를 보내도록 Lambda 함수를 구성합니다. - Amazon Bedrock

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

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

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

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

    • httpMethod— OpenAPI 스키마에 정의된 API 작업의 메서드입니다.

    • 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— OpenAPI 스키마에 정의된 API 작업 경로.

      • httpMethod— OpenAPI 스키마에 정의된 API 작업의 메서드입니다.

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

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

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

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

        • 실패 — 에이전트가 현재 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