Übersicht über Konversationen und Speicher

Verwenden Sie AgentSession, um den Unterhaltungskontext zwischen Aufrufen beizubehalten.

Wenn eine Sitzung dienstverwaltete Speicher verwendet, kann sie eine undurchsichtige dienstseitige Sitzungs-ID enthalten. IDs für OpenAI Responses und Conversations sind standardmäßig an den zugrunde liegenden API-Schlüssel bzw. das Projekt gebunden; wenn ein gehosteter Agent denselben Schlüssel bzw. dasselbe Projekt für mehrere Endnutzer verwendet, speichern Sie diese IDs serverseitig und überprüfen Sie den authentifizierten Benutzer oder Mandanten, bevor Sie sie wiederaufnehmen. Ausführliche Informationen finden Sie unter "Session".

Kernnutzungsmuster

Die meisten Anwendungen folgen demselben Fluss:

  1. Erstellen einer Sitzung (CreateSessionAsync())
  2. Übergeben Sie diese Sitzung an jedes RunAsync(...)
  3. Rehydrierung aus einem serialisierten Zustand (DeserializeSessionAsync(...))
  4. Fortfahren mit einer Servicegesprächs-ID (variiert je nach Agent, z. B. myChatClientAgent.CreateSessionAsync("existing-id"))
  1. Erstellen einer Sitzung (create_session())
  2. Übergeben Sie diese Sitzung an jedes run(...)
  3. Rehydratieren nach Dienstgesprächs-ID (get_session(...)) oder aus dem serialisierten Zustand.
  1. Erstellen einer Sitzung (CreateSession(...))
  2. Übergeben Sie diese Sitzung mit agent.WithSession(session) an jedes RunText(...)
  3. Rehydratieren aus serialisiertem Zustand mit json.Unmarshal(...) in agent.Session

Das Go-Paket agent stellt die Kerntypen für den Unterhaltungszustand bereit: agent.Session für den Schlüsselwertzustand, der an eine Unterhaltung gebunden ist, und agent.ContextProvider für die Kontexteinfügung und Persistenz.

// Create and reuse a session
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);

// Persist and restore later
var serialized = agent.SerializeSession(session);
AgentSession resumed = await agent.DeserializeSessionAsync(serialized);
# Create and reuse a 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)

# Rehydrate by service conversation ID when needed
service_session = agent.get_session(service_session_id="<service-conversation-id>")

# Persist and restore later
serialized = session.to_dict()
resumed = AgentSession.from_dict(serialized)
session, err := a.CreateSession(ctx)
if err != nil {
    panic(err)
}

Verwenden Sie eine Sitzung für mehrzügige Konversationen

resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()

Sitzungen beibehalten

Sitzungen können für den Speicher in JSON serialisiert und später fortgesetzt werden:

data, err := json.Marshal(session)
if err != nil {
    panic(err)
}
// store data...

// later:
var resumed agent.Session
if err := json.Unmarshal(data, &resumed); err != nil {
    panic(err)
}

resp, err := a.RunText(ctx, "Continue from where we left off.", agent.WithSession(&resumed)).Collect()

Leitfadenkarte

Seite Fokus
Sitzung AgentSession Struktur und Serialisierung
Kontextanbieter Integrierte und benutzerdefinierte Kontext-/Verlaufsanbietermuster
Kontextkomprimierung Effiziente Steuerung des Gesprächswachstums
Lagerung Integrierte Speichermodi und externe Persistenzstrategien

Nächste Schritte