Aracılığıyla paylaş


Aracı Arka Plan Yanıtları

Microsoft Agent Framework, tamamlanması zaman alabilen uzun süre çalışan işlemleri işlemek için arka plan yanıtlarını destekler. Bu özellik, aracıların bir isteği işlemeye başlamasını ve sonuçları yoklamak veya kesintiye uğrayan akışları sürdürmek için kullanılabilecek bir devamlılık belirteci döndürmesini sağlar.

Tip

Tam bir çalışma örneği için Bkz. Arka Plan Yanıtları örneği.

Arka Plan Yanıtları Ne Zaman Kullanılır?

Arka plan yanıtları özellikle şunlar için kullanışlıdır:

  • Önemli işleme süresi gerektiren karmaşık akıl yürütme görevleri
  • Ağ sorunları veya istemci zaman aşımları nedeniyle kesintiye uğrayabilecek işlemler
  • Uzun süre çalışan bir görevi başlatmak ve sonuçları daha sonra yeniden denetlemek istediğiniz senaryolar

Arka Plan Yanıtları Nasıl Çalışır?

Arka plan yanıtları, uzun süre çalışan işlemleri işlemek için bir devamlılık belirteci mekanizması kullanır. Arka plan yanıtları etkinleştirilmiş bir aracıya istek gönderdiğinizde iki işlemden biri gerçekleşir:

  1. Hemen tamamlama: Aracı görevi hızlı bir şekilde tamamlar ve devam belirteci olmadan son yanıtı döndürür
  2. Arka plan işleme: Aracı arka planda işlemeye başlar ve nihai sonuç yerine bir devamlılık belirteci döndürür

Devamlılık belirteci, akışsız aracı API'sini kullanarak tamamlanmak üzere yoklama yapmak veya akış aracısı API'si ile kesintiye uğrayan bir akışı sürdürmek için gerekli tüm bilgileri içerir. Devamlılık belirteci olduğunda nullişlem tamamlanır. Bu, bir arka plan yanıtı tamamlandığında, başarısız olduğunda veya daha fazla ilerleyemediğinde (örneğin, kullanıcı girişi gerektiğinde) gerçekleşir.

Arka Plan Yanıtlarını Etkinleştirme

Arka plan yanıtlarını etkinleştirmek için içinde özelliğini AllowBackgroundResponsestrueolarak ayarlayınAgentRunOptions:

AgentRunOptions options = new()
{
    AllowBackgroundResponses = true
};

Uyarı

Şu anda yalnızca OpenAI Yanıtları API'sini kullanan aracılar arka plan yanıtlarını destekler: OpenAI Yanıt Aracısı ve Azure OpenAI Yanıt Aracısı.

Bazı aracılar arka plan yanıtları üzerinde açık denetime izin vermeyebilir. Bu aracılar, ayardan bağımsız olarak işlemin karmaşıklığı temelinde bir arka plan yanıtı başlatıp başlatmayacağına AllowBackgroundResponses otonom olarak karar verebilir.

AkışSız Arka Plan Yanıtları

Akış dışı senaryolarda, bir aracıyı ilk kez çalıştırdığınızda bir devamlılık belirteci döndürebilir veya döndürmeyebilir. Devam belirteci döndürülmezse, işlem tamamlanmıştır. Bir devamlılık belirteci döndürülürse, aracının işlemeye devam eden bir arka plan yanıtı başlattığını ve nihai sonucu almak için yoklama gerektirdiğini gösterir:

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new AzureCliCredential())
    .GetOpenAIResponseClient("<deployment-name>")
    .CreateAIAgent();

AgentRunOptions options = new()
{
    AllowBackgroundResponses = true
};

AgentThread thread = agent.GetNewThread();

// Get initial response - may return with or without a continuation token
AgentResponse response = await agent.RunAsync("Write a very long novel about otters in space.", thread, options);

