news 2026/10/3 1:50:41

DeepSeek-V4-Pro 提示词编码格式全解:多轮对话、DSML 工具调用与扩展思考模式实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek-V4-Pro 提示词编码格式全解:多轮对话、DSML 工具调用与扩展思考模式实战指南

【免费下载链接】DeepSeek-V4-Pro

DeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。

项目地址:https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Pro
点击查看免费下载

本指南以 DeepSeek-V4-Pro 仓库中的 encoding/README.md 为骨架,结合 encoding_dsv4.py 参考实现与 test_encoding_dsv4.py 测试用例,系统讲解 DeepSeek-V4 系列模型的提示词编码格式:从特殊 Token、消息角色、多轮对话,到工具调用(DSML 格式)、扩展思考(reasoning)、推理强度与快捷指令任务。读完本文,你将能够直接用encode_messages/parse_message_from_completion_text构建与解析 DeepSeek-V4 格式的 prompt,并在推理管线中正确接入工具调用与思考模式。

概述:编码模块在 DeepSeek-V4-Pro 中的定位

DeepSeek-V4 系列的推理链路需要一个将「结构化对话消息」转换为「模型可理解的单一 prompt 字符串」的环节,这一职责由encoding/目录承担。encoding/README.md明确说明:该文档描述 DeepSeek-V4 系列模型使用的 prompt 编码格式,其编码逻辑需要处理多轮对话、工具调用、扩展思考(reasoning)以及快捷指令任务四类场景。

仓库提供了一个自包含的参考实现encoding_dsv4.py,仅依赖 Python 标准库(json、re、copy、typing),不依赖任何第三方框架,可以独立复制进任意项目使用。它同样被推理端直接复用:inference/generate.py 通过sys.path引入encoding_dsv4并调用encode_messages与parse_message_from_completion_text,可见该编码模块是整个 DeepSeek-V4 推理链路的正式组成部分。

快速上手:编码与解析两个核心入口

编码对话:encode_messages

最简用法来自文档的 Quick Start(encoding/README.md):

from encoding_dsv4 import encode_messages, parse_message_from_completion_text # Encode a conversation messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is 2+2?"}, ] prompt = encode_messages(messages, thinking_mode="thinking") # => "<|begin▁of▁sentence|>You are a helpful assistant.<|User|>What is 2+2?<|Assistant|><think>"

注意默认输出以<think>收尾(thinking 模式),因为它把「思考块起点」作为生成入口:模型接下来应当输出推理内容,随后自行闭合</think>再给出答案。

解析模型输出:parse_message_from_completion_text

completion = "Simple arithmetic.</think>2 + 2 = 4.<|end▁of▁sentence|>" parsed = parse_message_from_completion_text(completion, thinking_mode="thinking") # => {"role": "assistant", "reasoning_content": "Simple arithmetic.", "content": "2 + 2 = 4.", "tool_calls": []}

该函数将一段单轮模型输出拆解为reasoning_content(思考内容)、content(最终回复)与tool_calls(工具调用,OpenAI 格式)三个字段,供上层逻辑回填到对话历史。

重要注意(原文明确提示):parse_message_from_completion_text只处理格式良好的模型输出,不会对偶发的畸形输出做纠正或恢复。文档建议生产环境必须自行增加额外的错误处理。从源码看,该函数对格式要求确实严格:缺少</think>、缺少 EOS Token、工具调用后存在多余内容、内容中出现特殊 Token 等情形都会直接抛ValueError(见 encoding_dsv4.py)。

函数完整签名与参数说明

encode_messages的完整签名(encoding_dsv4.py)如下:

def encode_messages( messages: List[Dict[str, Any]], thinking_mode: str, context: Optional[List[Dict[str, Any]]] = None, drop_thinking: bool = True, add_default_bos_token: bool = True, reasoning_effort: Optional[str] = None, ) -> str:
参数取值作用
messages消息列表待编码的对话消息,OpenAI 兼容格式
thinking_mode"chat"或"thinking"chat:模型直接生成回复;thinking:模型先在<think>...</think>中显式推理(非法值会被断言拒绝,见 encoding_dsv4.py)
context可选消息列表已编码的前置上下文,用于流式/增量续编场景
drop_thinking默认True是否丢弃更早轮次的推理内容(详见下文)
add_default_bos_token默认True是否在对话最开头拼接 BOS Token
reasoning_effort"max"/"high"/None推理强度控制(非法值同样会被断言拒绝,见 encoding_dsv4.py)

