如何玩转Edge0-35B-A3B对话模板:思考模式、工具调用与多模态提示词完整指南
【免费下载链接】Edge0-35B-A3B-preview项目地址: https://ai.gitcode.com/hf_mirrors/Edge0/Edge0-35B-A3B-preview
本文带你完整解析 Edge0-35B-A3B 的对话模板(chat template)。Edge0-35B-A3B 是一款运行在手机级内存(3 GiB 激活显存)的 35B 级稀疏 MoE 对话模型,随仓库附带的 chat_template.jinja 直接决定了它的思考模式、工具调用协议和多模态提示词格式。理解它,你就理解了模型"如何听懂你"。
为什么对话模板值得认真读一遍
很多用户把对话模型当成"黑盒",其实每次发送消息,模板都会把对话历史渲染成模型训练时见过的那套特定格式。Edge0-35B-A3B 基于 Qwen3.6-35B-A3B(见 config.json),模板里藏着三个关键开关:
| 变量 | 作用 | 默认行为 |
|---|---|---|
enable_thinking | 控制模型是否进入思考模式 | 开启(输出 ` |
| ` 推理) | ||
preserve_thinking | 多轮工具调用时是否保留历史思考过程 | 自动检测后开启 |
tools | 传入工具函数定义 | 注入系统提示词 |
💡 提示:模型目录里的 lora_edge0_35b.safetensors 和 prerouter_edge0_35b.safetensors 会由 edge0 框架自动加载,无需手动配置。
一键体验:从下载到开始对话
准备工作只需三步:安装 edge0 框架、下载模型目录、运行聊天命令(详见 README.md 的 Quick start 章节)。
# 设置模型路径后直接对话 edge0 chat --name edge0-35b --prompt "Introduce yourself" # 或者起一个 OpenAI 兼容的 HTTP 服务 edge0 serve --name edge0-35b --port 8085默认情况下模型带着思考模式启动——你会先看到一段"内心独白"( 中的推理),再看到正式回答。
思考模式实操:如何开启与关闭
模板末尾的生成提示词(chat_template.jinja)是整个思考模式的开关所在:
- 开启思考(默认):以 结尾,模型开始先推理再作答,适合数学、代码、长文分析等需要"想清楚再答"的场景。
- 关闭思考:传入
enable_thinking=False,模板会渲染出 (空思考块),模型跳过推理直接输出。
# 关闭思考模式(适合简单问答,响应更快) render_result = tokenizer.apply_chat_template( messages, enable_thinking=False, add_generation_prompt=True, )如何判断回答里的"思考部分"?正式作答前的一切内容都在 标签内,解析时按 切分即可得到 reasoning 与 answer 两部分——模板对历史消息也做了同样处理(chat_template.jinja)。
工具调用全解析:模型如何"打电话"
当你把函数定义通过tools参数传入时,模板会自动注入一段系统提示词,声明"你有以下函数可用",并附上严格的输出格式要求(chat_template.jinja)。模型随后用 XML 风格的标签发起调用:
<tool_call> <function=get_weather> <parameter=city> Beijing </parameter> </function> </tool_call>关键规则有四条:
- 必须整体包裹:
...内只能放一个 块,且不能有任何多余后缀; - 必填参数不能省略,多行值直接换行书写;
- 可以解释、不能追问:调用前可用自然语言说明理由,调用后禁止附加内容;
- 无可用工具时,模型会正常作答,而不是编造调用。
工具返回结果的拼回方式
工具执行完,结果以role="tool"消息拼回对话。模板会把连续的工具结果合并包裹进一个 块(chat_template.jinja),让模型把它们视为同一轮反馈。
多轮工具调用的小技巧:preserve_thinking
模板会自动检测"最后一条用户消息是不是工具结果"(chat_template.jinja)。如果对话正处在连续工具调用中途,模型历史里的思考过程会被完整保留,避免多步推理"断片"。你无需手动干预,只需保证把上一步的 思考原文存回 assistant 消息里即可。
⚠️ 注意:当前 Preview 版本的 Agent 能力还在增强中——单步工具调用可用,多步长程规划暂不推荐,正式版本会显著加强(详见 README.md 的 Limitations)。
多模态提示词:图片与视频怎么写进对话
Edge0-35B-A3B 的视觉编码与语言模型一体化(image_token_id为 248056、video_token_id为 248057,见 config.json),模板层面已经备好完整的多模态处理逻辑:
- 图片消息:content 数组中出现
{"type": "image"}时,模板渲染为 (chat_template.jinja); - 视频消息:出现
{"type": "video"}时渲染为 (chat_template.jinja); - 编号引用:当传入
add_vision_id=True时,模板会自动为每张图片/视频加上 "Picture 1:"、"Video 1:" 前缀,方便你在后续对话中用编号指代; - 系统消息禁区:
role="system"中不允许包含图片或视频,模板会直接抛出异常(chat_template.jinja)——多模态内容请放在 user 消息里。
一个典型的多模态消息结构长这样:
{ "role": "user", "content": [ {"type": "text", "text": "这张图里是什么?"}, {"type": "image", "image": "/path/to/photo.jpg"} ] }推荐的生成参数与质量参考
采样参数以 generation_config.json 为基准:
| 参数 | 值 | 说明 |
|---|---|---|
| temperature | 1.0 | 配合 top-k/top-p 使用 |
| top_p | 0.95 | 核采样 |
| top_k | 20 | 保留前 20 个候选 |
| do_sample | true | 开启采样 |
量化后的模型(4-bit + LoRA 蒸馏)相对 fp16 基座平均只掉 3.9 分:AIME 2026 得 86.6、HumanEval 得 90.9、MMLU-Pro 得 81.0(完整基准见 README.md 的 Quality 表格)。在 Mac mini M4 Pro 上解码约 15 tok/s、长提示词填充 140 tok/s、峰值激活内存 2.9 GiB。
常见问题速查
Q1:对话里出现 标签是什么?这是模型思考模式的原生输出,属于正常现象。前端界面通常将其折叠展示,程序解析时按标签切分即可。
Q2:为什么我的工具调用没有被执行?先检查tools是否传给了模板(而不是只塞进 system 文本);再检查工具函数 schema 是否包含完整的parameters定义,模型会严格按照 JSON Schema 生成参数。
Q3:长对话会不会爆内存?专家权重按需从 SSD 流式加载,不会常驻内存;真正随上下文增长的是 KV 缓存,建议控制单次对话长度以保持 3 GiB 级别的峰值内存。
Q4:能改模板吗?模板文件 chat_template.jinja 是仓库的一部分,你可以基于它派生定制版本(比如修改编号前缀),但请保持 / 等核心标记不变,否则模型的思考与工具协议会失效。
小结
Edge0-35B-A3B 的对话模板把三件事做成了开箱即用:enable_thinking一键切换思考模式、XML 标签协议规范工具调用、/ 标记打通图文视频输入。花十分钟读完 chat_template.jinja,配合 README.md 的快速上手流程,你就能在手机级内存的设备上跑起一个带思考、会调工具、能看图的 35B 级模型了。
【免费下载链接】Edge0-35B-A3B-preview项目地址: https://ai.gitcode.com/hf_mirrors/Edge0/Edge0-35B-A3B-preview
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考