我用最简单、最直白、一看就懂 的方式给你讲清楚:
PromptTemplate 和 ChatPromptTemplate 的真正区别
一句话总结
- PromptTemplate = 生成一段普通字符串
给补全模型/简单模型用 - ChatPromptTemplate = 生成一整段聊天对话格式
给**聊天模型(ChatGLM、Qwen、GPT)**用
1. PromptTemplate(字符串模板)
作用
生成纯文本字符串
格式
你是一个数学家,请回答:18+38等于多少?
特点
- 只有一段文字
- 没有角色(system / user / assistant)
- 老式 LLM 用的多
- 不适合现代聊天模型
代码生成的结果
你是一个数学家,你可以计算任何算式 我今年18岁...
2. ChatPromptTemplate(聊天模板)
作用
生成带角色的对话列表
格式(模型最喜欢这种)
[
{"system": "你是一个数学家,你可以计算任何算式"},
{"human": "我今年18岁,我舅舅38岁...一共多少岁?"}
]
特点
- 有角色区分(系统提示 + 用户问题)
- 现代大模型必须用这个
- 准确率更高、听话度更高
- 支持多轮对话
代码生成的结果
[SystemMessage(xxx), HumanMessage(xxx)]
这是聊天模型专用格式。
3. 最核心区别(超级好记)
| 特点 | PromptTemplate | ChatPromptTemplate |
|---|---|---|
| 输出格式 | 普通字符串 | 聊天消息列表 |
| 角色 | 无 | 有 system / human / assistant |
| 适合模型 | 简单补全模型 | 所有聊天模型(Qwen、GPT、Ollama) |
| 效果 | 一般 | 非常好 |
| 多轮对话 | 不支持 | 支持 |
4. 你应该用哪个?
你现在用 Qwen / Ollama → 必须用 ChatPromptTemplate
因为:
- 现代大模型都是聊天模型
- 它们只认识带角色的对话格式
- 用 PromptTemplate 会回答不准、不听话
5. 最简单记忆口诀
- 普通文本提示 → PromptTemplate
- 聊天对话提示 → ChatPromptTemplate
- 做AI项目永远优先用 ChatPromptTemplate