模型不记得。你记得。
大语言模型 (LLMs) 没有记忆。
我以前认为每个聊天会话都会存储自己的上下文。我错了。当你与 LLM 对话时,除非你再次发送,否则它不会记得你上一个问题。
模型是无状态的。这意味着每一次请求都是一个全新的开始。
要创建对话,你必须自己管理历史记录。你需要在每次发送新请求时,同时发送一个包含所有之前消息的数组。
“记忆”仅仅是一个消息列表:
- 用户:你好。
- 助手:你好!
- 用户:你好吗?
如果你在下一次请求中没有包含前两行,模型就不会知道你已经说过“你好”了。
我是通过避开 SDK 学到这一点的。大多数开发者使用像 Anthropic SDK 这样的工具来隐藏这种复杂性。SDK 会为你处理消息历史和请求头。
如果你想了解 LLM 的工作原理,请改用原始的 fetch。不要使用抽象层。当你手动管理请求和响应周期时,你能看到每一个决策过程。
这种手动控制能力让你以后能够构建更高级的策略,例如:
- 用于管理长对话的滑动窗口 (Sliding windows)。
- 检索增强生成 (RAG)。
- 语义搜索 (Semantic search)。
理解这个数组是 AI 开发的基础。你才是提供上下文的人。模型只知道你发送的内容。
来源:https://dev.to/marcochavezco/the-model-doesnt-remember-you-do-3mmk