You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qwen 2.5-Coder 7B Instruct微调提示模板正确性及Token疑问

Qwen 2.5-Coder 7B Instruct 提示模板疑问解答

已知CodeLlama 7B Instruct的官方提示模板如下:

<s>[INST] <<SYS>>
{context}
<</SYS>>

{question} [/INST] {answer} </s>

你自行修改的Qwen 2.5-Coder模板存在核心问题——混用了Llama系列的专用标记和Qwen系列的对话规则,以下是具体说明及正确模板:

错误点说明

你模板里的[INST]、[/INST]、<<SYS>>、<</SYS>>都是CodeLlama等Llama系模型的专属标记,Qwen 2.5-Coder并不识别这些内容,强行套用会干扰模型对对话结构的理解,导致输出质量下降。

正确的Qwen 2.5-Coder 7B Instruct提示模板

Qwen系列Instruct模型(包括Coder分支)采用角色分隔符区分对话轮次与角色,官方标准格式如下:

单轮对话(带系统提示)

<|im_start|>system
{context}
<|im_end|>
<|im_start|>user
{question}
<|im_end|>
<|im_start|>assistant
{answer}
<|im_end|>

单轮对话(无系统提示)

<|im_start|>user
{question}
<|im_end|>
<|im_start|>assistant
{answer}
<|im_end|>

多轮对话示例

<|im_start|>system
你是专业代码助手,擅长编写高效、可维护的代码。
<|im_end|>
<|im_start|>user
写一个Python函数计算斐波那契数列。
<|im_end|>
<|im_start|>assistant
def fibonacci(n):
    if n <= 0:
        return "请输入正整数"
    elif n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        a, b = 0, 1
        for _ in range(3, n+1):
            a, b = b, a + b
        return b
<|im_end|>
<|im_start|>user
优化这个函数,添加缓存机制。
<|im_end|>
<|im_start|>assistant
from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n <= 0:
        return "请输入正整数"
    elif n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
<|im_end|>

各标记作用说明

  • <|im_start|>/<|im_end|>:Qwen系列的对话分隔符,用来包裹每个角色的消息,system/user/assistant是对应的角色标识,模型通过这些标记识别对话上下文的角色和轮次。
  • [INST]/[/INST]:仅适用于Llama系Instruct模型,用来界定用户指令范围,Qwen模型不识别该标记。
  • <<SYS>>/<</SYS>>:Llama系模型中包裹系统提示的专用分隔符,Qwen模型的系统提示直接放在<|im_start|>system和<|im_end|>之间即可,无需额外分隔符。

内容的提问来源于stack exchange,提问作者Md Golam Rassel Lincoln

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:15:01