23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
바야흐로 대 LLM의 시대입니다. ‘혁명’에 비견될 정도로 지금 LLM의 성능은 매우 우수하고, 그 영향력이 거의 모든 산업과 분야에 걸쳐 광범위하게 나타나고 있습니다.
2025년까지 LLM 기술이 적용된 어플리케이션이 약 7억 5천만개로 예상된다고 할정도로 LLM을 서비스에 적용하는 것은 어떻게 되면 피할수 없는 미래가 된 느낌입니다.
마침, 저희 팀도 고객의 편의성 향상을 위한 LLM Backend Task Assistant Agent를 만들게 되었습니다.
LLM 기반으로 어플리케이션을 제작하는 것은 매우 쉬워보입니다. 많은 오픈소스와 솔루션들이 있고 이를 이용하여 단 몇 줄의 코드, 심지어 코드 없이 UI 콘솔로도 만들 수 있습니다. 하지만 대고객 Production 향 LLM Application 은 안타깝게도 그렇게 쉽게 만들 수는 없었습니다.
다른 여타 서비스와 마찬가지로 고가용성(high-availablity)과 확장성(scalable)이 보장되어야하기 때문에 LLM 을 통해서 모든 문제가 해결되기 보다는 Application 설계 시 해야하는 Engineering 고민들에 LLM Application 이 가질 수 있는 문제들이 오히려 더해져서 더 어려운 과제였습니다. 게다가 기존 솔루션들을 사용하다보면 적은 코드로 빠르게 구현하는 것을 목적으로 하다보니 코드 자체가 LLM과 Application 코드가 뒤섞여 굉장히 복잡해지는 문제가 있었습니다. LLM 기반의 Application 에서 고민해야할 것이 많은데 이것들이 뒤섞여서 안그래도 복잡한데 더 복잡해지는 문제였죠.
그래서 저희는 기타 오픈소스를 사용하지 않고 LLM OpenAI API 만을 가지고 자체 Framework 'Aide'를 만들어서 위 과제를 진행하고자 했습니다.
저희가 만든 Framework의 요건은 두가지였습니다.
LLM 기반의 Multi-turn 대화를 지원하는 Agent 를 쉽게 개발할 수있는 Framework
Agent 개발에 필요한 다양한 기능들을 고도의 추상화를 통해 단순화하여, 쉽고 빠르게 LLM 기반의 대화형 Agent를 만들고 다른 고민 없이 LLM 을 이용해 풀어야하는 ‘문제’(Task)에 집중할 수 도와주는 Framework
모두가 함께 참여 하되, 2번을 통해 Application Engineer는 Application Layer 의 문제에 좀 더 집중하고,
LLM Engineer들은 LLM Customization(Prompt engineering, Task-focused fine-tuning)에 좀 더 집중할 수 있도록 하였습니다.
Aide 의 특징을 간략히 요약하자면 아래와 같습니다.
쉽게 개발하고 트래픽 요구사항에 맞춰 Scalable 한 Production 레벨 LLM Agent Application Framework(w/fastapi)
Agent 동작에 필요한 각 기능들을 추상화하고 Layer 로 만들어 각 Layer 에 계층적 구조를 적용, 하위 레이어는 상위 레이어에 의존하지 않도록 설계. LLM Agent 가 가질수 있는 복잡성을 최소화하고 협업 및 개발 효율성을 최대화.
새로운 에이전트를 쉽게 추가할 수 있는 확장성
관심사 분리를 통한 쉽고 유연한 LLM Customization & Tuning
Aide를 구성하는 각각의 구성요소를 간단히 소개해드리겠습니다.
Aide 에서 Agent는 Workflow 를 가집니다.
Workflow란 Agent가 수행하는 작업을 정의한 것입니다.
Aide는 대화형 에이전트 프레임워크이므로, 기본적으로 대화를 처리하고 응답을 생성하는 것이 Workflow 의 주요 기능입니다.
이때 필요한 경우 도구(Tool) 를 사용할 수 있으며, 각 Workflow 는 사용 가능한 도구를 미리 등록하고 사용합니다.
해당 Tool들은 Task 수행과 관련된 함수들입니다.
예를 들어, 영화예매 에이전트는 ‘영화 조회’, ‘극장 조회’, ‘영화 예매’, ‘예매내역 조회’, ‘예매 내역 취소’등 의 Tool을 등록하고 사용하였습니다.
Workflow 는 LLM기반의 LLM Workflow과 사전 정의 대화기반의 Predefined workflow 두가지 방식의 구현이 존재합니다.
LLM Workflow는 유연하고 똑똑한 대화처리, Predefined workflow는 빠르고 구조화된 대화 처리라는 다른 목적을 가지고 구현되었습니다.
질의가 들어올시에 User Context, Conversation Context를 세팅한 후 적합한 Workflow를 골라 이를 실행시킨 후 결과로 나온 답변을 응답하는 것이 Agent 의 역할입니다.
LLM 을 사용한 답변을 생성할시 진행되는 작업 흐름입니다.
Agent 에서 제공되는 이전 히스토리를 참조하여 Context-aware multi-turn 대화를 지원합니다.
LLMWorkflowConfig 를 통해 Workflow 의 설정을 관리하고 있습니다.
LLM Backend(ex. OpenAI)
Seed
Model
Function calling 용 Tools
최대 Turn 횟수
병렬적으로 수행가능한 최대 Tool 개수
이전 Turn 에서 참조하는 최대 대화
대화 초기화
대화(Conversation) 단위(Unit)를 신규로 생성하고, 시스템 메시지 설정, 질문 내 엔티티 추출등 대화 시작시에 필요한 작업을 수행합니다.
멀티턴 대화
1) 메시지 히스토리를 포함하여 LLM 에 답변 생성 요청
2-1) 답변 결과에 tool_calls 가 존재할시 Tool 을 수행
2-1)-1) 해당 Tool이 최종 목표로 설정되어 추가 답변 생성이 필요없는 GoalFunction 인 경우, LLM 에 답변 생성 요청을 하지 않고 Tool 수행 결과를 최종 답변으로 응답.
2-1)-2) 해당 Tool이 일반 함수일 경우, 수행된 결과를 포함하여 다시 LLM 에 답변 생성 요청.
2-2) 답변 결과가 tool_calls 없이 일반 메세지일 경우 최종 답변으로 응답
3) 답변 후처리
LLM 에서 발생 가능한 각종 오류 보정
(멀티턴 대화 결과로) 생성된 메세지를 적절하게 가공하여 응답
현재 에이닷에 적용된 영화예매 에이전트는 이 단계에서 에이닷 공용 Interface를 적용하여 응답하고 있습니다.
Predefined Workflow는 사용자의 의도로 정해지는 엔티티가 명확한 사용자 질의에 대해서 LLM의 사용없이 효율적으로 작업을 수행을 위한 목적으로 설계되었습니다.
이를 위해서 대화의 흐름을 사전정의 된 작업 흐름(Workflow)과 단계(Step)들로 구조화하였고,
각 질의 요청에 대해서 맞는 흐름과 단계에 해당하는 작업을 수행하고 그 결과를 응답하도록 구현하였습니다.
멀티턴으로 연결되는 대화에서 Predefined Workflow와 LLM Workflow의 동작은 교차로 발생할 수 있으며,
이 때 Predefined Workflow 에서 발생한 요청과 응답, 그 과정에서 발생한 Tool Call 에 대한 정보, 추출된 Entity 등을 Conversation 에 적절하게 가공하여 적재함으로써
추후 연속되는 Conversation 에서 대화의 흐름이 유연하게 연결될 수 있도록 지원합니다.
Workflow는 Agent 의 기능 단위로, 하나의 엔티티를 파악하기 위한 Step들의 연속된 조합입니다.
예를 들어, T멤버쉽 영화예매 에이전트에서는 영화 예매와 영화 취소 Workflow 가 각각 정의되어 있으며,
영화 예매 Workflow는 예매를 위한 엔티티를 선별하는 과정인 영화 선택, 극장 선택, 상영시간 선택, 영화 예매를 위한 URL 획득 등이 각 Step 이 됩니다.
Step은 Workflow를 완수하기 위해 필요한 엔티티를 하나씩 파악하기 위한 단계로,
Workflow를 구성하는 모든 Step 이 연속적으로 수행 완료될 때 해당 Workflow가 완료되었다고 판단합니다.
지금 당장은 보완할 점이 많아 하지 못하고 있지만, python packaging 을 통해 쉽게 다운로드해서 쓸수 있게 한다던지,
현재 인터페이스를 좀 더 고도화하여 Customization 을 개선한다던지등 외부 공개를 목표로 한 숙제가 많습니다.
Production-ready LLM Application 을 쉽게 만드는 Framework로써 기능을 할 수 있도록 나아가려고 합니다.
이어서 에이닷 3.0 개편에 맞춰 출시한 T멤버쉽 영화예매 에이전트에 Aide Framework 가 어떻게 적용되었는지 좀 더 구체적으로 소개하는 글을 작성해보겠습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.