Översikt över konversationer och minne

Använd AgentSession för att behålla konversationskontexten mellan anrop.

När en session använder tjänsthanterad lagring kan den innehålla ett ogenomskinlig sessions-ID på tjänstsidan. OpenAI-svar och konversations-ID:n är begränsade till api-nyckeln eller projektet som standard. Om en värdbaserad agent använder samma nyckel eller projekt för flera slutanvändare lagrar du dessa ID:er på serversidan och kontrollerar den autentiserade användaren eller klientorganisationen innan du återupptar den. Mer information finns i Session.

Kärnanvändningsmönster

De flesta program följer samma flöde:

  1. Skapa en session (CreateSessionAsync())
  2. Skicka sessionen till var och en RunAsync(...)
  3. Extrahera från serialiserat tillstånd (DeserializeSessionAsync(...))
  4. Fortsätt med ett tjänstkonversations-ID (varierar beroende på agent, t.ex. myChatClientAgent.CreateSessionAsync("existing-id"))
  1. Skapa en session (create_session())
  2. Skicka sessionen till var och en run(...)
  3. Återställ genom tjänstekonversationens-ID (get_session(...)) eller från serialiserat tillstånd.
  1. Skapa en session (CreateSession(...))
  2. Skicka vidare sessionen till varje RunText(...) med agent.WithSession(session)
  3. Extrahera från serialiserat tillstånd med json.Unmarshal(...) till agent.Session

Go-paketet agent innehåller kärntyperna för konversationstillstånd: agent.Session för nyckel/värde-tillstånd som är kopplat till en konversation och agent.ContextProvider för kontextinmatning och beständighet.

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

Använd en session för fleromgångskonversationer

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

Spara sessioner

Sessioner kan serialiseras till JSON för lagring och återupptas senare:

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

Guidekarta

Sida Fokus
Session AgentSession struktur och serialisering
Kontextprovidrar Inbyggda och anpassade mönster för kontext/historikprovider
Kontextkomprimering Hantera konversationstillväxt effektivt
Förvaring Inbyggda lagringslägen och strategier för extern beständighet

Nästa steg