Hybrid (Planner + Scorer) Architecture
계획자·채점자 하이브리드 구조
문제의 배경
단일한 하나의 에이전트에게 해법을 만들고 그 품질까지 스스로 판정하게 할 수도 있다. 그러나 이 접근에는 깊은 결함이 있다. 에이전트도 사람처럼 자기 작업의 객관적 비평가가 되기 어렵고, 흔히 자기 실수를 합리화한다. 편향되고 무력한 학습 고리가 된다.
문제
새로운 해법을 만들면서 동시에 그 품질을 객관적으로 평가하는 시스템을 어떻게 만들 것인가. 둘 다 하려는 단일 에이전트는 흔히 자기 출력을 합리화한다. 이 취약성은 추론에서의 모드 붕괴와 닮았다. 고리를 끊어 줄 외부의 객관적 평가자가 없어서 LLM이 자기 환각이나 논리 오류를 스스로 강화하는 현상이다.
해법 — 두 역할을 갈라놓는다
Generator
계획자 Planner
해법을 만들어낸다. 문제가 주어지면 그것을 풀 계획, 코드, 워크플로를 생산한다. 창의성과 과업 완수에 최적화된다.
Evaluator
채점자 Scorer
계획자가 만든 해법을 평가하는 것이 유일한 책임이다. 스스로 해법을 만들지 않는다. 안목 있는 비평가로서 사전 정의된 기준(정확성·효율·안전)에 근거해 점수나 순위를 매긴다.
Note
계획자·채점자 구조는 R⁵ 모델의 Reflect 원칙을 직접 구현한 것이다. 생성과 평가를 분리함으로써 시스템은 자기 비판을 위한 정식 검문소를 만들고, 행동하기 전에 자기 출력을 성찰할 수 있게 된다.
사례 — 마케팅 문구
PlannerAgent가 광고 슬로건 세 가지 판본을 만든다. 이것이 ScorerAgent에 넘어가 브랜드 목소리 부합도와 예상 클릭률 같은 기준으로 평가된다. 채점자가 슬로건의 순위를 매기고, 그 순위가 계획자를 미세조정하는 피드백으로 쓰인다.
구현 예시 · Python
class PlannerAgent: def generate_solutions(self, topic: str, n: int = 3): """주어진 주제에 대해 여러 잠재적 해법을 만들어낸다.""" return [f"Slogan {i+1} for {topic}" for i in range(n)] class ScorerAgent: def evaluate_solutions(self, solutions): """사전 정의된 루브릭으로 각 해법을 채점한다.""" return {s: self.score(s) for s in solutions} planner = PlannerAgent() scorer = ScorerAgent() topic = "Synergy Cloud" solutions = planner.generate_solutions(topic) feedback = scorer.evaluate_solutions(solutions) best_solution = max(feedback, key=feedback.get) print(f"\nBest solution identified: '{best_solution}'")
장점
- 객관성 — 생성과 평가를 분리하면 더 객관적이고 신뢰할 만한 피드백이 나온다. 시스템이 자기 편향을 스스로 강화하는 일을 막는다.
- 전문화 — 계획자(창의성에 최적화)와 채점자(분석적 판단에 최적화)에 서로 다른 고도로 전문화된 모델을 쓸 수 있다.
단점
- 복잡도 — 단일 에이전트 시스템보다 구현과 조율이 복잡하다.
구현 지침
채점자를 위한 명확하고 단순한 채점 루브릭을 정의하는 데서 시작하라. 이 루브릭이 두 에이전트 사이의 계약이며 “품질”이 무엇인지를 정의한다. 계획자와 채점자 사이의 통신 채널이 견고하고 구조화된 피드백을 효율적으로 넘길 수 있어야 한다.