// Continue to poll until the final response is received
while (response.ContinuationToken is not null)
{
    // Wait before polling again.
    await Task.Delay(TimeSpan.FromSeconds(2));

    options.ContinuationToken = response.ContinuationToken;
    response = await agent.RunAsync(thread, options);
}

Console.WriteLine(response.Text);

Önemli Noktalar:

  • İlk çağrı hemen tamamlanabilir (devam belirteci yok) veya bir arka plan işlemi başlatabilir (devamlılık belirteci ile)
  • Devam belirteci döndürülmezse işlem tamamlanır ve yanıt son sonucu içerir
  • Bir devamlılık belirteci döndürülürse aracı yoklama gerektiren bir arka plan işlemi başlatmıştır
  • Sonraki yoklama çağrılarında önceki yanıttan devam belirtecini kullanın
  • olduğunda ContinuationTokennullişlem tamamlanır

Arka Plan Yanıtlarını Akışla Aktarma

Akış senaryolarında arka plan yanıtları normal akış yanıtları gibi çalışır. Aracı tüm güncelleştirmeleri gerçek zamanlı olarak tüketicilere geri akışla gönderir. Ancak temel fark, özgün akışın kesintiye uğraması durumunda aracıların devamlılık belirteçleri aracılığıyla akışın yeniden başlatılmasını desteklemesidir. Her güncelleştirme, geçerli durumu yakalayan bir devamlılık belirteci içerir ve bu belirteç sonraki akış API çağrılarına geçirilerek akışın kaldığı yerden devam etmesini sağlar:

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new AzureCliCredential())
    .GetOpenAIResponseClient("<deployment-name>")
    .CreateAIAgent();

AgentRunOptions options = new()
{
    AllowBackgroundResponses = true
};

AgentThread thread = agent.GetNewThread();

AgentResponseUpdate? latestReceivedUpdate = null;

await foreach (var update in agent.RunStreamingAsync("Write a very long novel about otters in space.", thread, options))
{
    Console.Write(update.Text);

    latestReceivedUpdate = update;

    // Simulate an interruption
    break;
}

// Resume from interruption point captured by the continuation token
options.ContinuationToken = latestReceivedUpdate?.ContinuationToken;
await foreach (var update in agent.RunStreamingAsync(thread, options))
{
    Console.Write(update.Text);
}

Önemli Noktalar:

  • Her AgentResponseUpdate birinin devamı için kullanılabilecek bir devamlılık belirteci vardır
  • Kesintiden önce alınan son güncelleştirmeden devam belirtecini depolayın
  • Akışı kesinti noktasından sürdürmek için depolanan devamlılık belirtecini kullanın

Uyarı

Python'da arka plan yanıtları desteği yakında sunulacaktır. Bu özellik şu anda Agent Framework'ün .NET uygulamasında kullanılabilir.

En İyi Yöntemler

Arka plan yanıtları ile çalışırken aşağıdaki en iyi yöntemleri göz önünde bulundurun:

  • Hizmetin aşırıya kaçmasını önlemek için uygun yoklama aralıklarını uygulama
  • İşlem beklenenden uzun sürüyorsa yoklama aralıkları için üstel geri alma kullanın
  • İşlemenin ne zaman tamamleneceğini belirlemek için null her zaman devamlılık belirteçlerini denetleyin
  • Kullanıcı oturumlarına yayılabilen işlemler için devamlılık belirteçlerini kalıcı olarak depolamayı göz önünde bulundurun

Sınırlamalar ve Dikkat Edilmesi Gerekenler

  • Arka plan yanıtları, uzun süre çalışan işlemleri destekleyen temel yapay zeka hizmetine bağlıdır
  • Tüm aracı türleri arka plan yanıtlarını desteklemeyebilir
  • Ağ kesintileri veya istemci yeniden başlatmaları, devamlılık belirteçlerini kalıcı hale getirmek için özel işleme gerektirebilir

Sonraki Adımlar