AsynccallbackManagerFortoolRun un CallbackManagerFortoolRun abi ir Langchain bibliotēkas daļa, kas paredzēta, lai rīkotos ar atzvanīšanu rīka izpildes laikā. Tomēr tie būtiski atšķiras ar savu pieeju asinhronajām operācijām.
Asinhronā apstrāde
** AsynCCallBackManagerFortoolRun ir īpaši paredzēts asinhrono zvanu pārvaldībai. Tas izmanto Python's `async` un` gaidīšanas funkcijas, ļaujot tai rīkoties ar operācijām, kuru pabeigšana var prasīt, neaizslēdzot cita koda izpildi. Tas nozīmē, ka tad, kad tiek saukta asinhronā funkcija, programma var turpināt izpildīt citus uzdevumus, gaidot asinhronās operācijas rezultātu. Piemēram, tas var efektīvi pārvaldīt tādus uzdevumus kā API zvani vai I/O operācijas, dodot kontroli atpakaļ uz notikuma cilpu, līdz darbība tiek pabeigta [1] [7].
Turpretī CallBackManagerFortoolRun darbojas sinhroni. Tas nozīmē, ka, izsaucot funkciju, tai jāpabeidz tā izpildīšana, pirms kontrole tiek atgriezta izsaukuma funkcijā. Ja sinhronā darbība ietver ārēja resursa (piemēram, datu bāzes vaicājuma) gaidīšanu, tā bloķēs turpmāku izpildi, līdz darbība būs pabeigta. Tas var izraisīt neefektivitāti, it īpaši scenārijos, kad vienlaikus var veikt vairākus uzdevumus [3] [4].
Izmantojiet gadījumus un veiktspēju
Izvēle starp šiem diviem vadītājiem bieži ir atkarīga no lietojumprogrammas īpašajām prasībām:
- AsyncCallBackManagerFortoolRun ir ideāli piemērots lietojumprogrammām, kurām nepieciešama augsta atsaucība un kas ir jāpārvalda vairāki I/O-O saistītie uzdevumi vienlaicīgi. Tas ļauj izstrādātājiem rakstīt kodu, kas izskatās sinhrons, vienlaikus gūstot labumu no uzvedības, kas nav bloķējoša, kas var izraisīt labāku veiktspēju lietojumprogrammās ar daudzām vienlaicīgām operācijām [1] [5].
- No otras puses, CallBackManagerFortoolRun varētu būt piemērotāks vienkāršākām lietojumprogrammām vai tām, kurām nav nepieciešams veikt vairākus vienlaicīgus uzdevumus. Tas vienkāršo koda struktūru, bet par potenciālo veiktspējas sašaurinājumu rēķina, gaidot ilgstošas darbības [2] [6].
Rezumējot, AsyncCallbackManagerFortoolRun uzlabo sniegumu un atsaucību, izmantojot asinhronās programmēšanas paradigmas, savukārt CallBackManagerFortoolRun nodrošina taisnu sinhrono pieeju, kas piemērota mazāk sarežģītiem scenārijiem.
Atsauces:
[1.]
[2] https://www.reddit.com/r/dotnet/comments/fr8hae/is_there_any_benefit_to_asyncawait_if_youre_just/
[3] https://blog.langchain.dev/structured-tools/
[4.]
[5] https://github.com/langchain-ai/langchain/blob/master/libs/core/langchain_core/callbacks/manager.py
[6] https://anvil.works/forum/t/what-is-the-best-practice-for-asynchronousloading-component-data/3575
[7] https://python.langchain.com/api_reference/core/callback.html
[8] https://www.digitalocean.com/community/tutorials/runstanding-the-event-lop-callbacks-promises-and-async-await-in-javascript