Messages 消息
Chat Model 通常不是只接收一个字符串,而是接收一组消息。每条消息有角色和内容。
常见角色:
| 角色 | 说明 |
|---|---|
| system | 系统指令,定义助手身份和约束 |
| user | 用户输入 |
| assistant / ai | 模型回复 |
| tool | 工具调用结果 |
示例
python
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
llm = ChatOpenAI(model="gpt-4.1-mini")
messages = [
SystemMessage(content="你是一个资深 Java 后端面试官"),
HumanMessage(content="请解释 Kafka 分区和消费者组的关系")
]
resp = llm.invoke(messages)
print(resp.content)为什么要区分角色
因为模型需要知道哪些内容是系统约束,哪些是用户问题,哪些是历史回答,哪些是工具返回结果。对于 Agent 来说,消息历史就是它继续推理的上下文。
常见坑
- 不要把用户输入拼到 system prompt 里,避免 Prompt Injection 风险。
- 历史消息太长会消耗大量 token,需要裁剪、摘要或外部记忆。
- 工具结果要尽量结构化,避免模型误读。
非官方声明
本站为个人维护的非官方中文学习文档,不代表 LangChain 官方。页面内容是基于公开文档、源码实践和中文开发者视角重新整理的学习资料。涉及 API 细节时,请以官方文档和实际安装版本为准。
参考来源
- LangChain / LangGraph 官方文档:
https://docs.langchain.com/ - LangChain API Reference:
https://reference.langchain.com/ - 本站内容为中文学习整理,不做官方身份声明。