探索 DeepSeek API - 聊天补全及更多功能 - SerpApi
探索 DeepSeek API 是一项令人兴奋的体验。作为 OpenAI 的潜在竞争对手,DeepSeek 提供了许多功能强大的 API 接口。然而,目前该 API 的稳定性仍在优化中,部分功能可能需要较长的响应时间,甚至返回意外结果。以下是对 DeepSeek API 的详细探索。
开始使用 DeepSeek API
在使用 DeepSeek API 时,需要注意当前对该服务的需求非常高,因此可能会遇到“503 服务暂时不可用”的错误提示。以下是目前可用的定价和模型信息。
DeepSeek 聊天与推理模型
DeepSeek 提供了两种主要模型:
- DeepSeek Chat:适用于基本的聊天补全功能,基于
deepseek-v3版本。 - 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 支持聊天前缀补全功能,允许用户提供部分响应的开头和结尾。以下是使用该功能时需要注意的几点:
- 消息列表中的最后一个角色必须是
assistant。 - 设置
prefix参数为true。 - 需要使用测试版的
base_url:https://api.deepseek.com/beta。 - 可通过
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 输出的规则:
- 在
system_prompt中包含 “json” 一词。 - 设置
response_format参数为{'type': 'json_object'}。 - 可选:设置
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/
最新文章
- 探索 DeepSeek API – 聊天补全及更多功能 – SerpApi
- 如何高效使用Nextjs API路由 – NextBuild
- Go-Zero定义API实战:探索API语法规范与最佳实践
- FastAPI-Cache2:一个让接口飞起来的缓存神器
- 避免工作日灾难:11种常见API错误及其解决方案
- 从Google Doodle AI看图像互动API的创新应用
- 如何获取飞书API开放平台访问token分步指南
- 漏洞分析 | xxl-job前台api未授权Hessian2反序列化
- 免费使用Poe AI API实现项目智能化的完整指南
- REST API vs gRPC:传统API和RPC框架的对比
- 使用 Auth0 向 Sinatra API 添加授权
- API Gateway vs Load Balancer:选择适合你的网络流量管理组件