介绍
专门为 对话交互 设计的大模型。
特点
- 输入是 「带角色的消息列表」
- 天生支持多轮对话
- 天生支持工具调用(函数调用)
- 经过指令微调 + RLHF 对齐
→ 听话、安全、符合人类对话习惯 - 接口规范、稳定、易开发
角色
在 LangChain 的聊天模型(Chat Model)中,消息是按 角色(Role) 来组织的,最核心的角色有三个:
- system:系统提示(设定AI身份)
- user:用户问题
- assistant:AI回答
SystemMessage(系统角色)
作用:给 AI 设定身份、规则、行为准则,是“AI 的人设”。
特点:
- 放在消息列表最前面
- 只在对话开始时生效一次(部分模型支持中途更新)
- 优先级高,AI 会优先遵循系统提示
例子:
"你是一个专业的Python编程助手,回答要简洁、准确,避免废话。"
HumanMessage(用户角色)
作用:代表用户的提问、指令或输入。
特点:
- 每次用户交互都用这个角色
- 可以是问题、指令、上下文补充等
例子:
"帮我解释一下什么是RAG?"
AIMessage(AI 助手角色)
作用:代表 AI 上一轮的回答,用于多轮对话的 上下文记忆。
特点:
- 由模型返回,开发者需要把它追加到消息列表中
- 是多轮对话的关键,让 AI 知道自己之前说了什么
例子:
"RAG是检索增强生成,通过检索外部知识库来提升大模型回答的准确性..."
其他辅助角色(可选)
FunctionMessage / ToolMessage:用于工具调用场景,记录工具调用的结果,让 AI 基于工具返回的信息继续回答。
ChatMessage:通用角色,可自定义角色名,用于特殊场景。
必须携带AI 助手角色的场景
只要对话存在 上下文依赖,就必须携带关键历史,比如:
- 用户追问:先问 “什么是 RAG”,再问 “它的核心步骤是什么”(后一个问题依赖前一个的定义);
- 多轮纠错:用户指出 “你刚才的代码有问题”,模型需要知道 “刚才的代码是什么”;
- 场景化交互:电商客服中,用户先提 “我的订单没发货”,再问 “能退款吗”(依赖 “订单” 这个上下文)。
无需带的场景
用户先问 “写一首唐诗”,再问 “计算 1+2+3 的和”(两个问题无关联,无需带前一轮历史)。
总结
- SystemMessage:定规则、立人设
- HumanMessage:用户输入
- AIMessage:AI 输出,用于上下文
多轮对话 = 不断追加 HumanMessage 和 AIMessage 到列表中
和普通 LLM(大语言模型)的区别
| 对比 | LLM(文本续写) | Chat Model(聊天模型) |
|---|---|---|
| 输入 | 一段文本 | 多角色消息结构 |
| 能力 | 续写、补全 | 对话、理解意图、多轮 |
| 工具调用 | 弱/不支持 | 原生支持 |
| 训练 | 预训练 | 预训练 + SFT + RLHF |
| 开发体验 | 难控制 | 易控制、稳定 |
| 现在主流 | 旧接口 | 新项目全部用这个 |
一句话:LLM 是续写器,Chat Model 是对话机器人。
为什么现在开发都用 Chat Model?
- 做产品必须多轮对话
- 必须工具调用(查天气、查数据库、RAG)
- 行为可控,不会乱输出
- 所有新模型只更新 Chat 接口
市面典型 Chat Model 有哪些?
- OpenAI:gpt-3.5-turbo、gpt-4o
- 百度文心:ERNIE Bot
- 阿里通义:Qwen
- 智谱:GLM-4
- 字节:豆包 Doubao
- 腾讯:混元 Hunyuan
- 讯飞:星火 Spark
应用场景
- 智能客服
- AI 助手
- 聊天机器人
- RAG 知识库问答
- 带工具的 AI(联网、查数据)
- 多轮交互类产品
总结
Chat Model = 对话专用大模型
- 输入:角色消息
- 能力:多轮对话 + 工具调用
- 训练:对齐人类偏好
- 开发:99% 新项目首选
你要我给你一段最精简的 Python + LangChain Chat Model 示例代码吗?