AgentSession 是跨代理執行的對話狀態容器。
包含什麼內容AgentSession
| 領域 | 目標 |
|---|---|
StateBag |
此會話的任意狀態容器 |
C# AgentSession 是一個抽象基底類別。 具體實作(透過 CreateSessionAsync() 建立)可能會新增額外狀態,例如在使用服務管理的聊天歷史時,為遠端聊天歷史儲存的 ID。
| 領域 | 目標 |
|---|---|
session_id |
此會話的本地唯一識別碼 |
service_session_id |
遠端服務對話識別碼(當使用服務管理歷史時) |
state |
與上下文/歷史提供者共享的可變字典 |
內建使用模式
AgentSession session = await agent.CreateSessionAsync();
var first = await agent.RunAsync("My name is Alice.", session);
var second = await agent.RunAsync("What is my name?", session);
session = agent.create_session()
first = await agent.run("My name is Alice.", session=session)
second = await agent.run("What is my name?", session=session)
從現有的服務對話 ID 建立會話
從現有的對話識別碼建立新的會話,會因代理類型而有所不同。 以下是一些範例。
使用 ChatClientAgent
AgentSession session = await chatClientAgent.CreateSessionAsync(conversationId);
當使用 A2AAgent
AgentSession session = await a2aAgent.CreateSessionAsync(contextId, taskId);
當備份服務已經有對話狀態時,使用這個方法。
session = agent.get_session(service_session_id="<service-conversation-id>")
response = await agent.run("Continue this conversation.", session=session)
序列化與還原
var serialized = agent.SerializeSession(session);
AgentSession resumed = await agent.DeserializeSessionAsync(serialized);
serialized = session.to_dict()
resumed = AgentSession.from_dict(serialized)
這很重要
會話是針對特定代理或服務的。 重複使用不同代理設定或提供者的會話可能會導致上下文無效。