DSML 工具调用格式完全指南:在 DeepSeek-V4-Pro-0813 中定义工具的 4 个步骤 DSML 工具调用格式完全指南在 DeepSeek-V4-Pro-0813 中定义工具的 4 个步骤【免费下载链接】DeepSeek-V4-Pro-0813项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Pro-0813想要让 DeepSeek-V4-Pro-0813 真正动手干活掌握DSML 工具调用格式是关键。作为 DeepSeek-V4-Pro 的官方正式版DeepSeek-V4-Pro-0813 大幅增强了 Agent 能力Terminal Bench 2.1 得分 87.9而它的函数调用并不使用传统 JSON而是采用了一种名为DSMLDeepSeek Markup Language的标记语言。本文用 4 个步骤带你从零完成工具定义到调用解析的全流程新手也能快速上手。一、DSML 工具调用格式是什么在解释步骤之前先认识两个核心概念这会让你后面的操作事半功倍。DSML 是什么DSML 是 DeepSeek-V4 系列模型专用的结构化标记语言用DSML前缀标签来描述工具调用而不是像 OpenAI 那样输出 JSON 字符串。模型的工具调用输出形如DSMLtool_calls DSMLinvoke nameget_weather DSMLparameter namelocation stringtrueBeijing/DSMLparameter /DSMLinvoke /DSMLtool_calls为什么用 DSML相比纯 JSONDSML 用明确的开始/结束标签把函数名和参数天然分隔解析更稳定、错误更少特别适合多轮、多工具并发的复杂 Agent 场景。好消息是你不需要手动拼这些标签。官方在 encoding_dsv4.py 中提供了完整的编码/解码参考实现直接调用即可。下面进入正题。二、第一步用 OpenAI 格式定义工具DeepSeek-V4-Pro-0813 的工具定义采用OpenAI 兼容的 JSON Schema 格式如果你用过其他大模型 API这套定义几乎零成本迁移。每个工具包含三要素name名称、description描述、parameters参数 Schema。来看官方测试用例 test_input_1.json 中的真实示例{ type: function, function: { name: get_weather, description: Get the weather for a specific location, parameters: { type: object, properties: { location: {type: string, description: The city name}, unit: {type: string, enum: [celsius, fahrenheit]} }, required: [location] } } }新手最容易踩的 3 个坑required字段千万别漏——不声明的参数模型可能不填。enum枚举能极大提升参数命中率例如温度单位就限定celsius/fahrenheit。描述要写清楚用途模型的工具选择准确性直接依赖描述质量。三、第二步把工具注入 system 消息定义好工具后需要把它挂到system或 developer消息的tools字段上。这是整个流程的注入点。在 Python 中你的消息列表长这样messages [ {role: system, content: You are a helpful assistant., tools: tools}, {role: user, content: Whats the weather in Beijing?}, ]注意工具只支持挂在 system / developer 消息上。调用编码函数后系统会自动把## Tools区块包含使用说明 工具 Schema JSON拼接到 system 提示词中这一逻辑由 encoding_dsv4.py 中的render_tools()函数实现。四、第三步编码消息为 DSML 提示词这是最核心的一步——调用encode_messages()把整个对话含工具定义转换成模型能理解的 DSML 提示词字符串from encoding_dsv4 import encode_messages prompt encode_messages(messages, thinking_modethinking)思考模式参数说明thinking_modethinking模型先在think.../think中推理再输出工具调用推荐 Agent 场景。thinking_modechat直接输出不产生推理块。生成的提示词中模型扮演的助手会收到一份完整的工具使用说明书包括 DSML 标签语法、stringtrue|false参数规则以及 You MUST strictly follow... 的强约束语句。参数规则务必记住字符串参数标记为stringtrue原样输出数字、布尔、数组、对象等 JSON 类型标记为stringfalse。若想控制推理深度还可传入reasoning_effortlow | high | max。五、第四步解析工具调用并回填结果模型输出后用parse_message_from_completion_text()解析出结构化结果——它会自动抽取reasoning_content思考、content正文和tool_calls工具调用自动转回 OpenAI 格式from encoding_dsv4 import parse_message_from_completion_text parsed parse_message_from_completion_text(completion_text, thinking_modethinking) # {role: assistant, tool_calls: [{function: {name: get_weather, ...}}], ...}多轮工具对话的两个关键细节工具结果回填DeepSeek-V4没有独立的 tool 角色。工具执行结果要用tool_result标签包裹、合并进 user 消息。官方提供了merge_tool_messages()帮你自动完成这种合并无需手工拼接。多工具结果排序如果一次调用了多个工具结果必须按调用顺序排列否则模型会串台。sort_tool_results_by_call_order()正是为此设计可在 encoding_dsv4.py 中查看实现。六、完整流程验证跑通官方测试想快速验证自己理解是否正确项目自带了 4 组完整的编解码测试覆盖了思考 工具调用 多轮回填、纯思考对话、搜索 工具等真实场景。cd encoding python test_encoding_dsv4.py测试脚本会读取 test_input_1.json 等输入文件将编码结果与 test_output_1.txt 等黄金文件逐字节比对。你也可以直接查看输出文件直观感受 DSML 完整格式——从 BOS 开始、工具区块注入、DSMLtool_calls调用到tool_result结果回填、EOS 收尾一目了然。七、总结记住这条最小链路回顾一下在 DeepSeek-V4-Pro-0813 中完成一次 DSML 工具调用只需记住 4 步① OpenAI 格式定义工具 → ② 挂到 system 消息 → ③ encode_messages 编码 → ④ parse 解析 结果回填。官方 encoding/README.md 有更完整的格式文档encoding_dsv4.py 则是可放心复用的参考实现。掌握这套 DSML 工具调用格式你的 Agent 应用开发就能直接站在官方基准之上起跑。【免费下载链接】DeepSeek-V4-Pro-0813项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Pro-0813创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考