DeepSeek API 支持的功能调用 Function Call 具体配置参数有哪些

文章导读
DeepSeek API 的功能调用功能通过兼容 OpenAI 格式的 `tools` 参数实现,核心配置包含函数名称、描述及 JSON Schema 格式的参数定义。开发者需在请求体中声明可用函数列表,模型会根据意图自动返回函数调用请求而非直接文本。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

DeepSeek API 的功能调用功能通过兼容 OpenAI 格式的 `tools` 参数实现,核心配置包含函数名称、描述及 JSON Schema 格式的参数定义。开发者需在请求体中声明可用函数列表,模型会根据意图自动返回函数调用请求而非直接文本。

先说结论:DeepSeek API 通过 `tools` 参数配置函数调用,要求函数定义严格遵循 JSON Schema 规范。

  • 适合:需要模型连接外部系统或查询实时数据的场景
  • 先准备:符合 JSON Schema 规范的函数定义文件
  • 验收:检查返回消息中是否包含 `tool_calls` 字段

快速处理思路

配置函数调用无需特殊 SDK,直接在 Chat Completions 请求中增加 `tools` 数组即可。以下为核心配置片段,直接替换请求体中的对应部分:

"tools": [
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "获取指定城市的天气信息",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "城市名称"}
        },
        "required": ["location"]
      }
    }
  }
]

为什么会这样

DeepSeek API 设计为完全兼容 OpenAI 接口格式,因此复用了对方的函数调用协议。

DeepSeek API 支持的功能调用 Function Call 具体配置参数有哪些

这种兼容性意味着开发者无需修改原有基于 OpenAI 编写的代码即可迁移,模型内部通过意图识别引擎解析用户输入,匹配预注册的函数名和参数结构。当模型判断需要外部数据时,不会直接生成文本答案,而是返回结构化的函数调用请求,由开发者执行后再将结果回传给模型。

分步处理

按以下步骤完成函数调用配置,确保每一步都有明确的检查点:

DeepSeek API 支持的功能调用 Function Call 具体配置参数有哪些
  1. 定义函数 Schema:编写 JSON Schema 描述函数名、参数类型及必填项,确保描述清晰以便模型理解。
  2. 构建请求体:在 `/chat/completions` 接口的 `messages` 之外,添加 `tools` 字段填入定义好的函数列表。
  3. 设置调用策略:可选配置 `tool_choice` 参数,设为 `auto` 让模型决定,或指定具体函数名强制调用。
  4. 处理响应:解析返回数据,若存在 `tool_calls` 则执行对应代码,并将执行结果以 `tool` 角色回传。

怎么验证是否生效

验证的核心是检查 API 响应对象中是否包含工具调用指令,而非普通文本内容。

查看响应 JSON 中的 `choices[0].message.tool_calls` 字段,若该字段存在且包含函数名和参数,说明配置生效。若返回的是 `content` 文本且无 `tool_calls`,则模型未触发函数调用,需检查函数描述是否足够清晰或用户意图是否明确。

常见坑

  • Schema 格式错误:参数定义不符合 JSON Schema 规范会导致模型无法识别,建议先用在线工具验证 Schema 合法性。
  • 敏感信息泄露:不要在函数描述或参数中硬编码 API 密钥,密钥应存储在服务器环境变量中。
  • 无限循环风险:若模型反复调用同一函数且未获得有效结果,需设置最大重试次数防止死循环。

常见问题

函数调用失败返回空内容怎么办

检查函数描述的清晰度,模型可能无法理解何时该调用函数。

DeepSeek API 支持的功能调用 Function Call 具体配置参数有哪些

支持同时定义多个函数吗

支持,在 `tools` 数组中依次添加多个函数定义即可,模型会自动选择最合适的一个。

需要额外付费开启此功能吗

不需要,函数调用是模型原生能力,按正常 Token 用量计费,无额外功能费。

参考来源

  • DeepSeek API 调用完整教程 (保姆级)Python/JS/cURL 全示例 + 流式输出 + 函数调用_deep seek-CSDN 博客
  • DeepSeek 调用 API 实时查天气:FunctionCalling 技术全解析与实战指南
  • DeepSeek-V2 的 API 文档详解:参数与返回值说明-CSDN 博客
  • DeepSeek 官方控制台:https://platform.deepseek.com/