Files
AX-Copilot-Codex/docs/AUTO_ROUTER_DEV_GUIDE.md

4.6 KiB

자동 모델 라우팅 (Auto Model Router) 개발자 가이드

개요

자동 모델 라우팅은 사용자 메시지의 유형(코딩/번역/분석 등)을 키워드 기반으로 감지하여, 해당 유형에 최적화된 AI 모델로 자동 전환하는 기능입니다.

현재 상태: 잠금 (설정 UI에 표시되나 활성화 불가) 활성화 조건: 사내 Ollama/vLLM 서버 확정 후 개발자가 아래 절차에 따라 활성화


활성화 절차

1단계: 사내 모델 능력 점수 등록

파일: src/AxCopilot/Services/ModelRouterService.cs 메서드: GetDefaultCapabilities()

주석 처리된 Ollama/vLLM 예시를 해제하고 실제 모델 정보로 수정:

// ── 사내 Ollama/vLLM (예시 — 서버 확정 후 수정) ──
new()
{
    Service = "ollama",           // "ollama" 또는 "vllm"
    Model = "codellama:34b",      // 실제 모델 ID
    Alias = "CodeLlama 34B",     // UI 표시명
    Scores = new()
    {
        ["coding"] = 0.85,        // 코딩 적합도 (0.0~1.0)
        ["translation"] = 0.40,   // 번역 적합도
        ["analysis"] = 0.55,      // 분석 적합도
        ["creative"] = 0.35,      // 창작 적합도
        ["document"] = 0.40,      // 문서 작성 적합도
        ["math"] = 0.50,          // 수학/계산 적합도
    }
},

점수 가이드라인:

점수 의미
0.90+ 해당 분야 최고 수준
0.70~0.89 우수
0.50~0.69 보통
0.30~0.49 기본 가능하나 비추천
0.30 미만 부적합

인텐트 카테고리 키:

  • coding — 코드 작성/디버그/리팩토링
  • translation — 번역/다국어
  • analysis — 데이터 분석/요약/비교
  • creative — 창작 글쓰기/스토리/에세이
  • document — 보고서/문서/제안서 작성
  • math — 수학/계산/증명

2단계: 설정 UI 잠금 해제

파일: src/AxCopilot/Views/SettingsWindow.xaml

"자동 모델 라우팅" 섹션에서 다음을 변경:

  1. BorderOpacity="0.5" 제거 (또는 Opacity="1.0"으로 변경)
  2. CheckBoxIsEnabled="False" IsHitTestVisible="False" 제거
  3. SliderIsEnabled="False" 제거
  4. 힌트 텍스트를 "비활성 시 항상 현재 선택된 모델을 사용합니다."로 변경

3단계: 기본값 활성화 (선택)

사용자가 직접 활성화하도록 할 수도 있지만, 기본 활성화하려면:

파일: src/AxCopilot/Models/AppSettings.cs

// 변경 전
public bool EnableAutoRouter { get; set; } = false;

// 변경 후
public bool EnableAutoRouter { get; set; } = true;

아키텍처 요약

사용자 메시지
    ↓
IntentDetector.Detect(message)         ← 키워드 매칭으로 인텐트 감지
    ↓ (category, confidence)
ModelRouterService.Route(message)      ← 후보 모델 점수 비교 → 최적 모델 선택
    ↓ ModelRouteResult
ChatWindow.SendMessageAsync()          ← PushRouteOverride → LLM 호출 → ClearRouteOverride
    ↓
LlmService.ResolveService/ResolveModel ← 오버라이드 있으면 해당 서비스/모델 사용

핵심 파일

파일 역할
Services/IntentDetector.cs 키워드 기반 인텐트 분류기
Services/ModelRouterService.cs 모델 라우팅 로직 + 하드코딩 기본값
Services/LlmService.cs PushRouteOverride/ClearRouteOverride
Services/LlmService.ToolUse.cs 에이전트 도구 호출 시 오버라이드 반영
Models/AppSettings.cs EnableAutoRouter, AutoRouterConfidence, ModelCapability
Views/ChatWindow.xaml.cs 라우터 호출 및 상태 표시
Views/SettingsWindow.xaml 설정 UI (현재 잠금)

키워드 추가/수정

파일: Services/IntentDetector.cs

_keywords 딕셔너리에서 카테고리별 키워드와 가중치를 수정할 수 있습니다. 한국어 키워드는 string.Contains로 매칭 (조사 붙어도 감지), 영어 키워드는 단어 경계 매칭 (공백 분리).


테스트 방법

  1. GetDefaultCapabilities()에 사내 모델 추가
  2. 설정 UI 잠금 해제
  3. dotnet build — 경고/오류 0 확인
  4. 앱 실행 → 설정 → 자동 라우팅 활성화
  5. 테스트 시나리오:
    • "이 함수를 리팩토링해줘" → coding 감지 → 코드 특화 모델
    • "이 문장을 영어로 번역해줘" → translation 감지
    • "이 데이터를 분석해줘" → analysis 감지
    • "안녕하세요" → general → 기본 모델 유지 (라우팅 안함)
  6. 상태바에 "라우팅: coding → [모델명]" 표시 확인