大模型 chat 接口的标准消息格式

{"role": "user", "content": query}是 OpenAI / 大模型 chat 接口的标准消息格式,告诉模型"这是来自用户的一条消息,内容是 query 变量里的字符串"。

拆开看

python 复制代码
{
  "role": "user",       # ← 谁说的
  "content": query      # ← 说了啥
}
字段 含义
role 消息发送者的身份角色,固定枚举值
content 消息的实际文本内容(也支持图片、工具结果等结构化内容)

role 的四种合法值

role 谁说的 示例
system 系统/开发者,给模型设定身份和规则 "你是一个写代码的助手"
user 用户输入 "帮我写一个排序函数"
assistant 模型自己之前说过的话 "好的,下面是代码..."
tool 工具执行的返回结果 "ls 命令输出: file1.txt"

具体场景

看主循环这段:

python 复制代码
while True:
    query = input("\033[36m >> \033[0m")   # 用户在终端输入
    ...
    history.append({"role": "user", "content": query})  # ← 把用户输入封装成"用户消息"
    agent_loop(history)                                  # 把整个历史传给模型

为什么要包成这个结构?因为模型 API 不接受裸字符串,它要的是一个消息列表,每条消息都必须标注角色:

python 复制代码
history = [
    {"role": "user",      "content": "看下当前目录有啥"},
    {"role": "assistant", "content": "", "tool_calls": [...]},   # 模型决定调 bash
    {"role": "tool",      "tool_call_id": "...", "content": "file1.txt"},  # bash 返回
    {"role": "assistant", "content": "目录里有 file1.txt"},      # 模型最终回答
    {"role": "user",      "content": "再看下文件大小"},          # ← 你下一次输入
]

模型拿到这个列表,就能"看懂"整段对话上下文。

为什么需要 role 这个字段?

  1. 区分发言人:不告诉模型"这是你之前说的"还是"用户新说的",模型会混乱
  2. 训练时就这么对齐 :模型在训练阶段看到的就是 role + content 的格式,推理时必须保持一致
  3. 支持多轮对话 :通过滚动追加 role: user / role: assistant 形成上下文

一句话

{"role": "user", "content": query} = "这条消息是用户说的,内容是 query 这个字符串",是大模型 chat API 必备的消息封装格式。

相关推荐
西安同步高经理4 小时前
国产音频频谱分析仪使用案例,多通道音频分析仪,音频频谱分析仪
大数据·人工智能·音视频
好家伙VCC4 小时前
动态因子图谱+滚动SHAP重构量化模型可解释性
java·人工智能·重构
dingzd954 小时前
TikTok创作者AI搜索推出后跨境品牌如何提高达人匹配效率
大数据·人工智能·新媒体运营·市场营销·跨境
chenying9981794 小时前
掩码扩散语音克隆:参考音频为什么会被噪声“污染“?
人工智能·音视频·语音合成
kyriewen114 小时前
开源|Image Harvest v1.0.5:AI 智能标签 + Eagle 导出,设计师和开发者的图片工作流神器
前端·javascript·人工智能
PcVue China4 小时前
PcVue AI 智能管控:解锁建筑冷站能效新价值
大数据·人工智能·pid·建筑冷站
三千花灯4 小时前
【Playwright】安装
人工智能·测试工具
深圳行云创新4 小时前
企业现有的 CI/CD 流程,如何融入 AI 能力?
人工智能·ci/cd
璞华Purvar4 小时前
锐图智能图像处理软件:高效解决印前图像处理难题
图像处理·人工智能
Elastic 中国社区官方博客4 小时前
Elasticsearch Reindex 现已支持跨节点自动迁移:无需人工干预,不会丢失进度
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索