ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS Bedrock] Agents로 Bedrock 기능 구체화하기
    Programing/AWS 2024. 3. 3. 00:59
    반응형

    이전 글에서 AWS Bedrock을 이용해 RAG를 진행했지만, 퀄리티가 마음에 들지 않습니다.

     

    말투도 바꾸고 싶고, 보여줄 정보와 보여주고 싶지 않은 정보를 구분하고 싶은데 방법이 마땅치 않았습니다.

     

    이런 부분에서 AWS Bedrock이 제공하는 Agents기능이 도움이 됩니다.

     

     

    1. 자연어를 사용해 프롬프트하고 응답
    2. 작업을 세분화하고 조율(오케스트레이션)
    3. 동적으로 API를 호출하여 작업 완료
    4. 회사 데이터에 안전하고 비공개적으로 액세스
    5. CoT(chain-of-thought) 및 기본 에이전트 프롬프트 표시

    당연히 제공되어야 하는 1번째(LLM사용) 사항은 논외로 하고,

    Amazon Bedrock Agents의 장점은 나머지 사항들이 비교적 손쉽게 자동으로 이루어진다는 점입니다.

     

     

    예를 들어, 인사관리용 Assistant(Agent)를 만들 수 있습니다.

    (1번 사항) Instructions: 모델에게 상세한 역할과 지시를 자연어로 부여합니다.

    (4번 사항) Knowledge Base: 벡터화한 지식베이스에 접근할 수 있습니다.

    (3번 사항) Actions: AWS Lambda를 이용해 사내API나 기타 외부 API, 계산기능을 진행할 수도 있습니다.

    (2번, 5번) : 그리고 위 내용들을 알맞게 수행하기 위해 Bedrock 자체적으로 오케스트레이션과 CoT를 진행합니다.

     

    구체적으로는 Agent를 생성하며 서술해 보겠습니다.

     

     

    Agent 생성하기

    Agents - Create Agent

    Step 1: Provide Agent details

    Step 1 - Provide Agent details

     

    Step 2: Select model

    Step 2 - Select model

    모델선택

    2024년 02월 현재, Anthropic의 Claude 모델들만 선택 가능합니다.

     

    Instructions for Agent

    챗봇에게 상세한 역할과 지시를 부여하는 부분입니다.

    사실상 프롬프트 엔지니어링을 하는 부분이라고 보면 됩니다.

    저는 테스트용으로 간단하게 한글로 작성해서 부여했습니다.

    (제가 작성한 지시사항은 더보기 참조)

    더보기

    당신은 친절하고 전문적인 한국 서울 관광 가이드입니다.
    당신의 역할은 "서울의 레스토랑과 카페, 식당에 대한 유저들의 질문에 가능한 정확하고 친절하게 응답하는 것" 입니다.

    당신은 다음의 규칙에 따라 역할을 수행합니다.

    1. 유저의 요청 및 가이드의 역할
    - 유저는 다음의 3가지의 요청을 할 수 있다.
    1) 장소 및 추천
    2) 코스 생성 및 추천
    3) 장소에 대한 정보 확인
    - 유저는 이때, 지역, 영업시간, 메뉴, 가격대, 분위기 등의 조건 및 항목을 부연하여 요청을 진행할 수 있다.
    - 가이드는 유저의 요청사항, 조건 및 항목을 고려하여 친절한 말투로 정확하게 정보를 제공한다.
    - 유저의 요청이 위 1)~3)에 해당하지 않을 경우, 정중하고 친절한 말투로 권한이 없음을 알린다.

    2. 정확성
    - 주어진 knowledge base의 정보를 기준으로 응답한다.
    - knowledge base에 없는 정보를 추측하지 않는다.
    - 유저가 요청한 조건 및 항목들에 부합하는 장소를 우선 고려한다.
    - 유저가 요청한 조건 및 항목에 부합하지 않는 장소는 제외한다.

    3. 예외처리
    - 유저가 요청한 조건 및 항목에 부합하는 정보가 한 곳도 없을 경우, 대체할 수 있을만한 장소와 그 장소의 정보를 제공한다.
    - 대체할 수 있을만한 장소의 정보를 제공하는 경우, 해당 장소가 왜 대체할 수 있는 장소인지 부연설명을 제공한다.

     

    Step 3: Add Action groups

    Bedrock Agents를 사용하는 가장 큰 이유 중 하나가 바로 Action group 설정일 겁니다.

    하지만 이번 테스트에서 저는 Action group을 사용하지 않기 때문에, 대략적인 설명만 덧붙이겠습니다.

     

    Action group

    • Action group이란, Agent가 수행하고자 하는 개별적인 기능을 말합니다.
    • 위 그림에서 get-Vacation-Balance(휴가가 몇일 남았는지 확인하는 기능), request-LOA(휴가신청 기능)입니다.
    • 각 기능은 AWS Lambda로 정의합니다. (사내 API, 외부 API, 기타 작업 등등을 수행 가능)
    • 하나의 Action group은 Lambda function 1개와 연결됩니다.
    • Lambda function이 뭘 할 수 있고, input과 output이 뭔지 API Schema를 통해 알려줘야 합니다.

     

    Agent는 여러개의 Action group을 가질 수 있습니다.

    즉, 위 사진과 같은 Agent를 만들기 위해서는 get-Vacation-Balance 액션그룹과 request-LOA 액션그룹을 각각 만들어야 한다는 뜻입니다.

    Step 3 - Add Action groups

     

    Step 4: Add Knowledge base

    Step 4 - Add Knowledge base

    사전에 만든 knowledge base를 선택하고, Agent가 참고할 수 있도록 설명을 덧붙입니다.

    최대 150자로만 설명 가능하다는 점이 아쉽습니다.

     

    테스트

    [Step 5: Review and create] 까지 완료하면 Agent가 생성됩니다.

    우측상단 Test 버튼을 눌러서 바로 테스트 해볼 수 있습니다.

    Agent 테스트

     

    Agent의 장점 중 하나는 Orchestration을 알아서 진행해준다는 점입니다.

    Show trace를 누르면 어떤 과정을 거쳐 답변을 생성해낸 것인지 상세 과정을 볼 수 있습니다.

    Show trace

     


     

    반응형

    댓글

Designed by Tistory.