Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Sự khác biệt chính giữa AsynccallbackManagerFortoolrun và CallbackManagerFortoolrun là gì


Sự khác biệt chính giữa AsynccallbackManagerFortoolrun và CallbackManagerFortoolrun là gì


AsynccallBackManagerFortoolrun và CallbackManagerFortoolrun đều là các thành phần được sử dụng trong khung Langchain để quản lý các cuộc gọi lại trong quá trình thực hiện công cụ, nhưng chúng chủ yếu khác nhau trong việc xử lý các hoạt động không đồng bộ của họ.

Sự khác biệt chính

1. Thực thi không đồng bộ so với thực thi đồng bộ:
- Asynccallbackmanagerfortoolrun được thiết kế dành riêng cho các hoạt động không đồng bộ. Nó cho phép thực thi không chặn, có nghĩa là trong khi một thao tác đang chờ (ví dụ: để hoàn thành nhiệm vụ I/O), các tác vụ khác có thể tiếp tục chạy. Điều này đặc biệt hữu ích trong các kịch bản trong đó nhiều hoạt động có thể xảy ra đồng thời mà không cần chờ mỗi lần hoàn thành tuần tự [1] [6].
- Mặt khác, CallbackManagerFortoolrun là đồng bộ. Điều này có nghĩa là nó thực hiện các tác vụ theo cách chặn, trong đó mỗi thao tác phải hoàn thành trước khi lần tiếp theo bắt đầu. Điều này có thể dẫn đến hiệu suất chậm hơn trong các kịch bản trong đó các tác vụ có thể chạy đồng thời [5] [6].

2. Chữ ký phương pháp:
- Các phương thức trong AsynccallBackManagerFortoolrun được đặt trước với `async`, chẳng hạn như` async on_text` và `async on_tool_end`, cho thấy các phương pháp này được dự định sử dụng với` đang chờ 'và có thể trả về kết quả Awaitable [1].
- Ngược lại, các phương pháp CallbackManagerFortoolrun không có tiền tố `async`, phản ánh bản chất đồng bộ của chúng. Họ thực thi ngay lập tức và không hỗ trợ cơ chế `Await` [2] [5].

3. Các trường hợp sử dụng:
- Trình quản lý không đồng bộ phù hợp hơn cho các ứng dụng yêu cầu thông lượng và phản hồi cao, chẳng hạn như máy chủ web hoặc ứng dụng xử lý đồng thời nhiều yêu cầu của người dùng [4] [6].
- Trình quản lý đồng bộ có thể phù hợp hơn với các ứng dụng đơn giản hơn trong đó các hoạt động đơn giản và không cần phải chạy đồng thời, do đó đơn giản hóa mô hình lập trình [5].

Tóm lại, sự lựa chọn giữa việc sử dụng AsyncCallBackManagerFortoolrun và CallbackManagerFortoolrun phần lớn phụ thuộc vào việc ứng dụng của bạn có yêu cầu khả năng không đồng bộ hay không nếu nó có thể hoạt động hiệu quả với xử lý đồng bộ.

Trích dẫn:
[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/
.
[4] https://stackoverflow.com/questions/36213948/what-is-the-difference-between-asynchronous-calls-and-callbacks
[5] https://python.langchain.com/api_reference/core/callbacks.html
.
[7] https://github.com/langchain-ai/langchain/discussions/17591
.

|@.