共用方式為


Session

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)

這很重要

會話是針對特定代理或服務的。 重複使用不同代理設定或提供者的會話可能會導致上下文無效。

後續步驟