Message
2026/7/23大约 2 分钟
Message是什么?
简单来说,**message** 是你与大模型沟通的“对话档案”。
在 API 调用中,大模型是“无记忆”的。为了让它知道你之前说了什么,或者给它设定一个特定身份,你必须把整段对话历史作为一个列表(List)发送给它。这个列表里的每一个元素就是一个 message。
message 的核心结构
每一个 message 都是一个字典(Dict),由两个最核心的字段组成:
**role**(角色):指明这句话是谁说的。**content**(内容):对话的具体文本信息。
四大核心角色(Roles)
在开发 Agent(智能体)时,你会用到这四种角色:
| 角色 (Role) | 谁在说话 | 作用 | 你的运维场景示例 |
|---|---|---|---|
system |
系统/开发者 | 设定人设和规则。它是 AI 必须遵守的底层指令。 | "你是一个 K8s 专家,回答必须严谨。" |
user |
用户 | 发送指令或提问。 | "查一下订单服务的 Pod 状态。" |
assistant |
大模型 | AI 的回复。手动传入它是为了提供上下文记忆。 | "Pod order-v1<br>运行正常。" |
tool |
外部工具/代码 | 返回函数执行结果。这是 Agent 模式特有的。 | "CPU 占用率: 98%" (由你的 Python 代码返回) |
为什么它是一个列表(List)?
因为列表代表了“记忆”。
如果你只发当前的提问给模型,它是记不住上一句的。为了实现多轮对话,你的 messages 列表会像这样不断增长:
Python
messages = [
{"role": "system", "content": "你是一个 AIOps 助手"}, # 设定身份
{"role": "user", "content": "帮我看看 Kafka 状态"}, # 第一次提问
{"role": "assistant", "content": "Kafka 目前运行正常"}, # AI 的回答(需存入列表)
{"role": "user", "content": "那它的堆积情况呢?"} # 第二次提问(由于有上下文,AI 知道“它”指 Kafka)
]
为什么你在 VS Code 里会看到类型警告?
正如你之前遇到的红线,OpenAI 的 SDK 对 messages 的格式要求极其严苛:
- 必须是列表:即使只有一句话,也要写成
[{"role": "...", "content": "..."}]。 - 字段不能错:不能把
content写成text,不能把role写成part。 - 角色受限:只能填那几个固定的字符串。
总结:
message 就是 Agent 的记忆载体。你通过不断往这个列表中 append(添加)新的对话,来维持 Agent 的连续思考能力。
既然理解了 **message** 是记忆,我们要不要试着写一个“带记忆”的对话程序? 让 AI 记住你刚才提到的“日志路径”,并在下一轮回答中使用它。你想试试吗?
