AsyncCallbackManagerFortoolRun un CallbackManagerFortoolRun abi ir komponenti, ko izmanto Langchain ietvarā, lai pārvaldītu atzvanīšanu instrumentu izpildes laikā, taču tie galvenokārt atšķiras, rīkojoties ar asinhronām operācijām.
Galvenās atšķirības
1. Asinhronā pret sinhronu izpildi:
- AsyncCallbackManagerFortoolRun ir īpaši paredzēts asinhronām operācijām. Tas ļauj veikt izpildi, kas nav bloķējoša, kas nozīmē, ka, kamēr viena operācija gaida (piemēram, I/O uzdevuma pabeigšana), citi uzdevumi var turpināt darboties. Tas ir īpaši noderīgi scenārijos, kad vienlaikus var notikt vairākas operācijas, negaidot, kad katrs beidzas pēc kārtas [1] [6].
- CallBackManagerFortoolRun, no otras puses, ir sinhrona. Tas nozīmē, ka tas veic uzdevumus bloķējošā veidā, kur katrai operācijai jāveic pirms nākamā sākuma. Tas var izraisīt lēnāku sniegumu scenārijos, kad uzdevumi citādi varētu darboties vienlaikus [5] [6].
2. metodes paraksti:
- AsynccallbackManagerFortOolRun metodes tiek prefiksētas ar `async`, piemēram,` async on_text` un `async on_tool_end`, norādot, ka šīs metodes ir paredzētas lietošanai ar` gaidīšanu "un var atgriezties gaidāmus rezultātus [1].
- Turpretī CallBackManterFortoolRun metodēm nav `async` prefiksa, kas atspoguļo to sinhrono raksturu. Viņi nekavējoties izpilda un neatbalsta "gaidīto" mehānismu [2] [5].
3. Lietošanas gadījumi:
- Asinhronais pārvaldnieks ir labāk piemērots lietojumprogrammām, kurām nepieciešama augsta caurlaidspēja un atsaucība, piemēram, tīmekļa serveri vai lietojumprogrammas, kas vienlaikus apstrādā vairākus lietotāju pieprasījumus [4] [6].
- Sinhronais pārvaldnieks varētu būt piemērotāks vienkāršākām lietojumprogrammām, kurās operācijas ir vienkāršas un tām nav jābrauc vienlaikus, tādējādi vienkāršojot programmēšanas modeli [5].
Rezumējot, izvēle starp AsyncCallBackManagerFortoolRun izmantošanu un CallBackManagerFortoolRun lielā mērā ir atkarīga no tā, vai jūsu lietojumprogrammai ir vajadzīgas asinhronās iespējas vai arī tā var efektīvi darboties ar sinhronu apstrādi.
Atsauces:
[1.]
[2] https://python.langchain.com/v0.1/docs/modules/tools/custom_tools/
[3] https://blog.langchain.dev/structured-tools/
[4.]
[5] https://python.langchain.com/api_reference/core/callback.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/