DSPy.rb의 평가자 루프는 ‘제안, 비판, 개선’의 반복적인 과정을 통해 LLM 응답의 품질을 향상시킵니다. 핵심 아이디어는 저렴한 모델로 초안을 생성하고, 더 정교한 모델로 초안을 비판하는 효율적인 접근 방식입니다.
1. 시그니처를 활용한 LLM 호출
DSPy.rb는 DSPy::Signature를 통해 LLM 호출을 타입이 지정된 함수로 정의하여 입출력 스키마를 명확히 합니다.
-
생성 시그니처:
GenerateLinkedInArticle은 초안 생성을 담당합니다. -
평가 시그니처:
EvaluateLinkedInArticle은 생성된 초안을 평가합니다. 특히EditorMindsetenum(Skeptical,Balanced,Lenient)을 사용하여 평가자의 비판적 태도를 세밀하게 제어할 수 있습니다.
2. 루프 메커니즘: 초안 작성 및 비판
SalesPitchWriterLoop는 저렴한 Haiku 모델을 생성기(DSPy::Predict)로, 스마트한 Sonnet CoT 모델을 평가기(DSPy::ChainOfThought)로 활용합니다.
-
토큰 가드레일: 이 루프는 고정된 반복 횟수 대신
TokenBudgetTracker를 사용하여 토큰 예산이 소진되거나 평가자가Approved결정을 내릴 때까지 반복됩니다. -
피드백 루프: 평가기가 생성한
recommendations는 다음 반복의 생성기에 입력되어 초안을 점진적으로 개선합니다.
3. 평가자 마인드셋 튜닝
LLM 평가기가 아첨하는 경향을 보이는 문제를 해결하기 위해, DSPy.rb는 EditorMindset enum과 “Default to ‘needs_revision’ unless the post meets all criteria.”와 같은 출력 설명을 통해 평가자가 승인을 ‘획득’하도록 유도합니다. 이를 통해 평가자의 비판적 수준을 Skeptical, Balanced, Lenient 중 하나로 설정하여 고품질의 결과물만을 승인하도록 조정할 수 있습니다. self_score 임계값, 강제 비판 요구사항, 명시적인 루브릭 기준 등 추가적인 튜닝 레버도 제공됩니다.
4. 옵저버빌리티
DSPy.rb는 lm.tokens 이벤트를 Langfuse로 전송하여 토큰 사용량과 비용을 추적하는 옵저버빌리티를 기본 제공합니다. 이를 통해 생성 모델과 평가 모델 중 어느 쪽에서 예산이 소모되었는지 명확하게 파악할 수 있어 효율적인 디버깅과 최적화가 가능합니다.