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의 리소스 기반 정책에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 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
(선택 사항) - 작업을 처리한 후 에이전트의 동작을 정의하려면 다음 상태 중 하나로 설정합니다.-
FAILURE - 에이전트에서 현재 세션에 대해
DependencyFailedException
예외가 발생합니다. 종속성 오류로 인해 함수 실행이 실패할 때 적용됩니다. -
REPROMPT – 에이전트가 응답 문자열을 모델에 전달하여 다시 프롬프팅합니다. 잘못된 입력으로 인해 함수 실행이 실패할 때 적용됩니다.
-
-
responseBody
- 함수 실행의 응답을 정의하는 객체를 포함합니다. 키는 콘텐츠 유형(현재TEXT
만 지원)이고 값은 응답의body
를 포함하는 객체입니다.
-
-
-
(선택 사항)
sessionAttributes
- 세션 속성 및 해당 값을 포함합니다. 자세한 내용은 세션 및 프롬프트 세션 속성 단원을 참조하십시오. -
(선택 사항)
promptSessionAttributes
- 프롬프트 속성 및 해당 값을 포함합니다. 자세한 내용은 세션 및 프롬프트 세션 속성 단원을 참조하십시오. -
(선택 사항)
knowledgeBasesConfiguration
- 에이전트에 연결된 지식 기반에 대한 쿼리 구성 목록을 포함합니다. 자세한 내용은 지식 기반 검색 구성 단원을 참조하십시오.
작업 그룹 Lambda 함수 예제
다음은 Python에서 Lambda 함수를 정의할 수 있는 방식에 대한 일부 예제입니다. 사용자가 OpenAPI 스키마 또는 함수 세부 정보로 작업 그룹을 정의했는지 여부에 따라 해당하는 탭을 선택하세요.