| AsyncCallbackManagerForToolRun a CallbackManagerFortOolRun jsou oba komponenty používané v rámci Langchain pro správu zpětných volání během provádění nástrojů, ale liší se především při jejich manipulaci s asynchronními operacemi.
Klíčové rozdíly
1.. Asynchronní vs. synchronní provádění:
- AsynccallbackManagerFortOolrun je navržen speciálně pro asynchronní operace. Umožňuje neblokovací provádění, což znamená, že zatímco jedna operace čeká (např. Pro dokončení úkolu I/O), mohou další úkoly pokračovat v běhu. To je zvláště užitečné ve scénářích, kde může dojít k více operacím současně, aniž by čekala na sekvenční dokončení [1] [6].
- CallbackManagerFortOolrun, na druhé straně, je synchronní. To znamená, že provádí úkoly blokováním, kde musí každá operace dokončit před začátkem další. To může vést k pomalejšímu výkonu ve scénářích, kde by úkoly mohly jinak běžet souběžně [5] [6].
2. Metodické podpisy:
- Metody v AsyncCallbackManagerForToolRunu jsou předponu s „async“, jako je `async on_text` a` async on_tool_end``, což naznačuje, že tyto metody jsou určeny k použití s `čeká“ a mohou se vrátit očekávané výsledky [1].
- Naproti tomu metody CallbackManagerforToolrun nemají předponu „async“, což odráží jejich synchronní povahu. Provádějí okamžitě a nepodporují mechanismus „čekat“ [2] [5].
3.. Případy použití:
- Asynchronní správce je vhodnější pro aplikace, které vyžadují vysokou propustnost a citlivost, jako jsou webové servery nebo aplikace, které zpracovávají více požadavků uživatelů současně [4] [6].
- Synchronní manažer může být vhodnější pro jednodušší aplikace, kde jsou operace jednoduché a nemusí běžet souběžně, čímž zjednodušuje model programování [5].
Stručně řečeno, volba mezi používáním asynccallbackManagerForFoolRun a CallbackManagerFortOolrun do značné míry závisí na tom, zda vaše aplikace vyžaduje asynchronní schopnosti nebo zda může efektivně fungovat se synchronním zpracováním.
Citace:
[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-difference-between-asynchronní-calls-and-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_youre_just/