Skip to content
This repository was archived by the owner on Jan 4, 2026. It is now read-only.

chooop/deepseek-r1-chat-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azure Deepseek R1 Chat Service

基于 FastAPI 和 Azure 部署 Deepseek R1 的聊天服务 API proxy

Python Version FastAPI Docker License PRs Welcome

🌟 亮点特性

  • 🧠 强大的推理能力和思维链输出
  • 🚀 支持流式响应和普通响应
  • 🛡️ 完整的错误处理和日志记录
  • 🌍 CORS 跨域支持
  • 💡 健康检查接口
  • 🔄 OpenAI 兼容接口
  • 🎨 集成 OpenWebUI 提供友好的用户界面

📝 模型说明

DeepSeek-R1 是一个专注于推理任务的大型语言模型:

  • 总参数量: 671B (37B 活跃参数)
  • 上下文长度: 128K tokens 比官网多 2x
  • 思维链输出: 支持通过 标签输出推理过程
  • 最大输出: 8K tokens (不含思维链输出)

特点

  • 采用步进式训练过程
  • 擅长语言、科学推理和编程任务
  • 结合强化学习和精选数据集微调
  • 在推理基准测试中达到领先性能

使用建议

  1. 不要添加系统提示词,所有指令应包含在用户提示中
  2. 对于数学问题,建议在提示中包含:"Please reason step by step, and put your final answer within \boxed{}"
  3. 评估模型性能时,建议进行多次测试并取平均值
  4. 注意: 思维链输出(包含在 标签中)可能包含比最终响应更敏感的内容,在生产环境中可能需要考虑是否展示

🚀 快速开始

环境准备

cp .example.env .env

配置环境变量

编辑 .env 文件:

AZURE_INFERENCE_CREDENTIAL=<你的Azure密钥>
AZURE_INFERENCE_ENDPOINT=<你的Azure端点>

启动服务

docker compose up --build

服务启动后:

服务配置说明

  • API 服务配置:

    • 资源限制: CPU 最大 2 核,内存 4G
    • 资源预留: CPU 最小 1 核,内存 2G
    • 健康检查: 每 30 秒检查一次/health 接口
    • 日志配置: 单文件最大 20M,保留 5 个文件
    • 自动重启: 容器异常退出时自动重启
    • 优雅停止: 等待 30 秒完成清理
  • OpenWebUI 配置:

    • 默认端口:3000
    • 数据持久化:使用 Docker volume 存储
    • 自动更新:使用最新的 main 分支镜像

📚 API 文档

OpenAI 兼容接口

HTTP 请求示例

POST /v1/chat/completions
Content-Type: application/json

{
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ],
    "stream": false,
    "max_tokens": 1000,
    "temperature": 0.7,
    "top_p": 1.0
}

Python OpenAI 客户端示例

from openai import OpenAI

# 创建客户端实例
client = OpenAI(api_key="fake-key", base_url="http://localhost:8000/v1")

# 发送普通请求
response = client.chat.completions.create(
    model="DeepSeek-R1",
    messages=[{"role": "user", "content": "你好,请介绍下自己"}]
)

# 分别打印推理过程和最终答案
message = response.choices[0].message
# type: ignore[attr-defined]
message_dict = message.model_dump() if hasattr(message, "model_dump") else vars(message)
reasoning_content = message_dict.get("reasoning_content", "")  # 获取推理过程
content = message_dict.get("content", "")  # 获取最终答案
print(f"推理过程: {reasoning_content}")
print(f"最终回答: {content}")

# 发送流式请求
stream = client.chat.completions.create(
    model="DeepSeek-R1",
    messages=[{"role": "user", "content": "给我讲个故事"}],
    stream=True,
)

# 分别收集推理过程和最终答案
reasoning_content = ""
content = ""

for chunk in stream:
    delta = chunk.choices[0].delta
    # type: ignore[attr-defined]
    delta_dict = delta.model_dump() if hasattr(delta, "model_dump") else vars(delta)

    if "reasoning_content" in delta_dict:  # 收集推理过程
        delta_reasoning = delta_dict["reasoning_content"]
        if isinstance(delta_reasoning, str):
            reasoning_content += delta_reasoning
    elif "content" in delta_dict:  # 收集最终答案
        delta_content = delta_dict["content"]
        if isinstance(delta_content, str):
            content += delta_content

print(f"\n推理过程: {reasoning_content}")
print(f"最终回答: {content}")

Azure AI 接口

POST /chat/completions
Content-Type: application/json

{
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ],
    "stream": false,
    "temperature": 0.7,
    "top_p": 1.0,
    "frequency_penalty": 0.0,
    "presence_penalty": 0.0
}

系统接口

接口 方法 描述
/health GET 健康检查
/info GET 获取模型信息

🔧 配置参数

OpenAI 兼容接口参数 (/v1/chat/completions)

参数 类型 描述 必填 默认值 范围
messages array 对话消息列表 - -
stream boolean 是否使用流式响应 false true/false
max_tokens integer 最大生成 token 数 - 0-8192
model string 模型名称 "DeepSeek-R1" -

注意:响应中会包含额外的 reasoning_content 字段,用于获取模型的推理过程。

Azure AI 接口参数 (/chat/completions)

参数 类型 描述 必填 默认值 范围
messages array 对话消息列表 - -
stream boolean 是否使用流式响应 false true/false
max_tokens integer 最大生成 token 数 - 0-8192
temperature number 采样温度 - 0.0-2.0
top_p number 核采样概率 - 0.0-1.0
frequency_penalty number 频率惩罚 - -2.0-2.0
presence_penalty number 存在惩罚 - -2.0-2.0
stop string/array 停止生成的标记 - -
seed integer 随机数种子 - -
response_format object 响应格式配置 - -
tools array 可用工具列表 - -
tool_choice string/object 工具选择配置 - -

🛠️ 技术栈

  • Python 3.13+
  • FastAPI
  • Docker & Docker Compose
  • Loguru
  • Azure AI SDK
  • OpenWebUI

🤝 参与贡献

欢迎所有形式的贡献,无论是新功能、文档改进还是问题反馈!

  1. Fork 本仓库
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的改动 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

💬 社区讨论

📄 开源协议

本项目采用 MIT 协议开源 - 查看 LICENSE 文件了解更多细节

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors