Stateless API

无状态接口

每次调用都需要把完整对话历史重新发一遍——模型本身不记得任何事。

详解

LLM API 是无状态的:模型服务器不存储任何对话历史,每次请求对它来说都是全新的一次独立调用。要实现多轮对话,完全由你的代码负责维护历史消息列表,每次调用时把"从第一轮到现在"的所有消息一起打包发过去,模型才能"知道"之前聊了什么。这和传统有状态服务(如数据库连接、WebSocket 会话)截然不同——那些服务器端有持久状态,客户端只需发增量数据;而 LLM API 每次都从零开始,你必须发全量。这个设计带来两个直接后果:一是对话越长,每次请求的 token 数越多,成本随轮次线性增长;二是你的代码必须自己管理"记忆"——丢失历史列表等于失忆。理解无状态是理解为什么需要记忆系统(短期记忆、滑动窗口、摘要压缩)的前提。

一个类比
想象每次打电话给一个客服,电话接通后对方完全是新人,对你们之前的所有通话毫无记忆。你要让他继续上次的事,就必须先把上次聊的内容重新复述一遍,然后再提新问题。你(客户端)自己记着聊天记录,每次都带着"上次说到哪儿了"重新讲给他听。
举个例子
import anthropic

client = anthropic.Anthropic()

# 你负责维护历史:每轮把完整 messages 重发一遍
history = []  # 对话历史由你的代码维护,模型服务器不存这个

def chat(user_input: str) -> str:
    history.append({"role": "user", "content": user_input})
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=256,
        messages=history  # 每次都发完整历史,不是增量
    )
    reply = response.content[0].text
    history.append({"role": "assistant", "content": reply})
    return reply

print(chat("我叫小明"))           # 第一轮:history 有 1 条
print(chat("你还记得我叫什么吗?"))  # 第二轮:history 有 3 条(含上一轮的 user+assistant)
PYTHON 示例
相关概念