데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      똑똑한 Agent는 어떻게 일을 할까? : LLM Workflow상세소개

      soojung3421 24.11.05
      3,456 9 1
      DEVOTEE 요약
      본 블로그는 'T멤버십 영화예매 에이전트' 개발 경험을 공유하며, LLM Workflow를 도입해 사용자에게 보다 유용한 영화 예매 서비스를 제공하고자 한 과정을 설명합니다. 에이전트의 주요 기능은 사용자 대화에서 엔티티 추출을 통해 상태 관리 및 개인화된 응답을 제공하는 것이며, 이를 통해 대화 컨텍스트 유지, 엔티티 인식률 향상, 모델 조합 최적화 등의 효과를 얻었습니다. 또한, 다양한 모델을 효율적으로 활용하여 사용자 경험을 향상시키고자 했으며, 다음 글에서 사전 정의 대화 워크플로우에 대해 더 설명할 예정입니다.
      DEVOTEE 추천 블로그

      서론

      이 글에서는 이번에 출시한 'T멤버십 영화예매 에이전트'를 개발하면서 겪었던 경험들을 공유하려고 합니다.

      영화예매 에이전트는 'T멤버십 영화예매' 서비스에 LLM을 적용하여 대화로 쉽고 편리하게 영화를 예매할 수 있도록 도와주는 에이전트입니다.

      질문 이해와 답변을 생성하는 기존의 에이전트에서 나아가 실제로 Action('영화 예매')으로 이어질 수 있는 Actionable AI 에이전트로서 기존 서비스에 AI를 조금 더 직접적으로 도입하고자 하였습니다.

      본문에서는 개발시작 단계부터 부족했다고 느꼈던 점으로 시작하여, 이를 해결 하기 위해서 LLM Workflow를 도입했고, 이를 통해서 얻은 효과가 어떤 것인지를 예시와 함께 자세히 설명하겠습니다.


      LLM Workflow의 필요성

      처음에는 영화예매에 필요한 기본적인 '영화 조회', '극장 검색', '스케쥴 조회', '날짜 조회' 등의 함수를 정의하고 해당함수를 호출해서,

      그 함수의 결과값 기반으로 응답을 생성해준다면 말로 하는 영화예매의 프로세스를 만들 수 있을 것이라고 기대 했습니다.

      아래 그림은 실제로 프로젝트 초반에 간단하게 프로토타입했던 것을 도식화한 그림입니다.

      영화예매 초기 버전

      하지만 상용화의 문턱은 생각보다 높았습니다. 빠르고 정확한 응답은 기본이었고, 자연스러운 멀티턴 대화 관리가 필요했습니다.

      사용자의 개인 정보와 컨텍스트를 적절히 반영하면서도, 긴 대화에서 중요한 정보를 놓치지 않고 추적해야 했습니다.

      또한 영화 제목이나 극장명 같은 핵심 엔티티를 정확히 인식하는 것도 중요했습니다.

      이 모든 과정에서 여러 AI 모델들을 효과적으로 조합해 최적의 결과를 도출해야 했죠.


      이러한 복잡한 요구사항들을 통합적으로 관리하고 해결하기 위해, 체계적이고 유연한 LLM Workflow의 설계가 필수적이었습니다.

      이를 통해 단순한 프로토타입을 넘어, 실제 사용자들에게 가치 있는 서비스를 제공할 수 있는 기반을 마련하고자 했습니다.


      LLM Workflow 도입

      우선 크게 두가지를 중점적으로 고려하고자 하였습니다.

      • 상태 관리(State management): 영화예매를 하기 위해서 꼭 필요한 정보인 "어떤 영화를", "언제", "어디서(or 어느 극장에서) 볼지" 를 발화에서 개체(entity)로 추출하고 앞으로 이어질 대화에 반영

        • 멀티턴 시나리오

          role

          content

          user

          주말용산 cgv에서 여자친구랑 영화 볼려고

          assistant

          어떤 영화를 보시겠어요?

          user

          베놈 볼려고

          assistant

          이번 주말 베놈의 상영 시간표는 다음과 같습니다. 언제 관람하시겠어요?

          user

          아 그냥 코엑스 메박에서 내일 봐야겠다.

        • 기대 결과: 내일 코엑스 메가박스에서 2명이서 베놈 영화 예매하기 위한 시간표 조회.

      • 개인화 Context 반영: 더 나은 사용자 경험을 위해, 유저의 사전정보(최근 방문한 영화관, 선호극장)를 대화 흐름에 반영

        • 예시

          user

          assistant

          (홍대 CGV를 자주 찾는 유저) 영화 보고 싶어

          "즐겨찾는 극장인 홍대 CGV에서 보실 수 있는 영화는 ‘베테랑2’, ‘조커’ 등이 있습니다. 어떤 영화를 보시겠어요?"

      최종적으로 위 두 꼭지를 LLM Flow에 이를 반영하기 위해 전체 LLM의 Action plan generation 을 수행하는 모델을 2가지로 나누었습니다.

      • Entity 추출 모델: 답변 생성 전, 사용자의 입력 및 이전 대화 히스토리 기반으로 다음 LLM에 삭제하거나 유지시켜야할 Entity들을 포함하여 추출.

      • Workflow 모델: 사용자의 발화와 엔티티 추출 결과를 바탕으로 함수 호출이 필요할 경우, 호출할 함수를 결정하고, 그 함수의 응답 결과를 이용하여 최종 답변을 생성. 함수 호출이 필요 없을 경우, 바로 답변을 생성하여 응답.

      이와 같은 고민을 거쳐 이를 해결할 수 있는 Workflow는 아래와 같은 모습이 되었습니다.


      LLM Workflow

      LLM Workflow 도입의 장점 상세

      위 Workflow를 도입하고 얻을 수 있었던 장점에 대해서 상세히 설명하겠습니다.

      1) 사용자의 컨텍스트가 LLM Flow에 반영

      유저가 여의도 근처에 있는 상황에서 “오후에 베테랑2 보고 싶어"라고 발화했을 경우,

      현재 위치 기준으로 가장 가까운 극장인 ‘여의도 CGV’에서 베테랑2 시간표를 조회해준다면, 예매를 더 쉽고 빠르게 할 수 있을 것이라고 기대해볼 수 있습니다.

      아래는 유저의 사전정보가 LLM Flow에서 적용되는 예시를 보여줍니다.

      Context반영된 LLM Workflow

      2) 긴 대화에서의 상태 관리 및 추적

      단순하게 대화 이력을 LLM 에 전달한다면, 대화가 길어질 수록 컨텍스트 유실이 발생할수 있습니다.

      이를 방지하기 위해, 매 Turn마다 추출된 entity 를 따로 저장하도록 관리하여 대화 컨텍스트를 유지할 수 있도록 하였습니다.

      즉, 대화가 길어지더라도, 고객이 이전에 언급한 것을 잊지 않고 다음 대화에 반영할 수 있게 되었습니다.

      Role

      Content

      Entity

      user

      주말에 친구랑 영화볼려고

      {"selected_theater":"상암월드컵경기장 megabox","selected_time":"주말에", "selected_people": "친구랑"}

      assistant

      주말에 보기 좋은 영화로는 '베놈:라스트 댄스', '대도시의 사랑법' 등이 있습니다.

      -

      user

      베놈:라스트 댄스

      {"selected_theater":"상암월드컵경기장 megabox","selected_time":"주말에", "selected_people": "친구랑", "selected_title": "베놈: 라스트 댄스"}

      assistant

      시간표를 조회했어요

      -

      user

      아 그냥 내일 봐야겠다.

      {"selected_theater":"상암월드컵경기장 megabox","selected_time":"내일", "selected_people": "친구랑", "selected_title": "베놈: 라스트 댄스"}

      3) 사용자 질의 전처리를 통한 엔티티 인식률 향상

      에이전트에서 사용되는 엔티티 추출 모델은 'gpt-4-0-mini-2024-07-18'을 기반으로 Fine-tuning되어 있습니다.

      하지만 모델을 최신 영화가 개봉할때마다 재학습할수는 없습니다.

      즉 매번 메타 데이터를 업데이트 할 수 없기때문에 모델 앞단에 엔티티 추출 및 검증 절차를 거치도록 하여 영화/상영관 데이터가 업데이트되더라도 모델이 엔티티를 인식할수 있도록 하였습니다.

      이를 통해 모델이 영화 제목이나 극장명과 같은 엔티티를 더 잘 인식할 수 있게 되었습니다.

      4) 다양한 모델들과의 Orchestration

      영화 예매 Agent의 핵심은 “높은 정확도 성능이 요구되는 Actionable한 LLM Agent”를 구축하는 데 있습니다.

      이를 위해서는 각 핵심 Task(엔티티 추출, 함수 호출, 답변 생성)의 정확도가 매우 중요합니다.

      뿐만 아니라, 고객의 편의를 극대화하기 위해 답변의 길이와 일관된 톤앤 매너 역시 중요한 요소로 고려되었습니다.

      이러한 이유로, 핵심 Task를 수행하는 모델에는 반드시 미세 조정(Fine-tuning)이 필요했습니다.

      반면, 날짜 추출이나 인원 추출과 같은 Sub task는 별도의 미세 조정 없이도 프롬프트 조정만으로 충분한 성능을 발휘할 수 있었습니다.


      저희 LLM Workflow 는 모든 Task 들에 각각 가장 효율적인 LLM 모델들을 적용하여 전체적인 성능을 높혔습니다.

      다양한 모델과 파라미터를 조정하여 호출할 수 있도록 LLM Workflow가 구성되었기 때문에 가능한 일이었습니다.


      마무리

      지금까지 T멤버쉽 영화예매 서비스를 어떻게 개발하게 되었는지 LLM Workflow 측면에서 공유드렸습니다.

      이 글은 저희의 전체 구현사항을 담지는 못했고, LLM을 이용하여 진행하는 메인 워크플로우를 설명드렸습니다.

      이 메인 워크플로우 이외에도 빠르고 구조화된 대화 처리라는 다른 목적을 가지고 구현된 사전 정의 대화 기반으로 구성한 워크플로우도 함께 구성되어있습니다.

      내용이 길어져 이 사전정의 대화 기반 워크플로우는 다음 글을 통해 이어 설명하고자합니다.

      이 글이 에이전트를 개발하시는 많은 분들께 도움이 되었으면 좋겠습니다.


      추가로 LLM Workflow는 Aide Framework 기반으로 개발 되었습니다. 코드 구성이 궁금하신 분들은 관련 블로그를 참고해 주세요.


      영화 예매 에이전트를 사용해 보고 싶으시면, 에이닷 앱을 설치하고 대화창에서 '영화예매'라고 입력해 보세요.

      저희 에이전트와 멀티턴 대화를 통해 고민의 흔적을 함께 느껴보시면 좋겠습니다.

      이 기술이 다양한 Domain으로도 전파되기를 기대하며, 다음에 더 흥미로운 내용으로 찾아뵙겠습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      soojung3421 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기