环境

  • 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.comhttps://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又包含 rolecontent 等内容。

  • model :模型,可选项为:

    • deepseek-chat :DeepSeek-V3
    • deepseek-reasoner :DeepSeek-R1
  • frequency_penaltypresence_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 的结果。注:不建议同时更改 temperaturetop_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) (注意 37 是用户告诉AI的)这些函数调用请求,由用户负责计算结果并告诉AI,最后AI给出最终计算结果。

参考

  • https://platform.deepseek.com
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