探索 DeepSeek API - 聊天补全及更多功能 - SerpApi

作者:API传播员 · 2025-12-04 · 阅读时间:5分钟

探索 DeepSeek API 是一项令人兴奋的体验。作为 OpenAI 的潜在竞争对手,DeepSeek 提供了许多功能强大的 API 接口。然而,目前该 API 的稳定性仍在优化中,部分功能可能需要较长的响应时间,甚至返回意外结果。以下是对 DeepSeek API 的详细探索。


开始使用 DeepSeek API

在使用 DeepSeek API 时,需要注意当前对该服务的需求非常高,因此可能会遇到“503 服务暂时不可用”的错误提示。以下是目前可用的定价和模型信息。


DeepSeek 聊天与推理模型

DeepSeek 提供了两种主要模型:

  1. DeepSeek Chat:适用于基本的聊天补全功能,基于 deepseek-v3 版本。
  2. DeepSeek Reasoner:适用于更复杂的推理任务,当前版本为 deepseek-r1

特别是 DeepSeek Reasoner 模型,它会生成思维链(Chain of Thought, CoT),以提高响应的准确性。


基本聊天补全功能

DeepSeek API 的接口设计与 OpenAI API 兼容,因此可以直接使用 OpenAI SDK 进行集成。以下是一个使用 Python 的示例代码:

pip3 install openai

from openai import OpenAI

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

response = client.chat.completions.create(
    model="deepseek chat",
    messages=[
        {"role": "system", "content": "你是个有用的助手"},
        {"role": "user", "content": "Tell me about DeepSeek"}
    ],
    stream=False
)

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

聊天前缀补全(测试版)

DeepSeek 支持聊天前缀补全功能,允许用户提供部分响应的开头和结尾。以下是使用该功能时需要注意的几点:

  1. 消息列表中的最后一个角色必须是 assistant
  2. 设置 prefix 参数为 true
  3. 需要使用测试版的 base_urlhttps://api.deepseek.com/beta
  4. 可通过 stop 参数指定完成的结束标志。

以下是一个代码示例:

from openai import OpenAI

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

messages = [
    {"role": "user", "content": "请编写一个二分查找代码"},
    {"role": "assistant", "content": "```pythonn", "prefix": True}
]

response = client.chat.completions.create(
    model="deepseek chat",
    messages=messages,
    stop=["```"]
)

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

FIM 补全(测试版)

DeepSeek 提供了中间填充(Fill-In-the-Middle, FIM)功能,允许用户通过指定前缀和后缀来生成中间内容。以下是一个示例代码:

response = client.completions.create(
    model="deepseek chat",
    prompt="def fib(a):",
    suffix="return fib(a-1) + fib(a-2)",
    max_tokens=128
)

print(response.choices[0].text)

JSON 输出

JSON 输出是 DeepSeek API 的一项重要功能,允许用户从原始查询中提取结构化数据。以下是使用 JSON 输出的规则:

  1. system_prompt 中包含 “json” 一词。
  2. 设置 response_format 参数为 {'type': 'json_object'}
  3. 可选:设置 max_tokens 参数以防止 JSON 字符串被截断。

Node.js 示例代码如下:

const { OpenAI } = require("openai");

const client = new OpenAI({
    baseURL: 'https://api.deepseek.com',
    apiKey: 'YOUR_API_KEY'
});

async function main() {
    const system_prompt = `用户将提供一些句子。请解析“产品”、“数量”、“品牌”并以JSON格式输出。
    示例输入:我需要从沃尔玛购买2kg土豆。
    示例JSON输出:{"产品":"土豆","数量":"2kg","品牌":"沃尔玛"}`;

    const user_prompt = '我儿子需要从Target购买3盒蜡笔。';

    const messages = [
        { role: "system", content: system_prompt },
        { role: "user", content: user_prompt }
    ];

    const response = await client.chat.completions.create({
        model: "deepseek chat",
        messages: messages,
        response_format: { type: "json_object" }
    });

    console.log(response.choices[0].message.content);
}

main();

函数调用

DeepSeek API 支持函数调用功能,允许用户调用自定义函数或外部 API 来执行额外操作。以下是一个示例代码:

def send_messages(messages):
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages,
        tools=tools
    )
    return response.choices[0].message

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取一个位置的天气,用户应该首先提供一个位置",
            "parameters": {"required": ["location"]}
        }
    }
]

messages = [{"role": "user", "content": "雅加达的天气怎么样?"}]
message = send_messages(messages)
print(message.content)

多轮对话支持

DeepSeek API 的聊天功能是无状态的,因此需要将所有历史消息附加到新的请求中,以提供上下文。以下是一个示例代码:

# 第一轮
messages = [{"role": "user", "content": "10+10"}]
response = client.chat.completions.create(
    model="deepseek chat",
    messages=messages
)
messages.append(response.choices[0].message)

# 第二轮
messages.append({"role": "user", "content": "如果我们再添加50条怎么办?"})
response = client.chat.completions.create(
    model="deepseek chat",
    messages=messages
)

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

推理 API

DeepSeek 推理 API 旨在处理复杂的逻辑推理任务。以下是一个示例代码:

messages = [{"role": "user", "content": "9.11和9.8,哪一个更大?"}]
response = client.chat.completions.create(
    model="deepseek reasoner",
    messages=messages
)

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

常见问题

1. 我们如何计算代币使用量?
DeepSeek 提供了详细的代币使用统计,可通过 API 响应中的 usage 字段查看。

2. API 的费率限制是多少?
具体费率限制取决于用户的账户级别,建议参考官方文档。

3. DeepSeek API 免费吗?
目前 DeepSeek 提供免费试用,但某些高级功能可能需要付费订阅。


通过本文的介绍,希望您对 DeepSeek API 的功能有了更深入的了解。未来,随着其功能的完善,DeepSeek 有望成为 AI 开发者的强大工具。

原文链接: https://serpapi.com/blog/explore-deepseek-api/