LLM 오케스트레이터 선택
상태
승인
후보군
| 방안 | 설명 |
|---|---|
claude -p CLI subprocess | 로컬 설치된 Claude Code CLI를 ProcessBuilder로 실행. --mcp-config 플래그로 MCP 서버 지정. --output-format stream-json으로 스트리밍 파싱 |
| Anthropic API 직접 호출 | spring-ai-starter-anthropic으로 API 키 기반 호출 |
| OpenAI API | OpenAI ChatCompletion API 사용 |
결정
Anthropic API를 직접 호출하지 않고 로컬 설치된 claude -p CLI를 subprocess로 실행한다.
결정 이유
- 이미 로컬에 Claude Code CLI가 설치돼 있고,
--mcp-config플래그로 MCP 서버를 지정할 수 있다. - Anthropic API 키 없이 Claude Code Pro 구독(월정액)만으로 동작 — 추가 비용 0.
--output-format stream-json플래그로 스트리밍 응답 파싱이 가능하다.ChatApiController가ProcessBuilder로 실행하고CLAUDE_PATH환경 변수로 경로를 주입한다.
검토 대안
| 방안 | 기각 이유 |
|---|---|
| Anthropic API 직접 호출 | API 키 필요, 호출당 과금 발생 |
| OpenAI API | Claude 생태계(MCP 표준)와의 정합성이 낮음 |
트레이드 오프
- 득: 추가 API 비용 없음.
--mcp-config로 외부 MCP 서버도 동일 방식으로 등록 가능. - 실: subprocess 실행 방식이라 LLM 레이턴시에 CLI 기동 시간(~100ms)이 추가된다. 서버 환경에
claudeCLI가 설치돼 있어야 한다.