왜 이 proxy 만들어?
대부분 cloud-shape chat UI랑 SDK (OpenAI Python SDK, Vercel AI SDK, LangChain streaming hook)가 SSE 소비. Frontend 다시 안 짜고 Ollama drop-in하려면 NDJSON → SSE 변환하는 작은 proxy 만들어.
변환의 모양
- Ollama emit
{json}\n; SSE는data: {json}\n\n원함. - OpenAI-compatible SSE client는 끝에
data: [DONE]\n\nsentinel 기대. data:안의 chunk shape는 보통 OpenAI delta shape으로 reformat 필요:{"choices": [{"delta": {"content": "..."}}]}.
OpenAI 호환성 reinvent하지 마
Ollama 이미 /v1/chat/completions를 OpenAI-compatible endpoint로 노출해. "drop-in OpenAI SDK"만 필요하면 SDK base_url을 http://localhost:11434/v1로 가리키면 proxy skip 가능. Ollama compat endpoint가 안 하는 변환 (커스텀 auth, observability, request shaping) 필요할 때만 자체 proxy 만들어.