Self-refine 스켈레톤 코드를 서비스에 적용했다.
이전에 Agent 관련 클래스를 통합 관리하기 위해 템플릿 메소드 패턴으로 BaseAgent
라는 클래스를 만들었다. 템플릿 메소드 패턴을 사용한 이유는 다음과 같았다.
프롬프트 로드
→ LLM 추론
→ 후처리
로 거의 비슷하다.오늘 작업은 Self-refine Agent에서 feedback과 refine 과정 파이프라인을 구현하고, 실험 및 테스트 진행이었다. feedback에서 refine으로 넘어갈 때, 추가 수정이 필요 없을 경우, STOP
을 출력하도록 해 조기 종료하도록 했다.
Self-refine을 코드를 테스트해보니, STOP
플래그에 의한 조기 종료는 의외로 정상적으로 동작했다. 하지만, 실제 메일 내용과 최종 리포트 내용이 달리지는 문제, 최종 리포트 형식이 단순한 plain text라는 문제가 있었다. 최종 리포트 형식은 To-do 리스트로 구성되거나 메일 본문 하이퍼링크가 연결되어야 하니, 구조화된 출력은 필수였다. 따라서 다음과 같은 추가 작업이 필요했다.