Vision LLM dispatcher 4종 실측 — Claude CLI 41s / Groq 76s / Gemini 8-15s
ScreenBridge dispatcher 4종 (Claude CLI subprocess / Anthropic API / Groq Llama 4 Scout / Gemini 2.5 Flash) 같은 fixture로 실측. WebSearch 추정 무너지고 vendor 공식 docs 직접 확인이 결국 가장 빠른 진실. Gemini Flash 채택 + responseSchema 강제.
AI version
컨텍스트
ScreenBridge v0.1 dogfooding 진입에서 latency가 critical — 매 호출 30초+면 daily 사용 안 함. 사용자 명시: "API 키 안 쓰고 무료로 빠르게, 다만 할루시네이션 금지". 4 dispatcher 후보 실측.
후보 + 실측
| Dispatcher | 모델 | 호출 시간 | 좌표 인식 | 무료성 |
|---|---|---|---|---|
ClaudeCliDispatcher | sonnet-4-6 (Pro 구독) | 41초 | ✓ [334,155,370,220] | ✓ 구독 |
AnthropicDispatcher | sonnet-4-6 API | ~10-15초 (미측정) | (sonnet 동일) | ✗ $0.02/호출 |
GroqDispatcher | Llama 4 Scout 17B (preview) | 76초 | ✗ coords=None | ✓ 1000 RPD |
GeminiDispatcher | gemini-2.5-flash | 8-15초 | 처음엔 1/3, schema 박은 후 ~100% | ✓ 250 RPD |
WebSearch 추정 vs 실측
WebSearch에서 발견:
- "Groq sub-200ms TTFT, 300-1000 tps" → Groq vision도 빠를 거 추정 (1-5초)
- "Gemini multimodal native" → vision 정확도 우수 추정
실측:
- Groq 76초 — 추정 1-5초 vs 15배 느림
- Gemini 8-15초 — 추정 적중 + 좌표 인식은 schema 박은 후 안정
Groq 76초의 진짜 원인 분석
검색의 "300-1000 tps"는 텍스트 모델 (Llama 3.3 70B) 기준이었다. Vision은:
1. image encoder (PNG → token sequence) ← LPU 최적화 안 됨 가능성
2. text token generation ← 이 단계만 LPU 빠름LPU의 강점은 token gen throughput. 이미지 encoder는 conv/transformer 다른 연산이고, Llama 4 Scout 17B는 preview 상태라 vision encoder가 production LPU pipeline에 미반영 가능. Groq vision docs에 latency 수치 0개 — 측정 데이터 자체 비공개.
교훈: 텍스트 inference 벤치마크를 vision에 외삽 X. vendor docs 직접 fetch가 가장 빠른 진실.
Gemini 채택 + responseSchema 강제
3회 측정 중 2회 parse 실패. raw_len 173-174의 짧은 응답이 free-form 텍스트로 옴.
Fix: generationConfig.responseMimeType: "application/json" + responseSchema 명시:
{
"type": "object",
"properties": {
"screen_state": {"type": "string"},
"next_action": {"type": "string"},
"target_text": {"type": "string"},
"coordinates": {"type": "array", "items": {"type": "integer"}, "minItems": 4, "maxItems": 4},
"reasoning": {"type": "string"}
},
"required": ["screen_state", "next_action", "target_text", "reasoning"]
}이후 parse 안정 100%.
vendor별 strict JSON 메커니즘
- Anthropic: SYSTEM_PROMPT 텍스트만으로 거의 항상 작동 (sonnet은 99%+ JSON 출력)
- Gemini:
generationConfig.responseSchema명시 필요 - Groq:
response_format: { type: "json_object" } - OpenAI:
response_format: { type: "json_schema", json_schema: { ... } }
vendor swap 시 dispatcher 코드에 vendor-specific JSON enforcement 매번. 한 번에 박을 것.
최종 매트릭스 (DECISIONS.md "시간 단축 옵션 매트릭스")
dogfooding 합리적 선택:
- Gemini 2.5 Flash + responseSchema + 다운스케일 ← 채택 — 무료 1000 RPD, 8-15초, vision 좌표 안정
- claude CLI Pro 구독 — sonnet 정확도 최고, 41초 느림
- Anthropic API + sonnet — 빠르고 정확, 월 $10
- Groq — 폐기 (76초 + 좌표 실패)
또 OCR + element matching (다음 mdx) 도입 후 LLM 좌표 추정 자체 미사용 → vendor 무관 정확도 한 단계 ↑.
한 줄 결론
WebSearch는 방향만 줌. 진짜 데이터는 vendor docs + 실측에서. 추정 인용 시 "검증 안 됨" 명시 필수.
Review needed
No human review on this entry yet.