Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jakie są główne różnice między AsyncCallbackManagerforfortoolrun i CallbackManagerforfortoolrun


Jakie są główne różnice między AsyncCallbackManagerforfortoolrun i CallbackManagerforfortoolrun


AsyncCallbackManagerforfortoolrun i CallbackManagerforfortoolrun to komponenty używane w ramach Langchain do zarządzania zwrotami podczas wykonywania narzędzi, ale różnią się przede wszystkim pod względem obsługi operacji asynchronicznych.

Kluczowe różnice

1. Wykonanie asynchroniczne vs. synchroniczne:
- AsyncCallbackManagerforfortoolrun jest zaprojektowany specjalnie do operacji asynchronicznych. Umożliwia wykonanie niekakujące, co oznacza, że ​​podczas gdy jedna operacja czeka (np. Na wykonanie zadania we/wy), inne zadania mogą być kontynuowane. Jest to szczególnie przydatne w scenariuszach, w których wiele operacji może wystąpić jednocześnie bez oczekiwania na zakończenie sekwencyjnie [1] [6].
- Z drugiej strony CallbackManagerforfortoolrun jest synchroniczny. Oznacza to, że wykonuje zadania w sposób blokujący, w którym każda operacja musi się zakończyć przed rozpoczęciem następnej. Może to prowadzić do wolniejszej wydajności w scenariuszach, w których zadania mogłyby w innym przypadku działać jednocześnie [5] [6].

2. Podpisy metod:
- Metody w AsyncCallbackManagerforfortoolrun są prefiksowane z „async`, takie jak` async on_text` i `async on_tool_end`, co wskazuje, że metody te mają być używane z„ oczekiwane ”i mogą zwrócić oczekiwane wyniki [1].
- Natomiast metody CallbackManagerforfortoolrun nie mają prefiks „async”, odzwierciedlając ich synchroniczny charakter. Wykonują natychmiast i nie popierają mechanizmu „oczekiwania” [2] [5].

3. Przypadki użycia:
- Menedżer asynchroniczny lepiej nadaje się do aplikacji wymagających wysokiej przepustowości i reakcji, takich jak serwery sieciowe lub aplikacje, które obsługują wiele żądań użytkowników jednocześnie [4] [6].
- Menedżer synchroniczny może być bardziej odpowiedni dla prostszych aplikacji, w których operacje są proste i nie muszą działać jednocześnie, upraszczając model programowania [5].

Podsumowując, wybór między użyciem AsyncCallbackManagerforfortoolrun i CallbackManagerforfortoolrun w dużej mierze zależy od tego, czy Twoja aplikacja wymaga możliwości asynchronicznych, czy też może działać skutecznie z przetwarzaniem synchronicznym.

Cytaty:
[1] https://api.python.langchain.com/en/latest/callbacks/langchain_core.callback.manager.asynccallbackmanagerforfortolrun.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-aSynchronious-calls-and-callback
[5] https://python.langchain.com/api_reference/core/callbacks.html
[6] https://www.mendix.com/blog/asynchronous-vs-synchronous-programing/
[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/