DeepSeek API
DeepSeek API
环境
- CentOS 7.9
- Windows 11 专业版
DeepSeek API
注册登录
登录DeepSeek开放平台 https://platform.deepseek.com
。如果尚未注册,要先注册一下。
创建API key
点击左侧的 API keys
,在这里创建一个API key:
在稍后与DeepSeek通过API交互时,需要带上该API key。
充值
大部分API是需要收费的,网站上有详细的价格细节,总之不算太贵,可以先买10块钱的试试。
点击左侧的 充值
,通过微信或者支付宝充值:
API接口文档
点击左侧的 接口文档
,可以查看接口文档。
DeepSeek API 使用与 OpenAI 兼容的 API 格式,其base URL是 https://api.deepseek.com
或 https://api.deepseek.com/v1
。
页面上已经提供了很多的API示例。
比如:“查询余额”的例子( https://api-docs.deepseek.com/zh-cn/api/get-user-balance
)。
这个API貌似是免费的。在右侧输入API key,点击 SEND API REQUEST
按钮,即可查询到余额:
注:可以用curl、python、go等多种方式向DeepSeek发送API请求,上图中使用的是php方式。
curl调用API
下面我们用 curl
方式,手工向DeepSeek发送API请求试一下(我是在Linux下使用 curl
命令):
$ curl -L -X GET 'https://api.deepseek.com/user/balance' -H 'Accept: application/json' -H "Authorization: Bearer $token" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 133 100 133 0 0 78 0 0:00:01 0:00:01 --:--:-- 78
{
"is_available": true,
"balance_infos": [
{
"currency": "CNY",
"total_balance": "9.58",
"granted_balance": "0.00",
"topped_up_balance": "9.58"
}
]
}
注意: $token
是变量,所以外面要用双引号。
注:
- 如果想显示HTTP code,则可以加上
-w "%{http_code}\n"
- 如果不想显示时间等细节,可以加上
--silent
:
$ curl -w "%{http_code}\n" --silent -L -X GET 'https://api.deepseek.com/user/balance' -H 'Accept: application/json' -H "Authorization: Bearer $token" | jq .
{
"is_available": true,
"balance_infos": [
{
"currency": "CNY",
"total_balance": "9.58",
"granted_balance": "0.00",
"topped_up_balance": "9.58"
}
]
}
200
查询余额使用的是 /user/balance
接口。
如果是聊天,则需要用 /chat/completions
接口,这也是DeepSeek最常用的API接口,其常用参数如下:
messages
:消息,是一个对象数组,对象可以是:- System message
- User message
- Assistant message
- Tool message
每种message又包含 role
、 content
等内容。
-
model
:模型,可选项为:deepseek-chat
:DeepSeek-V3deepseek-reasoner
:DeepSeek-R1
-
frequency_penalty
和presence_penalty
:介于 -2.0 和 2.0 之间的数字,值越大越容易受到惩罚。前者是根据token出现频率受到惩罚,后者是根据token是否出现受到惩罚。总之都是值越大,越不容易出现重复的token。 -
max_tokens
:介于 1 到 8192 间的整数(默认值4096),限制一次请求中模型生成 completion 的最大 token 数。输入 token 和输出 token 的总长度受模型的上下文长度的限制。 -
response_format
:输出的格式,例如{ "type": "json_object" }
。
注意: 使用 JSON 模式时,你还必须通过系统或用户消息指示模型生成 JSON。 -
stop
:一个 string 或最多包含 16 个 string 的 list,在遇到这些词时,API 将停止生成更多的 token。 -
stream
:True或False,表示是否以流式发送消息增量。 -
temperature
:介于0和2之间(默认值1)。该值越大,输出越随机。 -
top_p
:小于等于1(默认值1)。模型只会输出前top_p
概率的 token 的结果。注:不建议同时更改temperature
和top_p
。 -
stop
:一个 string 或最多包含 16 个 string 的 list,在遇到这些词时,API 将停止生成更多的 token。 -
logprobs
:是否返回所输出 token 的对数概率。 -
top_logprobs
:一个介于 0 到 20 之间的整数 N,指定每个输出位置返回输出概率 top N 的 token,且返回这些 token 的对数概率。指定此参数时,logprobs 必须为 true。
下面是一个聊天的API示例:
curl -w "%{http_code}\n" --silent -L -X POST 'https://api.deepseek.com/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H "Authorization: Bearer $token" \
--data '{
"messages": [
{
"content": "You are a helpful assistant",
"role": "system"
},
{
"content": "Hi",
"role": "user"
}
],
"model": "deepseek-chat",
"frequency_penalty": 0,
"max_tokens": 2048,
"presence_penalty": 0,
"response_format": {
"type": "text"
},
"stop": null,
"stream": false,
"stream_options": null,
"temperature": 1,
"top_p": 1,
"tools": null,
"tool_choice": "none",
"logprobs": false,
"top_logprobs": null
}' | jq .
完整的示例如下:
$ curl -w "%{http_code}\n" --silent -L -X POST 'https://api.deepseek.com/chat/completions' \
> -H 'Content-Type: application/json' \
> -H 'Accept: application/json' \
> -H "Authorization: Bearer $token" \
> --data '{
> "messages": [
> {
> "content": "You are a helpful assistant",
> "role": "system"
> },
> {
> "content": "Hi",
> "role": "user"
> }
> ],
> "model": "deepseek-chat",
> "frequency_penalty": 0,
> "max_tokens": 2048,
> "presence_penalty": 0,
> "response_format": {
> "type": "text"
> },
> "stop": null,
> "stream": false,
> "stream_options": null,
> "temperature": 1,
> "top_p": 1,
> "tools": null,
> "tool_choice": "none",
> "logprobs": false,
> "top_logprobs": null
> }' | jq .
{
"id": "25f72ebe-e6b5-4bec-8d1e-58485f3650da",
"object": "chat.completion",
"created": 1748314200,
"model": "deepseek-chat",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today? 😊"
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 11,
"total_tokens": 20,
"prompt_tokens_details": {
"cached_tokens": 0
},
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 9
},
"system_fingerprint": "fp_8802369eaa_prod0425fp8"
}
200
本例中,通过system message给AI定义了一个角色: You are a helpful assistant
,然后user向AI打招呼 Hi
,AI返回了响应: Hello! How can I assist you today? 😊
多轮对话
DeepSeek /chat/completions
API 是一个“无状态” API,即服务端不记录用户请求的上下文,用户在每次请求时,需将之前所有对话历史拼接好后,传递给对话 API。
前面提到, messages
参数是一个数组。在对轮对话时,需要把前面所有的message(包括用户请求和AI响应)都包含在内。例如:
在第一轮请求时,message如下:
[
{"role": "user", "content": "What's the highest mountain in the world?"}
]
在获取AI响应之后,发起第二轮请求,message如下:
[
{"role": "user", "content": "What's the highest mountain in the world?"},
{"role": "assistant", "content": "The highest mountain in the world is Mount Everest."},
{"role": "user", "content": "What is the second?"}
]
Function Calling
即函数调用。也就是说,模型能够调用外部工具,来增强自身能力。注意这里的函数是用户自定义的函数。
在与AI模型交互时,用户需要先告知AI有哪些函数,包含函数名、函数描述、参数等信息。然后用户在相关聊天时,AI可能会返回一个函数调用的请求。用户在调用函数之后,把返回结果告诉AI,然后继续聊天。
一个例子是算术四则运算,假设AI理解四则运算的优先级规则,但是不会真正的算术,这时就可以利用Function Calling来辅助AI完成任务。
比如:要计算 (1 + 2) * (3 + 4)
,先告诉AI有 add()
和 multiply()
函数,然后让AI计算该算式,AI就会返回 add(1, 2)
、 add(3, 4)
、 multiply(3, 7)
(注意 3
和 7
是用户告诉AI的)这些函数调用请求,由用户负责计算结果并告诉AI,最后AI给出最终计算结果。
参考
https://platform.deepseek.com
更多推荐
所有评论(0)