서버 안정화와 평가 모델 라우팅 보강

This commit is contained in:
Yun Chan 2026-06-27 16:34:27 +09:00
parent 0cdbf8e4fe
commit 0eb7d925ed
10 changed files with 179 additions and 39 deletions

View file

@ -13,7 +13,7 @@ MASTERPLAN §2.3 (평가 AI 2-tier 루프):
후보로 제시하고 *근거(rationale)* 요구한다. LLM 출력은 enum 으로 안전 파싱(미지값은 버림).
- intent_deviation('의도와 다른 부분') 1 시민 SupervisorComment(critique) 형식과 정합:
{dimension, expected, actual, severity}.
- engine_client.generate(tier='feedback', structured_schema=...) LLM 평가. 엔진 장애·파싱
- engine_client.generate(structured_schema=...) LLM 평가. 엔진 장애·파싱
실패는 *비치명적* orchestrator eval_hook None 으로 흡수(상담 루프를 막지 않음).
- 결과는 pydantic 모델로 반환. orchestrator 주입형으로 부르는 async 함수
evaluate_turn(...) / evaluate_session(...) export.
@ -31,6 +31,7 @@ from typing import TYPE_CHECKING, Any, Optional
from pydantic import BaseModel, Field
from ..config import settings
from ..engine_client import (
EngineClient,
EngineError,
@ -67,6 +68,11 @@ _APPROPRIATENESS = ("pos", "warn", "neutral")
_SEVERITY = ("minor", "moderate", "major")
def _configured_model(value: str | None) -> str | None:
model = (value or "").strip()
return model or None
def _parse_technique(raw: str) -> Optional[Technique]:
s = (raw or "").strip()
return _TECHNIQUE_BY_KO.get(s) or _TECHNIQUE_BY_CODE.get(s)
@ -641,6 +647,7 @@ async def evaluate_turn(
ai_role="evaluator",
messages=build_fast_messages(ctx, client_reply),
structured_schema=_fast_schema(),
model=_configured_model(settings.evaluator_fast_model),
max_tokens=900,
temperature=0.2, # 평가는 보수적·재현적으로
session_id=ctx.session_id,
@ -717,6 +724,7 @@ async def evaluate_session(
distribution=distribution,
),
structured_schema=_deep_schema(),
model=_configured_model(settings.evaluator_deep_model),
max_tokens=2048,
temperature=0.3,
session_id=session_id,