Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj AgentSession do zachowywania kontekstu konwersacji między wywołaniami.
Gdy sesja używa magazynu zarządzanego przez usługę, może zawierać nieprzezroczysty identyfikator sesji po stronie usługi. Identyfikatory Responses i Conversations w OpenAI są domyślnie powiązane z używanym kluczem API lub projektem; jeśli hostowany agent używa tego samego klucza lub projektu dla wielu użytkowników końcowych, przechowuj te identyfikatory po stronie serwera i przed wznowieniem zweryfikuj uwierzytelnionego użytkownika lub dzierżawcę. Aby uzyskać szczegółowe informacje, zobacz Sesja.
Wzorzec użycia rdzeni
Większość aplikacji postępuje zgodnie z tym samym przepływem:
- Tworzenie sesji (
CreateSessionAsync()) - Przekaż tę sesję każdemu
RunAsync(...) - Ponowne wypełnianie ze stanu serializowanego (
DeserializeSessionAsync(...)) - Kontynuuj z identyfikatorem konwersacji serwisowej (różni się w zależności od agenta, np.
myChatClientAgent.CreateSessionAsync("existing-id"))
- Tworzenie sesji (
create_session()) - Przekaż tę sesję każdemu
run(...) - Ponowne wypełnianie według identyfikatora konwersacji usługi (
get_session(...)) lub ze stanu serializowanego
- Tworzenie sesji (
CreateSession(...)) - Przekaż tę sesję każdemu
RunText(...)za pomocąagent.WithSession(session) - Ponowne wypełnianie ze stanu serializowanego z
json.Unmarshal(...)doagent.Session
Pakiet Go agent udostępnia podstawowe typy opisujące stan konwersacji: agent.Session dla stanu w postaci par klucz-wartość powiązanego z konwersacją oraz agent.ContextProvider do wstrzykiwania kontekstu i utrwalania.
// 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)
}
Użyj sesji do wieloturowych rozmów
resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()
Utrwalanie sesji
Sesje można serializować do formatu JSON w celu przechowywania, a następnie wznawiać:
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 przewodnika
| Strona | Ukierunkowanie |
|---|---|
| Sesja |
AgentSession struktura i serializacja |
| Dostawcy kontekstu | Wbudowane i niestandardowe wzorce dostarczyciela kontekstu i historii |
| Kompaktowanie kontekstu | Efektywne zarządzanie rozwojem konwersacji |
| Przechowywanie | Wbudowane tryby przechowywania i strategie trwałości zewnętrznej |