Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use AgentSession para manter o contexto da conversa entre as invocações.
Quando uma sessão utiliza armazenamento gerido por serviços, pode conter um ID opaco do lado do serviço. Os IDs de Responses e Conversations da OpenAI estão, por predefinição, associados à chave da API ou ao projeto subjacente; se um agente alojado usar a mesma chave ou projeto para vários utilizadores finais, armazene esses IDs no lado do servidor e verifique o utilizador autenticado ou o tenant antes de retomar. Para mais detalhes, veja Sessão.
Padrão de utilização dos núcleos
A maioria das candidaturas segue o mesmo fluxo:
- Criar uma sessão (
CreateSessionAsync()) - Passar essa sessão a cada um
RunAsync(...) - Reidratar a partir do estado serializado (
DeserializeSessionAsync(...)) - Continue com um ID de conversa de serviço (varia consoante o agente, por exemplo)
myChatClientAgent.CreateSessionAsync("existing-id")
- Criar uma sessão (
create_session()) - Passar essa sessão a cada um
run(...) - Reidratar por ID de conversa de serviço (
get_session(...)) ou a partir do estado serializado
- Criar uma sessão (
CreateSession(...)) - Passe essa sessão a cada
RunText(...)comagent.WithSession(session) - Reidratar do estado serializado com
json.Unmarshal(...)emagent.Session
O pacote Go agent fornece os tipos base para o estado da conversa: agent.Session para estado de chave-valor associado a uma conversa e agent.ContextProvider para injeção de contexto e persistência.
// 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)
}
Use uma sessão para conversas com vários turnos
resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()
Manter as sessões
As sessões podem ser serializadas para JSON para armazenamento e posteriormente retomadas:
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-guia
| Página | Foco |
|---|---|
| Sessão |
AgentSession Estrutura e serialização |
| Fornecedores de Contexto | Padrões incorporados e personalizados de fornecedores de contexto/histórico |
| Compactação do Contexto | Gerir eficientemente o crescimento da conversa |
| Armazenamento | Modos de armazenamento incorporados e estratégias externas de persistência |