[챗봇 개발기: ver2] Workflow & Agentic RAG 기반 챗봇 (with codes)

JeongYun Lee·2025년 6월 27일

Chatbot

목록 보기
5/5
post-thumbnail

Ver2는 이전에 수행했던 Ver1의 백엔드의 프로세스를 완전히 수정하였다. Ver2에서도 다시 두가지 타입을 테스트 해보았다.

좌측의 Router + Agents type의 경우 말 그대로 Router와 Agent 구조를 모두 적용한 아키텍쳐이고, 우측의 Fully Agents type는 Router나 다른 워크플로우를 사용하지 않고 전적으로 Agents 프로세스를 적용한 것이다.

우선, 워클플로우 기반으로 Router와 Agents를 결합한 구조를 테스트한 이유는 Agents만을 사용해서 원하는 결과, 즉 특정 도메인 관련된 질문만을 완전히 따로 처리하는 프로세스가 완벽하게 적용되지 않을 것이라는 가정을 했기 때문이다. 또한 Router를 사용해서 도메인 질문이 아닌 경우는 바로 답변을 도출하도록 하여 latency를 줄이고 비용측면의 이점도 있을 것이라 생각했다. 실제로 이 구조를 처음 설계하고 테스트 했던 당시의 가장 최신 모델은 gpt-4o 였고, 이 구조는 나름 잘 작동했다.

그러나 이 코드를 리팩토링한 시점에는 o3나 o4-mini와 같은 reasoning model API가 서비스되고 있었고, multi-agents를 도입 기법도 활발히 논의되고 있었다. 이는 곧 단일 에이전트 만으로도 내가 원하는 작업을 실행할 수 있는 가능성이 생겼다는 것을 의미한다.

따라서 (순서가 조금 바뀐 것 같지만) Agents만을 사용한 아키텍쳐를 다시 테스트 해보았다. 사용한 Agents의 프롬프트는 다음과 같다.

"You are a helpful assistant used Korean ONLY. "
"You are a professional researcher about ''(e.g. ,,,). You can use the pdf_search tool to search for information about Korean Address in the PDF file. "
"If you use pdf_search tool, you must state Cites from the reference on the bottom of your answer. "
"If the information from pdf_search tool is insufficient, you can find further or recent information by using search tool. "
"If you use search tool, you can add href link. "
"You can use image generation tool to generate image from text. "
"You can use advanced_assistant to write long report or reasoning tasks."

도메인 질문이 들어오면, pdf_search 툴을 사용하며, 이 경우 반드시 출처를 명시하도록 하였다. 또한 참조 데이터의 정보가 부족하거나 추가 도구가 필요할 경우 web_search나 추가 도구를 사용할 수 있다는 가이드를 주었다.

이렇게 구축한 두 개의 타입 모델을 테스트 해보면, 생각보다 단일 Agents를 사용했을 때도 괜찮은 성능을 보였다. 오히려 여러 모델을 호출하지 않아서 latency가 줄어드는 효과도 있었다. 다만, 도구를 사용하는 방식이 workflow를 통해서 여전히 안정성은 떨어졌는데, Verifier를 거치지 않음에 따라 참조 데이터의 충분/불충분을 명확히 판단하지 못했기 때문이다.


여기까지 테스트한 챗봇을 디플로이 하고 베타 테스트를 실시했다. 테스트 과정에서는 여러명이 동시 접속한 경우가 없어서 고려하지 않았는데, 실제로는 이를 고려해야 한다는 것도 알았고(이전 포스트에서 다뤘음), 백엔드에서는 에러 없이 잘 돌아가는데, 실제로 유저는 에러가 있었다고 답한 경우도 있었다. 이를 통해 안정적인 서비스 환경을 구축하는 것은 이런 아키텍쳐를 설계하고 개발하는 것과 또 다른 문제가 될 수 있다는 것을 알게 되었다.

RAG 기반 챗봇을 테스트 하면서 다양한 코드를 만들었는데, 일단 간단한 템플릿을 만들어서 이 레포에 정리해두었다. 실제로 사용한 데이터와 DB는 공유할 수 없지만, 어떤식으로 코드를 만들었는지 참고하는 용으로는 사용할 수 있을 것 같다.

여전히 개선해야 하는 부분들이 많지만, 일단은 Ver2에서 챗봇 개발을 일단락할 것 같다. 관련 논문을 작성 중이며 조만간 완성될 것 같다.

🤩

profile
궁금한 건 많지만, 천천히 알아가는 중입니다

0개의 댓글