
Ling-3.0-flash-VL chat_template.jinja 完整拆解读懂 enable_thinking、工具调用与视觉 ID 注入的 6 个关键段落Ling-3.0-flash-VL是蚂蚁集团inclusionAI开源的 124B 参数原生多模态模型支持图片与视频输入、256K 上下文每个 token 仅激活 5.5B 参数。它的 chat_template.jinja 只有 183 行却把enable_thinking 思考开关、工具调用tool calling和视觉 ID 注入三大核心能力写得清清楚楚是多模态模型模板里难得的教科书级范例。本文将这份模板逐段拆解帮你彻底看懂它的每一行在做什么。模板速览3 个可配置参数在看细节之前先认识模板暴露给调用方的 3 个参数都通过chat_template_kwargs传入参数默认值作用enable_thinkingtrue思考模式总开关控制模型是否先输出推理过程preserve_thinkingtrue多轮对话中是否保留历史轮次的思考内容add_vision_id未定义不添加为图片/视频插入Picture 1:、Video 1:编号前缀模板生成的最终格式如下每段内容用roleSYSTEM/role、roleHUMAN/role等角色标签包裹段落之间以特殊 token|role_end|分隔。第 5–15 行enable_thinking 思考开关如何生效模板开头对enable_thinking做了归一化{%- set enable_thinking enable_thinking if enable_thinking is defined else true %}不传参时默认为开启——这正是官方文档说Thinking is enabled by default的实现来源开启时生成指令detailed thinking on关闭时生成detailed thinking off这段指令后面会写进系统区直接告诉模型该不该先想再答需要按请求关闭思考时只需在请求里传chat_template_kwargs: {enable_thinking: false}即可。紧接着的preserve_thinking默认true决定多轮对话中历史轮次的思考过程要不要继续带给模型——保留它可以维持推理连续性代价是上下文变长。第 18–57 行视觉 ID 注入的计数器与渲染宏namespace 计数器{%- set image_count namespace(value0) %} {%- set video_count namespace(value0) %}这里用 Jinja 的namespace对象实现跨宏调用共享的计数器——普通变量出了宏就失效namespace可以带回这是模板里最关键的小技巧。render_content 宏多模态内容的统一入口宏render_content负责把一条消息的内容渲染成文本字符串原样输出列表OpenAI 多模态 content 格式逐项判断类型image→ 输出占位符 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考