Skip to content

Repository files navigation

OllamaToOpenAI

OllamaToOpenAI 是一个基于 ASP.NET Core 的轻量代理服务,用于将 Ollama 风格接口请求转换并转发到 OpenAI 兼容的 Chat Completions 接口。

功能特性

  • 兼容 Ollama /api/chat/api/generate 接口。
  • 兼容 OpenAI /v1/chat/completions/chat/completions 接口透传。
  • 支持流式与非流式响应。
  • 支持按模型前缀路由到不同 OpenAI 兼容服务。
  • 支持多个同前缀节点失败切换。
  • 自动记录请求、响应和失败切换日志。

环境要求

  • .NET 8.0 SDK

快速开始

  1. 复制示例配置文件:
copy appsettings.example.json appsettings.json
  1. 修改 appsettings.json 中的代理地址、API Key 和默认模型。
  2. 启动服务:
dotnet run

默认监听地址由 appsettings.json 中的 Kestrel:Endpoints:Http:Url 控制,示例配置为:

http://0.0.0.0:11434

配置说明

核心配置位于 Proxy 节点:

配置项 说明
TargetUrl 默认 OpenAI 兼容 Chat Completions 接口地址。
ApiKey 默认后端服务 API Key。
DefaultModel 请求未指定模型时使用的默认模型。
Routes 按模型前缀匹配的后端路由列表。
Routes[].ModelPrefix 模型前缀,例如gpt-deepseek-claude-
Routes[].TargetUrl 当前模型前缀对应的后端接口地址。
Routes[].ApiKey 当前模型前缀对应的后端 API Key。

路由匹配规则:

  • 优先匹配最长 ModelPrefix
  • 同一个前缀配置多个节点时,会按配置顺序尝试失败切换。
  • 未匹配任何模型前缀时,使用 Proxy 根节点的默认配置。

支持接口

接口 说明
POST /api/chat Ollama Chat 接口,转换为 OpenAI Chat Completions 请求。
POST /api/generate Ollama Generate 接口,转换为 OpenAI Chat Completions 请求。
POST /v1/chat/completions OpenAI 兼容接口,原始请求体透传。
POST /chat/completions OpenAI 兼容接口,原始请求体透传。

示例请求

Ollama Chat

curl http://localhost:11434/api/chat `
  -H "Content-Type: application/json" `
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"你好"}],"stream":false}'

OpenAI Chat Completions

curl http://localhost:11434/v1/chat/completions `
  -H "Content-Type: application/json" `
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"你好"}],"stream":false}'

日志

服务会将请求、响应和失败切换信息写入运行目录下的 logs 文件夹,日志文件按日期生成。

安全说明

  • appsettings.json 包含真实密钥,已被 .gitignore 忽略,请勿提交。
  • 仓库中仅保留 appsettings.example.json 作为示例配置。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages