Konuşmalar ve Bellek Genel Bakış

Çağrılar arasında konuşma bağlamı korumak için kullanın AgentSession .

Bir oturum hizmet yönetimli depolama kullandığında, hizmet tarafında opak bir oturum kimliği içerebilir. OpenAI Yanıtları ve Konuşma kimliklerinin kapsamı varsayılan olarak yedekleme API anahtarı veya projesi olarak belirlenmiştir; Barındırılan bir aracı birden çok son kullanıcı için aynı anahtarı veya projeyi kullanıyorsa, devam etmeden önce bu kimlikleri sunucu tarafında depolayın ve kimliği doğrulanmış kullanıcıyı veya kiracıyı doğrulayın. Ayrıntılar için bkz. Oturum.

Çekirdek kullanım düzeni

Uygulamaların çoğu aynı akışı izler:

  1. Oturum oluşturma (CreateSessionAsync())
  2. Bu oturumu her birine ilet RunAsync(...)
  3. Serileştirilmiş durumdan yeniden doldurma (DeserializeSessionAsync(...))
  4. Servis konuşma kimliğiyle devam edin (aracıya göre değişiklik gösterir, örneğin myChatClientAgent.CreateSessionAsync("existing-id"))
  1. Oturum oluşturma (create_session())
  2. Bu oturumu her birine ilet run(...)
  3. Hizmet konuşma kimliğine (get_session(...)) göre veya serileştirilmiş durumdan yeniden doldurma
  1. Oturum oluşturma (CreateSession(...))
  2. Bu oturumu agent.WithSession(session) ile her RunText(...) öğesine iletin
  3. json.Unmarshal(...) ile serileştirilmiş durumdan agent.Session içine yeniden oluşturma

Go agent paketi konuşma durumu için temel türleri sağlar: agent.Session konuşmaya bağlı anahtar-değer durumu ve agent.ContextProvider bağlam ekleme ve kalıcılık için.

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

Çok turlu konuşmalar için bir oturum kullanın

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

Oturumları kalıcı hale getir

Oturumlar depolama için JSON'a seri hale getirilebilir ve daha sonra sürdürülebilir:

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

Kılavuz haritası

Sayfa Odaklanma
Oturum AgentSession yapı ve serileştirme
Bağlam Sağlayıcıları Yerleşik ve özel bağlam/geçmiş sağlayıcı desenleri
Bağlam Sıkıştırma Konuşma büyümesini verimli bir şekilde yönetme
Depolama Yerleşik depolama modları ve dış kalıcılık stratejileri

Sonraki Adımlar