Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Permet AgentSession de conserver le contexte de conversation entre les appels.
Lorsqu’une session utilise un stockage géré par le service, elle peut contenir un ID de session côté service opaque. Par défaut, les ID des réponses et des conversations OpenAI sont associés à la clé d’API sous-jacente ou au projet ; si un agent hébergé utilise la même clé d’API ou le même projet pour plusieurs utilisateurs finaux, stockez ces ID côté serveur et vérifiez l’utilisateur authentifié ou le locataire avant de reprendre la conversation. Pour plus d’informations, consultez Session.
Modèle d’utilisation de base
La plupart des applications suivent le même flux :
- Créer une session (
CreateSessionAsync()) - Passez cette session à chacun d’eux
RunAsync(...) - Réhydrater à partir de l’état sérialisé (
DeserializeSessionAsync(...)) - Continuer avec un ID de conversation de service (varie selon l’agent, par exemple
myChatClientAgent.CreateSessionAsync("existing-id"))
- Créer une session (
create_session()) - Passez cette session à chacun d’eux
run(...) - Réhydrater à l'aide de l'ID de conversation du service (
get_session(...)) ou à partir d’un état sérialisé
- Créer une session (
CreateSession(...)) - Transmettez cette session à chaque
RunText(...)avecagent.WithSession(session) - Réhydrater à partir de l’état sérialisé avec
json.Unmarshal(...)dansagent.Session
Le package Go agent fournit les types principaux pour l’état de conversation : agent.Session pour l’état clé-valeur lié à une conversation et agent.ContextProvider pour l’injection de contexte et la persistance.
// 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)
}
Utiliser une session pour les conversations à plusieurs tours
resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()
Maintenir les sessions
Les sessions peuvent être sérialisées au format JSON pour le stockage et reprise ultérieurement :
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()
Carte de repère
| Page | Concentration |
|---|---|
| Session |
AgentSession structure et sérialisation |
| Fournisseurs de contexte | Modèles de fournisseur de contexte/d’historique intégrés et personnalisés |
| Compactage de contexte | Gérer efficacement la croissance des conversations |
| Stockage | Modes de stockage intégrés et stratégies de persistance externe |