Ringkasan Percakapan dan Memori

Gunakan AgentSession untuk menjaga konteks percakapan di antara pemanggilan.

Jika suatu sesi menggunakan penyimpanan yang dikelola layanan, sesi tersebut dapat berisi ID sesi tidak transparan di sisi layanan. ID Respons dan Percakapan OpenAI secara bawaan dibatasi pada kunci API atau proyek yang mendasarinya; jika agen yang dihosting menggunakan kunci atau proyek yang sama untuk beberapa pengguna akhir, simpan ID tersebut di sisi server dan verifikasi pengguna atau tenant yang diautentikasi sebelum melanjutkan kembali. Untuk detailnya, lihat Sesi.

Pola penggunaan inti

Sebagian besar aplikasi mengikuti alur yang sama:

  1. Membuat sesi (CreateSessionAsync())
  2. Teruskan sesi tersebut ke masing-masing RunAsync(...)
  3. Rehidrasi dari keadaan tersiri (DeserializeSessionAsync(...))
  4. Lanjutkan dengan ID percakapan layanan (bervariasi menurut agen, misalnya myChatClientAgent.CreateSessionAsync("existing-id"))
  1. Membuat sesi (create_session())
  2. Teruskan sesi tersebut ke masing-masing run(...)
  3. Rehidrasi dengan ID percakapan layanan (get_session(...)) atau dari keadaan serial
  1. Membuat sesi (CreateSession(...))
  2. Teruskan sesi tersebut ke masing-masing RunText(...) dengan agent.WithSession(session)
  3. Rehidrasi dari status berseri dengan json.Unmarshal(...) ke dalam agent.Session

Paket Go agent menyediakan jenis inti untuk status percakapan: agent.Session untuk status kunci-nilai yang terkait dengan percakapan dan agent.ContextProvider untuk injeksi dan persistensi konteks.

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

Menggunakan sesi untuk percakapan multi-giliran

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

Pertahankan sesi

Sesi dapat diserialisasikan ke JSON untuk penyimpanan dan kemudian dilanjutkan:

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

Peta panduan

Halaman Fokus
Sesi AgentSession struktur dan serialisasi
Penyedia Konteks Pola penyedia konteks/riwayat bawaan dan kustom
Pemadatan Konteks Mengelola pertumbuhan percakapan secara efisien
Penyimpanan Mode penyimpanan bawaan dan strategi persistensi eksternal

Langkah selanjutnya