跳到主要内容

ChatSession 管理

一次 Agent 调用只处理当前轮次。没有会话层时,开发者必须自行保存历史、关联应用用户、重新读取历史,并在每次请求时传入正确上下文。ChatSession 为 Agent SDK 提供服务端持久对话记忆,解决这些重复工作。

ChatSession 是 Agent SDK 适配 Iztro 托管会话存储的类。它遵循 OpenAI Agents 的 SessionABC 协议,使用 /v2/platform/conversations API;不要把它与独立的托管 /sessions API 混淆。

Python 与 TypeScript SDK 提供相同的会话生命周期能力,只是方法命名遵循各自语言习惯。

将对话关联到你的用户

from iztro_agents import ChatSession

session = ChatSession(external_user_id="user_42")

external_user_id 应使用你用户表中的稳定 ID。第一次执行 Runner.runget_itemsadd_items 时才会创建对话。服务端返回 conversation_id,SDK 将其暴露为 session.session_id

ChatSession 提供的方法

SDK 方法用途
get_items(limit=None)读取会话条目
add_items(items)向会话追加条目
pop_item()删除并返回最后一个条目
clear_session()删除托管对话并重置本地 ID
close()关闭 SDK HTTP 客户端

TypeScript 使用驼峰命名:getItemsaddItemspopItemclearSessiongetSessionIdclose

列出某个外部用户拥有的全部对话:

conversations = await ChatSession.list_user_conversations("user_42", limit=50)

恢复、查看与清除

from iztro_agents import ChatSession

session = ChatSession(conversation_id="conv_01...")
items = await session.get_items(limit=100)
last_item = await session.pop_item()
await session.clear_session()
await session.close()

不属于该 SDK 类的操作

ChatSession 不提供 editresendfork。它们是独立的 /v2/platform/sessions/{session_id} API 上的托管消息/版本操作。不要混用标识符:SDK 的 ChatSession 使用 conversation_id,托管 Session API 使用 session_id