Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare AgentSession per mantenere il contesto della conversazione tra le chiamate.
Quando una sessione utilizza l'archiviazione gestita dal servizio, può contenere un ID di sessione opaco lato servizio. Per impostazione predefinita, gli ID di Responses e Conversations di OpenAI sono associati alla chiave API o al progetto sottostante; se un agente ospitato usa la stessa chiave o lo stesso progetto per più utenti finali, memorizza tali ID lato server e verifica l’utente o il tenant autenticato prima di riprendere la conversazione. Per informazioni dettagliate, vedere Sessione.
Modello di utilizzo principale
La maggior parte delle applicazioni segue lo stesso flusso:
- Creare una sessione (
CreateSessionAsync()) - Passare quella sessione a ciascun
RunAsync(...) - Riattivare dallo stato serializzato (
DeserializeSessionAsync(...)) - Continuare con un ID della conversazione del servizio (varia a seconda dell'agente, ad esempio
myChatClientAgent.CreateSessionAsync("existing-id"))
- Creare una sessione (
create_session()) - Passare quella sessione a ciascun
run(...) - Ripristinare tramite l'ID di conversazione del servizio (
get_session(...)) o dallo stato serializzato
- Creare una sessione (
CreateSession(...)) - Passa quella sessione a ciascun
RunText(...)conagent.WithSession(session) - Ripristinare a partire dallo stato serializzato con
json.Unmarshal(...)inagent.Session
Il pacchetto Go agent fornisce i tipi di base per lo stato della conversazione: agent.Session per lo stato chiave-valore associato a una conversazione e agent.ContextProvider per l'inserimento e la persistenza del contesto.
// 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)
}
Usare una sessione per conversazioni a più turni
resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()
Mantieni attive le sessioni
Le sessioni possono essere serializzate in JSON per l'archiviazione e successivamente riprese:
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()
Mappa della guida
| Pagina | Concentrazione (or Messa a fuoco) |
|---|---|
| Sessione |
AgentSession struttura e serializzazione |
| Provider di contesto | Modelli di provider predefiniti e personalizzati di contesto/cronologia |
| Compattazione del contesto | Gestire in modo efficiente la crescita delle conversazioni |
| Spazio di archiviazione | Modalità di archiviazione predefinite e strategie di persistenza esterne |