thinking_mode与reasoning_effort都有合法值断言(assert),传入非法字符串会直接抛AssertionError,这是使用时的隐性约束。

特殊 Token 与消息角色

特殊 Token 一览

文档给出的 Token 表(encoding/README.md)与源码常量一一对应(encoding_dsv4.py):

Token用途源码常量
<|begin▁of▁sentence|>序列开始(BOS)bos_token
<|end▁of▁sentence|>助手回合结束(EOS)eos_token
<|User|>用户回合前缀USER_SP_TOKEN
<|Assistant|>助手回合前缀ASSISTANT_SP_TOKEN
<|latest_reminder|>最新提醒(日期、地区、语言等)LATEST_REMINDER_SP_TOKEN
<think>/</think>推理块定界符thinking_start_token/thinking_end_token
|DSML|DSML 标记 Tokendsml_token

支持的 Roles

编码支持六种角色:system、user、assistant、tool、latest_reminder、developer。

  • developer角色有明确适用范围:文档特别说明,它仅在内部搜索 Agent 管线中使用,通用聊天与工具调用任务不需要,官方 API 也不接受携带该角色的消息。从源码看,developer消息被渲染为USER_SP_TOKEN + content的形式(见 encoding_dsv4.py),即从编码视角等同于用户回合,但支持附加tools与response_format。
  • tool角色特殊:DeepSeek-V4没有独立的 tool 消息格式,工具结果必须合并进用户消息。源码中若直接对role == "tool"的消息调用render_message,会直接raise NotImplementedError,并提示「deepseek_v4 merges tool messages into user; please preprocess with merge_tool_messages()」(encoding_dsv4.py)。因此在encode_messages内部,tool消息会先经过预处理被合并进用户消息(详见下文工具调用章节)。

基础对话编码:chat 模式的多轮结构

普通多轮对话的编码骨架如下(encoding/README.md):

<|begin▁of▁sentence|>{system_prompt} <|User|>{user_message}<|Assistant|></think>{response}<|end▁of▁sentence|> <|User|>{user_message_2}<|Assistant|></think>{response_2}<|end▁of▁sentence|>

要点:

  • BOS Token 只在整段对话的最开头拼接一次(由add_default_bos_token控制,且仅当无context时生效,见 encoding_dsv4.py)。
  • chat 模式(thinking_mode="chat")下,</think>紧跟<|Assistant|>之后,立即闭合思考块,使模型直接生成内容。测试 4 的期望输出正是这一形态:<|User|>世界著名温泉有哪些<|Assistant|></think><|action|>Search<|end▁of▁sentence|>(见 tests/test_output_4.txt)。
  • 每条user/developer消息之后会追加<|Assistant|>前缀(再加思考 Token),每条 assistant 消息之后追加 EOS Token,构成回合边界。过渡 Token 的追加逻辑位于 encoding_dsv4.py:只有当下一条消息不是 assistant/latest_reminder时才补前缀,避免重复拼接。

交错思考模式:thinking 模式与 drop_thinking 机制

在thinking_mode="thinking"下,模型在回复前于<think>...</think>块内产出显式推理(encoding/README.md):

<|begin▁of▁sentence|>{system_prompt} <|User|>{message}<|Assistant|><think>{reasoning}</think>{response}<|end▁of▁sentence|>

测试 1 与测试 3 的期望输出即这种「交错思考 + 工具调用」形态,例如:

<|User|>What's the weather in Beijing?<|Assistant|><think>The user wants to know the weather in Beijing. I should use the get_weather tool.</think>

【免费下载链接】DeepSeek-V4-Pro

DeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。

项目地址:https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Pro
点击查看免费下载

相关推荐

上一篇:告别功能局限:LiteLoaderQQNT插件事件系统详解
下一篇:多模态模型可视化完全指南:从论文到实践图表绘制

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 1:41:11

【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥 ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进; 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王…

作者头像 李华
网站建设 2026/10/3 1:39:22

FPGA高速串行链路调试实录:Aurora 64B/66B与GT收发器实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 1:38:24

ClickHouse性能优化实战地图:从parts命名到四层诊断

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 1:38:03

Primetime电压缩放实现:DVFS、MMMC与UPF流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华