OpenAI 호환성은 spectrum
모든 local engine이 OpenAI-compatible이라고 말해. 실제로도 다 거의 호환돼. 차이는 예측은 되는데 표준화는 안 돼 있어:
- Streaming 형식. 다 SSE를 뱉는데 chunk 모양이 조금씩 달라.
- Tool calling. Native Ollama는 args를 dict로 풀어서 주고, OpenAI는 JSON 문자열로 뱉고, 어떤 engine은 또 다르게 감싸.
- Structured output. Ollama는 JSON Schema를
format필드에 받고, OpenAI는response_format, vLLM은guided_json이야. 같은 아이디어에 다른 키. - Token counting. token usage 필드가 조금씩 다르거나, 아예 없기도 해.
호환성 어떻게 test?
Label을 믿지 마. 네가 실제로 쓰는 기능만 골라서 돌려보는 작은 test suite를 만들어. 아래가 local-AI 호환성 test의 정석이야:
- 단순 message로 non-streaming chat.
- 같은 message로 streaming chat.
- Multi-turn 대화 (system + user + assistant).
- Tool 정의 + multi-turn tool loop.
- Structured output (JSON Schema).
- 응답의 token usage.
어떤 engine이 여섯 개를 다 통과하면 app을 안 고치고 그 engine으로 갈아탈 수 있어. 4번이나 5번이 걸리면 engine별 shim을 하나 써야 한다고 각오해.