AsynccallbackManagerFortoolrun ve geri çağırmaManagerFortoolrun, Langchain çerçevesinde araç yürütme sırasında geri çağrıları yönetmek için kullanılan bileşenlerdir, ancak öncelikle asenkron operasyonların işlenmesinde farklılık gösterirler.
Anahtar Farklılıklar
1. eşzamansız ve senkronize yürütme:
- AsynccallbackManagerFortoolrun, özellikle eşzamansız işlemler için tasarlanmıştır. Engelsiz yürütülmeye izin verir, yani bir işlem beklerken (örneğin, bir G/Ç görevinin tamamlanması için), diğer görevlerin çalışmaya devam edebileceği. Bu, özellikle her birinin sırayla bitirmesini beklemeden birden fazla işlemin aynı anda gerçekleşebileceği senaryolarda yararlıdır [1] [6].
- CallbackManagerFortoolrun ise eşzamanlıdır. Bu, görevleri engelleyici bir şekilde yürüttüğü, her işlemin bir sonraki başlamadan önce tamamlanması gerektiği anlamına gelir. Bu, görevlerin eşzamanlı olarak çalışabileceği senaryolarda daha yavaş performansa yol açabilir [5] [6].
2. Yöntem imzaları:
- AsynccallbackManagerFortoolrun'daki yöntemler, bu yöntemlerin `` await` ile kullanılması ve beklenen sonuçlar geri döndürebileceğini gösteren `` async on_text` ve 'async on_tool_end' gibi 'async' ile ön eklenmiştir [1].
- Aksine, geri çağırmaManagerfortoolrun yöntemleri, eşzamanlı doğalarını yansıtan 'async' önekine sahip değildir. Hemen yürütürler ve `` Await '' mekanizmasını desteklemezler [2] [5].
3. Kullanım durumları:
- Asenkron yönetici, web sunucuları veya aynı anda birden fazla kullanıcı isteğini yerine getiren uygulamalar gibi yüksek verim ve yanıt verebilirlik gerektiren uygulamalar için daha uygundur [4] [6].
- Senkron yönetici, işlemlerin basit olduğu ve aynı anda çalışması gerekmediği daha basit uygulamalar için daha uygun olabilir, böylece programlama modelini basitleştirir [5].
Özetle, AsynccallbackManagerFortoolrun ve CallbackManagerFortoolrun kullanma arasındaki seçim büyük ölçüde uygulamanızın asenkron yetenekler gerektirip gerektirmediğine veya senkron işleme ile etkili bir şekilde çalışıp çalışamayacağına bağlıdır.
Alıntılar:
[1] https://api.python.langchain.com/en/latest/callbacks/langchain_core.callbacks.manager.asynccallbackmanagerfortoolrun.html
[2] https://python.langchain.com/v0.1/docs/modules/tools/custom_tools/
[3] https://blog.langchain.dev/structured-tools/
[4] https://stackoverflow.com/questions/36213948/what-is-the-ifference-beton-asynchronous calls ve callbacks
[5] https://python.langchain.com/api_reference/core/callbacks.html
[6] https://www.mendix.com/blog/asynchronous-vs-synchronous-programming/
[7] https://github.com/langchain-ai/langchain/discussions/17591
[8] https://www.reddit.com/r/dotnet/comments/fr8hae/is_there_any_benefit_to_asyncawait_if_yourue_just/