GitHub: CNSeniorious000/oai2ollama¶
oai2ollama¶
OpenAI API 转 Ollama API 的代理。让 GitHub Copilot 支持自定义 OpenAI 兼容后端。
Success
从 Copilot 支持 Ollama 切入,反向 mock API。意外火了,14 星。
功能¶
- 伪装 Ollama API,转发到 OpenAI 兼容服务
- 支持流式响应和模型列表
- 一行命令启动
实现¶
核心是 oai2ollama/_app.py:用 FastAPI 接收 v1/chat/completions 等 OpenAI-兼容请求,转换/转发给 Ollama 或其它兼容后端,并在 stream 模式下用 StreamingResponse 原样转发流式输出;/models 路径被封装为模型列举代理以兼容 Copilot/VS Code 的模型枚举。__init__.py 提供了 start() 的 CLI 启动入口,config.py(pydantic-settings)暴露 --api-key/--base-url/--models/--capabilities 等 CLI/env 配置项,便于一行命令快速启动并适配 Copilot 的使用场景。
参考源码:oai2ollama/_app.py(FastAPI handlers、streaming) · oai2ollama/config.py(pydantic CLI/env 管理) · oai2ollama/__init__.py(start() entry)
我的巧思¶
- 逆向 Copilot:官方不改,我工具化。uvx 一键。
- 模型伪装:后端空也行,自报常见名。
- 轻量:无外部依赖,pip 后即用。
相关项目¶
- bascodes/copilot-ollama:Windows hack。
- xrip/ollama-api-proxy:反向代理。
- ollama-openai-proxy:双向透明。
用 uvx oai2ollama 试试!
重要源码 / 文档¶
- README: README.md
- 项目配置:pyproject.toml
- 代码目录:oai2ollama/ (源码)
深入洞见¶
在实现层 oai2ollama/_app.py 明确展示了两条关键能力:对 /v1/chat/completions 的请求进行格式转换/转发并在 stream 模式下通过 StreamingResponse 原样转发字节流以支持 Copilot 风格的流式交付;/models 路径被包装成模型列举代理以便兼容那些只查询可用模型的客户端(例如 Copilot 或 VS Code)。config.py 与 __init__.py 表明该仓库同时把 CLI 启动与 env/CLI 配置(pydantic-settings)做到位,从而实现“一行启动 + Copilot 兼容”的使用场景。
参考源码:oai2ollama/_app.py(streaming / models proxy) · oai2ollama/config.py(pydantic 配置)