跳转至

第三章:DeepSeek 集成

简介

DeepSeek 是国产大模型,特点:

  • 性价比极高:价格是 GPT-4 的 1/50
  • 代码能力强:DeepSeek-Coder 专注代码生成
  • 兼容 OpenAI:API 格式完全兼容
  • 支持长文本:最大 128K 上下文
  • 推理模型:R1 支持复杂推理

模型概览(2026)

模型 特点 适用场景
deepseek-chat 通用对话 日常对话、内容生成
deepseek-reasoner 推理模型 复杂推理、数学、代码

获取 API Key

  1. 访问 https://platform.deepseek.com/
  2. 注册并登录
  3. 创建 API Key

基本使用

初始化客户端

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://api.deepseek.com"
)

对话补全

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "你是一个助手"},
        {"role": "user", "content": "你好"}
    ]
)

print(response.choices[0].message.content)

流式输出

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "写一首诗"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

DeepSeek Reasoner(R1 推理模型)

R1 是 DeepSeek 的推理模型,擅长复杂推理、数学和代码:

推理任务

response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=[
        {
            "role": "user",
            "content": "一个球从 100 米高处自由落体,每次反弹高度是原来的一半,问总共走了多少米?"
        }
    ]
)

print(response.choices[0].message.content)

代码生成

response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=[
        {
            "role": "user",
            "content": "用 Python 实现一个 LRU 缓存,支持 get 和 put 操作"
        }
    ]
)

print(response.choices[0].message.content)

数学问题

response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=[
        {
            "role": "user",
            "content": "证明:根号2是无理数"
        }
    ]
)

print(response.choices[0].message.content)

高级功能

函数调用

tools = [
    {
        "type": "function",
        "function": {
            "name": "search_web",
            "description": "搜索互联网获取信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "搜索关键词"}
                },
                "required": ["query"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "今天北京天气怎么样"}],
    tools=tools
)

if response.choices[0].message.tool_calls:
    tool_call = response.choices[0].message.tool_calls[0]
    print(f"调用函数: {tool_call.function.name}")
    print(f"参数: {tool_call.function.arguments}")

JSON 输出

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "列出三个水果,返回JSON格式"}],
    response_format={"type": "json_object"}
)

import json
data = json.loads(response.choices[0].message.content)
print(data)

FIM 补全(Fill-In-the-Middle)

DeepSeek 支持代码补全模式:

response = client.completions.create(
    model="deepseek-chat",
    prompt="def fibonacci(n):\n    # 计算斐波那契数列\n    ",
    max_tokens=100
)

print(response.choices[0].text)

价格对比

模型 输入价格 输出价格 相当于 GPT-4
deepseek-chat ¥1/百万 tokens ¥2/百万 tokens 1/50
deepseek-reasoner ¥4/百万 tokens ¥16/百万 tokens 1/10

缓存价格(DeepSeek 也支持缓存): - 缓存命中:输入价格降低 75%

完整示例

from openai import OpenAI

class DeepSeekClient:
    def __init__(self, api_key: str):
        self.client = OpenAI(
            api_key=api_key,
            base_url="https://api.deepseek.com"
        )

    def chat(self, prompt: str, system: str = "你是一个助手", stream: bool = False):
        """普通对话"""
        if stream:
            return self._stream_chat(prompt, system)
        return self._sync_chat(prompt, system)

    def _sync_chat(self, prompt: str, system: str):
        response = self.client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": system},
                {"role": "user", "content": prompt}
            ]
        )
        return response.choices[0].message.content

    def _stream_chat(self, prompt: str, system: str):
        response = self.client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": system},
                {"role": "user", "content": prompt}
            ],
            stream=True
        )
        for chunk in response:
            if chunk.choices[0].delta.content:
                yield chunk.choices[0].delta.content

    def reason(self, prompt: str):
        """复杂推理任务"""
        response = self.client.chat.completions.create(
            model="deepseek-reasoner",
            messages=[{"role": "user", "content": prompt}]
        )
        return response.choices[0].message.content

# 使用
client = DeepSeekClient("sk-xxx")

# 普通对话
answer = client.chat("介绍一下 Python")
print(answer)

# 流式输出
for text in client.chat("写一首诗", stream=True):
    print(text, end="", flush=True)

# 复杂推理
result = client.reason("证明:所有素数大于等于2")
print(result)

DeepSeek vs GPT-5.4

对比项 DeepSeek Chat GPT-5.4 mini
输入价格 ¥1/1M (~$0.14) $0.75/1M
输出价格 ¥2/1M (~$0.28) $4.50/1M
上下文长度 128K 270K
代码能力
推理能力 一般
多模态

选择建议: - 成本敏感 → DeepSeek Chat - 需要多模态 → GPT-5.4 - 复杂推理 → DeepSeek Reasoner 或 GPT-5.4

小结

本章学习了:

  • ✅ DeepSeek 简介
  • ✅ deepseek-chat 基本使用
  • ✅ deepseek-reasoner 推理模型
  • ✅ 函数调用和 JSON 输出
  • ✅ 价格优势分析

下一章

第四章:通义千问集成 - 学习通义千问 Qwen3 API 使用。