【免费下载链接】DeepSeek-V4-Pro
DeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。
本指南以 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 标记 Token | dsml_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 工作流等场景表现优异,性能接近国际前沿闭源模型。
相关推荐
DeepSeek-V4-Flash-0731 Prompt 编码格式全解析:多轮对话、工具调用、思考模式与快速指令的完整实现
DeepSeek V4 Flash 0731 Prompt 编码格式全解析:多轮对话、工具调用、思考模式与快速指令的完整实现 本指南围绕 DeepSeek V4
人工智能大模型基础模型DeepSeekDeepSeek-V4-Flash-Vision-Exp 提示词编码完全指南:特殊 Token、思考模式与工具调用模板逐行拆解
DeepSeek V4 Flash Vision Exp 提示词编码完全指南:特殊 Token、思考模式与工具调用模板逐行拆解 本指南带你逐行拆解 DeepSe
大模型基础模型多模态计算机视觉DeepSeekDeepSeek-V4-Flash-Vision-Exp 提示词编码完全指南:基于 encoding_dsv4.py 的多模态消息、工具调用与思考模式解析
DeepSeek V4 Flash Vision Exp 提示词编码完全指南:基于 encoding_dsv4.py 的多模态消息、工具调用与思考模式解析 en
大模型基础模型多模态计算机视觉DeepSeek
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考