L'asynccallbackManagerFortoolrun et CallbackManagerFortoolrun sont tous deux des composants utilisés dans le cadre de Langchain pour gérer les rappels pendant l'exécution des outils, mais ils diffèrent principalement par leur traitement des opérations asynchrones.
Différences clés
1. Exécution asynchrone vs synchrone:
- AsyncCallbackManagerFortoolrun est conçu spécifiquement pour les opérations asynchrones. Il permet une exécution non bloquante, ce qui signifie que si une opération attend (par exemple, une tâche d'E / S à effectuer), d'autres tâches peuvent continuer à fonctionner. Ceci est particulièrement utile dans les scénarios où plusieurs opérations peuvent se produire simultanément sans attendre que chacune se termine séquentiellement [1] [6].
- CallbackManagerFortoolrun, en revanche, est synchrone. Cela signifie qu'il exécute des tâches de manière bloquante, où chaque opération doit effectuer avant le début de la suivante. Cela peut entraîner des performances plus lentes dans les scénarios où les tâches pourraient autrement s'exécuter simultanément [5] [6].
2. Signatures de la méthode:
- Les méthodes dans asynccallbackManagerFortoolrun sont préfixées avec `async`, telles que` async on_text` et `async on_tool_end`, indiquant que ces méthodes sont destinées à être utilisées avec` Await` et peuvent retourner des résultats attendables [1].
- En revanche, les méthodes de calage de calage de calage ne disposent pas du préfixe `asynchronisé, reflétant leur nature synchrone. Ils s'exécutent immédiatement et ne soutiennent pas le mécanisme «Await» [2] [5].
3. Cas d'utilisation:
- Le gestionnaire asynchrone est mieux adapté aux applications qui nécessitent un débit élevé et une réactivité, tels que des serveurs Web ou des applications qui gèrent simultanément plusieurs demandes d'utilisateurs [4] [6].
- Le gestionnaire synchrone peut être plus approprié pour les applications plus simples où les opérations sont simples et n'ont pas besoin de s'exécuter simultanément, simplifiant ainsi le modèle de programmation [5].
En résumé, le choix entre l'utilisation d'asynccallbackManagerFortoolrun et CallbackManagerFortoolrun dépend en grande partie de la question de savoir si votre application nécessite des capacités asynchrones ou si elle peut fonctionner efficacement avec un traitement synchrone.
Citations:
[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/
[3] https://blog.langchain.dev/structured-tools/
[4] https://stackoverflow.com/questions/36213948 /
[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_asyncawait_if_youre_just/