Přehled konverzací a paměti

Slouží AgentSession k zachování kontextu konverzace mezi vyvoláním.

Pokud relace používá úložiště spravované službou, může obsahovat neprůhlené ID relace na straně služby. Id odpovědí OpenAI a konverzací jsou ve výchozím nastavení omezené na backingový klíč rozhraní API nebo projekt; Pokud hostovaný agent používá stejný klíč nebo projekt pro více koncových uživatelů, uložte tato ID na straně serveru a před obnovením ověřte ověřeného uživatele nebo tenanta. Podrobnosti najdete v části Session.

Model základního využití

Většina aplikací se řídí stejným tokem:

  1. Vytvořte relaci (CreateSessionAsync())
  2. Předání této relace každému RunAsync(...)
  3. Rehydratace ze serializovaného stavu (DeserializeSessionAsync(...))
  4. Pokračujte s ID konverzace služby (liší se podle agenta, např. myChatClientAgent.CreateSessionAsync("existing-id"))
  1. Vytvořte relaci (create_session())
  2. Předání této relace každému run(...)
  3. Obnovení pomocí ID konverzace služby (get_session(...)) nebo ze serializovaného stavu
  1. Vytvořte relaci (CreateSession(...))
  2. Předání této relace každému RunText(...) pomocí agent.WithSession(session)
  3. Obnovit ze serializovaného stavu pomocí json.Unmarshal(...) do agent.Session

Balíček Go agent poskytuje základní typy pro stav konverzace: agent.Session pro stav klíč-hodnota svázaný s konverzací a agent.ContextProvider pro injektáž kontextu a trvalost.

// 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)
}

Použijte relaci pro vícekrokové konverzace

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

Zachovat relace

Relace je možné serializovat do formátu JSON pro úložiště a později pokračovat:

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()

Mapa průvodce

Stránka Zaměření
Session AgentSession struktura a serializace
Zprostředkovatelé kontextu Předdefinované a vlastní vzory zprostředkovatele kontextu a historie
Komprimace kontextu Efektivní správa růstu konverzací
Storage Integrované režimy úložiště a externí strategie trvalosti
Poskytovatel paměti historie chatu Přidání historie chatu do kontextu agenta a zachování nových zpráv

Další kroky