调接口时 AI 记不住上一句?多轮对话的历史要自己拼进 messages
调接口时 AI 记不住上一句?多轮对话的历史要自己拼进 messages 关键参数
| 接口特性 | 无状态,历史需自行拼装 |
|---|---|
| messages 结构 | system + user/assistant 交替 |
| 截断策略 | 保 system + 近 N 轮 / 摘要替换 |
| 窗口查询 | 模型页「上下文长度」 |
为什么记不住
对话接口是无状态的:服务端不会替你记住上一轮说了什么。要延续上下文,必须在每一轮请求里把完整的对话历史放进 messages。
怎么拼
messages 是一个数组,按时间顺序放:系统提示、用户、助手交替出现。
[
{ "role": "system", "content": "你是有帮助的助手" },
{ "role": "user", "content": "我叫小明" },
{ "role": "assistant", "content": "你好,小明!" },
{ "role": "user", "content": "我刚说我叫什么?" }
]
把上面整个数组随请求发出,模型就能回答「你叫小明」。
截断策略
上下文过长会超出模型窗口:
- 保留 system 与最近 N 轮;
- 或对较早内容做摘要后替换;
- 必要时只保留关键事实。
具体窗口大小看模型页「上下文长度」。
常见问题
调接口时 AI 为什么记不住上一句?
对话接口是无状态的,服务端不会替你保存会话;要延续上下文,必须在每轮请求里把完整对话历史放进 messages。
messages 怎么拼?
数组按时间顺序放:system 开头,user 与 assistant 交替出现,把整个数组随请求发出。
上下文太长怎么办?
保留 system 与最近 N 轮;或对较早内容做摘要后替换;必要时只保留关键事实。
上下文窗口有多大?
看所用模型页的「上下文长度」标注。
相关阅读
怎么让 AI 调我自己的函数 / 工具(tools 工具调用怎么写)
通过 tools 字段声明函数 schema,模型返回 tool_calls 后由你在本地执行,再把结果回传给模型继续推理。调接口怎么把图片发给 AI 看?多模态请求怎么写、图片传链接还是文件
多模态请求用 content 数组把文本与 image_url 一起传;图片可传公网可访问的链接,或传 base64 data URI,二者各有取舍。调接口报错怎么办?鉴权失败、频率超限、余额不足逐个排查
按错误类型排查:401 鉴权、403 权限、429 限频、402/余额不足、4xx 参数、5xx 服务端,本文给出逐项对策。API 密钥怎么创建?用量和额度在哪看?
在控制台「API 密钥」创建密钥;用量与额度在同页或「用量」页查看,包含调用次数、tokens 消耗与费用。相关平台
关于大模型的选型、调用与落地实践,你还可以访问以下平台:
- cloud-lab.cn —— 灵境AI 模型百科:大模型选型、对比评测与用户手册,AI Model Hub 官方知识站。
- cloud-token.ai(AI Model Hub 国内版) —— 聚合 500+ 前沿大模型,统一 OpenAI 兼容 API,免费试用、按量计费。
- cloud-ai.link(AI Model Hub 国际版) —— 面向全球用户,英文界面,统一 OpenAI 兼容 API,即开即用。