ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DeepSeek-V4-Flash-Vision-Exp 提示词编码完全指南:基于 encoding_dsv4.py 的多模态消息、工具调用与思考模式解析

DeepSeek-V4-Flash-Vision-Exp 提示词编码完全指南:基于 encoding_dsv4.py 的多模态消息、工具调用与思考模式解析 大模型基础模型多模态计算机视觉DeepSeek【免费下载链接】DeepSeek-V4-Flash-Vision-Exp项目地址https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp点击查看免费下载encoding/encoding_dsv4.py是本仓库中独立自包含的提示词格式参考实现它完整覆盖 DeepSeek-V4 的文本与视觉编码能力多轮对话、工具调用DSML、思考模式chat/thinking以及图文交错的内容块。本文以 encoding/README.md 为主体骨架结合源码与测试用例系统讲解如何把 OpenAI 风格的消息列表编码为模型真正消费的提示词字符串与媒体数据并给出可直接运行的最小示例与验证方法。读完本文你将能够独立构造 DeepSeek-V4 的多模态提示词、正确使用思考强度参数、理解工具调用与图片占位符的底层编码规则。一、encoding_dsv4.py不依赖推理实现的独立编码参考encoding_dsv4.py 被定位为“standalone prompt-format reference”——即独立的提示词格式参考。它的关键特性是不导入任何推理实现编码逻辑与inference/目录下的模型加载、生成流程完全解耦可以单独被测试、被引用、被复用支持多轮对话multi-turn系统、开发者developer、用户、助手、latest_reminder 等多种角色消息支持工具调用tool calls将 OpenAI 格式的 function 定义与调用转换为 DeepSeek-V4 的 DSML 标记语言支持思考模式thinking modes区分chat与thinking两种模式并可配置推理强度reasoning effort支持图文交错内容块interleaved image content blocks图片以内容块形式混排在文本之间编码后以deepseek_image占位符呈现在提示词中图片的像素加载与模型图像 token 展开则由 inference/image_processor.py 负责。从源码结构看该文件组织为几个清晰的层次特殊 Token 定义第 13-38 行、模板定义第 40-109 行、消息渲染核心render_message第 237-411 行、预处理merge_tool_messages、sort_tool_results_by_call_order、统一入口encode_messages以及解码侧的parse_message_from_completion_text。1.1 特殊 Token 一览源码开头定义了全部特殊标记encoding_dsv4.py常量取值用途bos_tokenbegin▁of▁sentence对话起始标记BOSeos_tokenend▁of▁sentence对话结束标记EOSthinking_start_tokenthink思考开始标记thinking_end_token/think思考结束标记dsml_tokenDSML工具调用标记前缀USER_SP_TOKENUser用户消息标记ASSISTANT_SP_TOKENAssistant助手消息标记LATEST_REMINDER_SP_TOKENlatest_reminder实时提醒消息标记IMAGE_PLACEHOLDERdeepseek_image图像占位符二、OpenAI 风格消息编码入门encode_messages 最小示例README 给出了最直接的入门用法将 OpenAI 风格的多模态消息文本 image_url内容块编码为提示词字符串与媒体数据。以下代码完整保留自 encoding/README.mdfrom encoding_dsv4 import encode_messages messages [{ role: user, content: [ {type: text, text: 第一张图}, { type: image_url, image_url: {url: examples/images/carrots.jpeg}, }, {type: text, text: 有什么内容}, ], }] # non-thinking prompt, media encode_messages( messages, thinking_modechat, return_multi_modal_dataTrue, )生成的prompt为begin▁of▁sentenceUser第一张图\n\ndeepseek_image\n\n有什么内容Assistant/think可观察到几个关键编码特征BOS 标记在最前用户消息以User开头image_url内容块被替换为deepseek_image占位符并在其后附加空行最后以Assistant/think收尾提示模型开始生成chat 模式默认追加/think。2.1 encode_messages 完整参数说明从 encoding_dsv4.py 的签名可以看出encode_messages是文本与多模态统一编码的唯一公共入口参数取值默认值说明messages消息字典列表必填OpenAI 风格对话消息thinking_modechat/thinking必填思考模式chat不输出思考过程thinking启用think块context消息列表None前置上下文消息已编码前缀用于延续生成drop_thinkingboolTrue是否丢弃早期助手轮次的reasoning_content只保留最后一个用户消息之后的思考add_default_bos_tokenboolTrue是否在对话开始时追加 BOS 标记reasoning_effortlow/high/maxNone等价low思考模式下的推理强度仅对 thinking 模式生效return_multi_modal_databoolFalse为True时返回(prompt, media_data)二元组否则仅返回提示词字符串值得注意的细节encode_messages内部先调用process_image_messages规范化图片内容块并收集媒体记录再调用_encode_messages_text完成文本拼接。纯文本调用保持原有“仅返回字符串”的 API 兼容行为只有return_multi_modal_dataTrue时返回(prompt, {images: [...]})。三、思考模式与推理强度thinking_mode 与 reasoning_effort3.1 两种思考模式thinking_mode决定模型是否在提示词中出现think.../think块chat非思考提示词以Assistant/think结束模型直接输出最终回答不经过显式思考阶段thinking思考提示词以Assistantthink结束模型先输出推理内容再给出总结。3.2 推理强度 reasoning_effort源码 encoding_dsv4.py 定义了REASONING_EFFORT_PROMPTS三个级别思考模式下所选级别的提示语会被预置在整段对话的最开头仅在索引 0 处注入见render_message第 279-280 行级别是否追加提示语说明low否追加空字符串默认级别不增加任何前缀high是要求“绝对最大、不允许捷径、彻底分解问题”max是要求“超越最大——穷尽、执着、毫不妥协”深入分解因果链并多角度验证README 中给出了max级别的完整示例执行prompt, media encode_messages( messages, thinking_modethinking, reasoning_effortmax, return_multi_modal_dataTrue, )生成的prompt为begin▁of▁sentenceReasoning Effort: Beyond maximum — exhaustive, relentless, and uncompromising.\nYou MUST reason with the utmost depth and rigor, leaving absolutely nothing to chance: exhaustively decompose the problem into its most fundamental components, trace every causal chain to its root, and resolve the underlying cause rather than any surface symptom.\nDo not stop reasoning until you have independently verified the solution from multiple angles and are certain that no assumption remains unchecked and no error remains undiscovered.\n\nUser第一张图\n\ndeepseek_image\n\n有什么内容Assistantthink可以看到推理强度前缀位于 BOS 之后、User之前消息以Assistantthink结尾等待模型输出思考内容。3.3 drop_thinking 的自动调整_encode_messages_text中有一个自动规则encoding_dsv4.py只要任意消息携带tools定义effective_drop_thinking就会被强制设为False——即涉及工具调用时不会丢弃思考内容保证模型在调用工具前的推理过程完整保留。_drop_thinking_messages第 589-613 行还会在最后一个用户消息之前删除 developer 消息、并剥离早期助手轮次的reasoning_content。四、图像内容块占位符、媒体记录与底层实现4.1 占位符与媒体数据一一对应README 明确说明图片在提示词中以deepseek_image表示media[images]按完全相同的顺序存放对应的图片记录。编码器执行一条“顺序不变”约束prompt.count(IMAGE_PLACEHOLDER)必须等于len(media[images])且第 n 个占位符对应第 n 张图片记录。这一点被 encoding/test_encoding_dsv4.py 中的test_top_level_image_block_returns_matching_placeholder_and_record直接验证。4.2 实现路径process_image_messages → _process_image_blocks图片处理的主流程在 encoding_dsv4.pyprocess_image_messages深拷贝每条消息先调用_validate_no_image_sp_tokens拒绝用户在content/reasoning_content文本字段中手工写入deepseek_image防止伪造占位符对应测试test_user_supplied_placeholder_is_rejected将content列表迁移为content_blocks_process_image_blocks单次遍历内容块image/image_url块被替换为文本占位符块同时调用_extract_image规范化出内部图片记录支持url、source、data三种来源tool_result块中嵌套的图片列表会被递归处理其占位符保留在tool_result.../tool_result内部对应测试test_nested_tool_result_preserves_image_placeholder与test_tool_role_with_image_blocks_preserves_placeholder若图片块缺少有效来源抛出ValueError(Image block does not contain a valid source)测试test_image_block_without_source_is_rejected覆盖。4.3 与 inference/image_processor.py 的分工编码器只负责“格式层”把图片块变成占位符 媒体记录而像素加载与展开为模型图像 token由 inference/image_processor.py 完成。README 明确指出了这一分工——media[images]提供的是图片的引用记录如文件路径 URL真正的图像预处理缩放、归一化、token 化发生在推理侧。4.4 context 图片不会进入当前媒体数据当使用context参数携带历史图片时process_image_messages(context)处理后的图片记录被丢弃只有当前轮次的图片会出现在media[images]中对应测试test_context_images_are_not_returned_as_current_media。五、紧凑 TXT 记号parse_tagged_text 输入便捷层对于快速手写提示词的场景README 提供了parse_tagged_text()它把形如第一张图imageexamples/images/carrots.jpeg/image有什么内容的紧凑文本转换为与 OpenAI 风格等价的标准内容块from encoding_dsv4 import parse_tagged_text, encode_messages content parse_tagged_text( 第一张图imageexamples/images/carrots.jpeg/image有什么内容 ) prompt, media encode_messages( [{role: user, content: content}], thinking_modechat, return_multi_modal_dataTrue, )5.1 实现要点parse_tagged_textencoding_dsv4.py基于正则IMAGE_TAG_PATTERN re.compile(rimage(.*?)/image, re.DOTALL)完成解析在图片标签之前、之间、之后的文本分别转换为{type: text, ...}块保持原有顺序图片路径转换为{type: image_url, image_url: {url: path}}块空图片路径抛出ValueError(Image path must not be empty)若残留未闭合的image或/image标记抛出ValueError(Malformed imagepath/image tag)对应测试test_malformed_tagged_text_is_rejected。README 特别强调这是一个输入便捷层input convenience layer不是第二套编码实现——无论你用 JSON 内容块还是 TXT 标记书写最终都会走同一个encode_messages编码路径。六、工具调用DSML 标记与消息合并预处理DeepSeek-V4 没有独立的tool角色。源码merge_tool_messagesencoding_dsv4.py的 docstring 明确说明工具结果以tool_result块的形式合并进用户消息。整个工具调用链路如下工具定义注入系统提示render_tools用TOOLS_TEMPLATE把 OpenAI 格式的 function schemaname/description/parameters逐条渲染为 JSON拼接到系统消息之后并以## Tools段落呈现模板见 encoding_dsv4.py工具调用编码助手消息中的tool_calls被转换为 赞分享大模型基础模型多模态计算机视觉DeepSeek【免费下载链接】DeepSeek-V4-Flash-Vision-Exp项目地址https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp点击查看免费下载相关推荐DeepSeek-V4-Flash-Vision-Exp 提示词编码完全指南特殊 Token、思考模式与工具调用模板逐行拆解DeepSeek V4 Flash Vision Exp 提示词编码完全指南特殊 Token、思考模式与工具调用模板逐行拆解 本指南带你逐行拆解 DeepSe大模型基础模型多模态计算机视觉DeepSeekDeepSeek-V4.1-Flash Prompt 编码全指南解读 encoding.py 的消息格式、工具调用与多模态输入DeepSeek V4.1 Flash Prompt 编码全指南解读 encoding.py 的消息格式、工具调用与多模态输入 导读 encoding/enc人工智能大模型多模态如何玩转Edge0-35B-A3B对话模板思考模式、工具调用与多模态提示词完整指南如何玩转Edge0 35B A3B对话模板思考模式、工具调用与多模态提示词完整指南 本文带你完整解析 Edge0 35B A3B 的对话模板chat tem人工智能大模型模型量化LoRA本地部署创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表