AsynccallbackManagerfortoolrun dan CallbackManagerfortoolrun keduanya komponen yang digunakan dalam kerangka kerja Langchain untuk mengelola panggilan balik selama eksekusi alat, tetapi mereka berbeda terutama dalam penanganan operasi asinkron.
Perbedaan utama
1. Eksekusi asinkron vs. sinkron:
- AsynccallbackManagerfortoolRun dirancang khusus untuk operasi asinkron. Ini memungkinkan eksekusi yang tidak memblokir, yang berarti bahwa sementara satu operasi sedang menunggu (mis., Untuk tugas I/O diselesaikan), tugas-tugas lain dapat terus berjalan. Ini sangat berguna dalam skenario di mana beberapa operasi dapat terjadi secara bersamaan tanpa menunggu masing -masing untuk menyelesaikan secara berurutan [1] [6].
- CallbackManagerfortoolrun, di sisi lain, sinkron. Ini berarti bahwa ia mengeksekusi tugas dengan cara pemblokiran, di mana setiap operasi harus diselesaikan sebelum yang berikutnya dimulai. Hal ini dapat menyebabkan kinerja yang lebih lambat dalam skenario di mana tugas -tugas dapat berjalan secara bersamaan [5] [6].
2. Metode tanda tangan:
- Metode dalam asynccallbackManagerfortoolrun diawali dengan `async`, seperti` async on_text` dan `async on_tool_end`, yang menunjukkan bahwa metode ini dimaksudkan untuk digunakan dengan` menunggu dan dapat mengembalikan hasil yang dapat dipertahankan [1].
- Sebaliknya, metode CallbackManagerfortoolrun tidak memiliki awalan `async`, yang mencerminkan sifat sinkronnya. Mereka segera mengeksekusi dan tidak mendukung mekanisme `menunggu` [2] [5].
3. Kasus Gunakan:
- Manajer asinkron lebih cocok untuk aplikasi yang membutuhkan throughput dan responsif tinggi, seperti server web atau aplikasi yang menangani beberapa permintaan pengguna secara bersamaan [4] [6].
- Manajer sinkron mungkin lebih tepat untuk aplikasi yang lebih sederhana di mana operasi langsung dan tidak perlu berjalan secara bersamaan, sehingga menyederhanakan model pemrograman [5].
Singkatnya, pilihan antara menggunakan AsynccallbackManagerfortoolrun dan CallbackManagerfortoolrun sangat tergantung pada apakah aplikasi Anda memerlukan kemampuan asinkron atau jika dapat beroperasi secara efektif dengan pemrosesan sinkron.
Kutipan:
[1] https://api.python.langchain.com/en/latest/callbacks/langchain_core.callbacks.manager.asyncallbackManagerfortoolrun.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-diference-between-asynchronous-calls-andbacks
[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_asyncait_if_youre_just/