O AsyncCallbackManagerfortOlrun e o callBackManagerfortOolrun são ambos os componentes usados na estrutura de Langchain para gerenciar retornos de chamada durante a execução da ferramenta, mas diferem principalmente no manuseio de operações assíncronas.
Diferenças -chave
1. Execução assíncrona versus síncrona:
- AsyncCallbackManagerfortOolrun foi projetado especificamente para operações assíncronas. Ele permite a execução sem bloqueio, o que significa que, enquanto uma operação estiver esperando (por exemplo, para uma tarefa de E/S concluir), outras tarefas podem continuar em execução. Isso é particularmente útil em cenários em que várias operações podem ocorrer simultaneamente sem esperar que cada um termine sequencialmente [1] [6].
- O callbackManagerfortoolrun, por outro lado, é síncrono. Isso significa que ele executa tarefas de maneira bloqueadora, onde cada operação deve ser concluída antes do início do próximo. Isso pode levar a um desempenho mais lento em cenários em que as tarefas poderiam ser executadas simultaneamente [5] [6].
2. Assinaturas de método:
- Os métodos no AsyncCallbackManagerfortOolrun são prefixados com `assíncrona ', como` assíncrono on_text` e `assíncrono on_tool_end`, indicando que esses métodos se destinam a ser usados com` aguard' e podem retornar resultados aguardáveis [1].
- Por outro lado, os métodos de monitores de monitores de monitores não têm o prefixo `assíncrono ', refletindo sua natureza síncrona. Eles executam imediatamente e não suportam o mecanismo `aguardando '[2] [5].
3. Casos de uso:
- O gerenciador assíncrono é mais adequado para aplicativos que requerem alta taxa de transferência e capacidade de resposta, como servidores da Web ou aplicativos que lidam com várias solicitações de usuário simultaneamente [4] [6].
- O gerente síncrono pode ser mais apropriado para aplicações mais simples, onde as operações são diretas e não precisam ser executadas simultaneamente, simplificando assim o modelo de programação [5].
Em resumo, a escolha entre o uso do AsyncCallbackManagerfortOolrun e o callbackManagerfortOlrun depende amplamente se o seu aplicativo requer recursos assíncronos ou se pode operar efetivamente com o processamento síncrono.
Citações:
[1] https://api.python.langchain.com/en/latest/callbacks/langchain_core.callbacks.manager.asynclbackbackManagerfortOolrun.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-asynchrons-calls-and-callbacks
[5] https://python.langchain.com/api_reference/core/callbacks.html
[6] https://www.mendix.com/blog/asynchrons-vs-synchrons-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/