Async Support in LangChain

LangChain 中的异步支持

1 分钟阅读

我们很高兴通过利用 asyncio 库在 LangChain 中推出初始异步支持。Asyncio 使用协程和事件循环来执行非阻塞 I/O 操作;这些协程能够在等待最终结果时“暂停”(await),并让其他例程在此期间运行。要了解有关 asyncio 以及它与多线程和多进程相比如何的更多信息,请查看这篇精彩教程

动机

由于 LangChain 应用程序往往是 I/O 和网络密集型的(调用 LLM API 并与数据存储交互),asyncio 通过允许您并发运行 LLM、链和代理提供了显着优势:当一个代理正在等待 LLM 调用或工具完成时,另一个代理可以继续取得进展。LangChain 中的异步支持还允许您更无缝地将异步链和代理集成到支持 asyncio 的框架中,例如 FastAPI

特别查看异步代理文档,了解并发执行如何显着加快速度!

用法

作为起点,我们已经实现了对以下内容的异步支持

通过 agenerateLLM(参见文档

  • OpenAI

通过 arunacallChain(参见文档

  • LLMChain
  • LLMMathChain

通过 arunAgentTool(参见文档

  • SerpAPIWrapper
  • LLMMathChain

下一步

我们才刚刚开始使用 asyncio。在不久的将来,我们希望添加

  • 对更多 LLM、链和代理工具的异步支持
  • 为单个操作输入并发运行多个工具的能力
  • 对回调处理程序的异步支持
  • 与追踪更无缝的集成