DeepSeek-Ollama Bridge:让你的 AI 对话更快、更稳、更省心! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Cloverkit
V2EX    分享创造

DeepSeek-Ollama Bridge:让你的 AI 对话更快、更稳、更省心!

  •  
  •   Cloverkit 306 天前 1801 次点击
    这是一个创建于 306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    DeepSeek-Ollama Bridge:让你的 AI 对话更快、更稳、更省心!

    Github Repo

    https://github.com/shengyanli1982/deepseek-ollama-bridge-release

    你是否遇到过这些烦恼?

    • DeepSeek 模型本地部署后重复计算相同问题,算力资源严重浪费
    • 高并发场景下系统不稳定,响应延迟大幅波动
    • 模型输出夹杂思考标签,影响对话体验
    • 服务器资源告急,性能调优无从下手

    解决方案来了!

    DeepSeek-Ollama Bridge 是一款专为 DeepSeek 模型打造的高性能桥接服务,让您的 AI 应用如虎添翼!

    核心特性

    1 智能多层缓存系统

    • 高性能内存热点缓存( 1024 条),极速响应
    • 磁盘持久化存储,不受内存大小限制,支持百万级缓存
    • 对话上下文感知,智能匹配历史应答
    • 自动化清理机制,无需人工维护
    • 灵活的缓存参数配置,轻松应对各类场景
    • 注意:流式输出模式( stream=true )下不启用缓存功能

    2 成熟的流量控制

    • 令牌桶限流保护,防止系统过载
    • Prometheus 指标监控,运行状态一目了然

    3 容器部署支持

    • 支持 Kubernetes 集群部署
    • 优雅启停机制
    • 跨平台兼容性支持
    • 完整的监控指标

    为什么选择 DeepSeek-Ollama Bridge ?

    • 为 DeepSeek 模型优化,同时兼容其他 OpenAI API 规范的模型
    • 开箱即用,可以零配置启动
    • 显著提升响应速度,降低计算成本
    • 自动过滤思考标签(专门针对 DeepSeek 蒸馏模型),输出更清晰专业

    典型应用场景

    1. 高频对话场景

      • 智能客服系统
      • 教育问答平台
      • API 集成服务
    2. 资源受限环境

      • 个人开发环境
      • 边缘计算设备
      • 共享计算集群
    3. 企业级应用

      • 大规模 AI 服务部署
      • 多租户并发访问
      • 成本敏感型业务

    接口文档

    • /health : 健康检查接口
    • /metrics : Prometheus 指标监控接口

    效果展示

    1. 缓存效果

    缓存效果

    2. 流量控制

    流量控制

    快速开始

    只需一行命令,即可启动企业级 AI 加速服务:

    deepseek-ollama-bridge --enable-cache --cache-dir ./cache 

    更多高级配置选项请使用 -h 参数查看帮助文档。

    注:实际性能提升因使用场景和配置而异。欢迎留言反馈问题和改进建议。

    代码示例

    cURL 示例

    curl http://127.0.0.1:3000/v1/chat/completions/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-xxx" \ -d '{ "model": "deepseek-coder", "messages": [ { "role": "user", "content": "写一个冒泡排序算法" } ], "temperature": 0.7 }' 

    Python 示例

    import openai # 设置 API 基础地址(默认为本地服务) openai.api_base = "http://127.0.0.1:3000/v1/chat/completions" # 设置一个占位 API Key (本地服务不校验) openai.api_key = "sk-xxx" # 基础对话示例 def chat_example(): respOnse= openai.ChatCompletion.create( model="deepseek-coder", # 使用 DeepSeek Coder 模型 messages=[ {"role": "user", "content": "写一个 Python 快速排序算法"} ], temperature=0.7 ) print(response.choices[0].message.content) # 带上下文的对话示例 def context_chat_example(): messages = [ {"role": "system", "content": "你是一个专业的编程助手。"}, {"role": "user", "content": "我想实现一个 REST API 。"}, {"role": "assistant", "content": "我可以帮你使用 FastAPI 框架实现。"}, {"role": "user", "content": "好的,请给出具体示例。"} ] respOnse= openai.ChatCompletion.create( model="deepseek-coder", messages=messages, temperature=0.7 ) print(response.choices[0].message.content) if __name__ == "__main__": print("基础对话示例:") chat_example() print("\n 带上下文的对话示例:") context_chat_example() 

    Go 示例

    package main import ( "context" "fmt" "log" openai "github.com/sashabaranov/go-openai" ) func main() { // 创建客户端(使用本地服务地址) client := openai.NewClient("sk-xxx") client.BaseURL = "http://127.0.0.1:3000/v1/chat/completions" // 创建对话请求 req := openai.ChatCompletionRequest{ Model: "deepseek-coder", Messages: []openai.ChatCompletionMessage{ { Role: openai.ChatMessageRoleUser, Content: "用 Go 实现一个简单的 HTTP 服务器", }, }, Temperature: 0.7, } // 发送请求 resp, err := client.CreateChatCompletion(context.Background(), req) if err != nil { log.Printf("对话请求失败: %v\n", err) return } // 输出响应 fmt.Println(resp.Choices[0].Message.Content) // 带上下文的对话示例 contextReq := openai.ChatCompletionRequest{ Model: "deepseek-coder", Messages: []openai.ChatCompletionMessage{ { Role: openai.ChatMessageRoleSystem, Content: "你是一个专业的 Go 开发专家。", }, { Role: openai.ChatMessageRoleUser, Content: "解释什么是依赖注入", }, }, Temperature: 0.7, } contextResp, err := client.CreateChatCompletion(context.Background(), contextReq) if err != nil { log.Printf("上下文对话请求失败: %v\n", err) return } fmt.Println("\n 带上下文的对话响应:") fmt.Println(contextResp.Choices[0].Message.Content) } 

    NodeJS 示例

    const { Configuration, OpenAIApi } = require("openai"); // 配置 OpenAI API const cOnfiguration= new Configuration({ basePath: "http://127.0.0.1:3000/v1/chat/completions", apiKey: "sk-xxx", }); const openai = new OpenAIApi(configuration); // 基础对话示例 async function basicChatExample() { try { const respOnse= await openai.createChatCompletion({ model: "deepseek-coder", messages: [{ role: "user", content: "用 Express 实现一个 RESTful API" }], temperature: 0.7, }); console.log("基础对话响应:", response.data.choices[0].message.content); } catch (error) { console.error("对话请求失败:", error.message); } } // 带上下文的对话示例 async function contextChatExample() { try { const respOnse= await openai.createChatCompletion({ model: "deepseek-coder", messages: [ { role: "system", content: "你是一个专业的 Node.js 开发专家。" }, { role: "user", content: "如何实现一个 WebSocket 服务器?" }, ], temperature: 0.7, }); console.log("\n 带上下文的对话响应:"); console.log(response.data.choices[0].message.content); } catch (error) { console.error("对话请求失败:", error.message); } } // 执行示例 async function main() { console.log("=== 基础对话示例 ==="); await basicChatExample(); console.log("\n=== 带上下文的对话示例 ==="); await contextChatExample(); } main().catch(console.error); 
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2491 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:39 PVG 10:39 LAX 18:39 JFK 21:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86