LangChain 官方教程:AI Agent 提速的实用方法
AI Agent Latency 101: How do I speed up my AI agent?
LangChain 博客介绍开发者加速 AI Agent 的常见做法:先用 LangSmith 诊断延迟来源,再通过流式输出和后台运行降低用户感知延迟。其他要点包括减少 LLM 调用次数(如用 LangGraph 精确控制智能体通信)、换更快模型、削减输入上下文以及并行执行 LLM 调用。
原文把 Agent 提速拆成诊断瓶颈、减少与并行 LLM 调用、优化感知延迟等具体路径,方法可直接迁移到自己的项目。
我经常被问到这个问题。开发者通常先花时间让智能体跑起来,之后才会把注意力转向速度和成本。我们看到开发者常做这几件事:
- 定位延迟来自哪里
- 改变用户体验以降低“感知”延迟
- 减少 LLM 调用次数
- 加快 LLM 调用速度
- 并行发起 LLM 调用
定位延迟来自哪里
这听起来可能很基础,但你降低延迟的方法完全取决于你具体的瓶颈所在。延迟是来自一次大的 LLM 调用,还是来自多次小调用累积而成?在尝试提速之前,你需要先诊断清楚。
LangSmith 在这方面是非常有用的工具,能让你完整地看到智能体的交互过程。你可以追踪智能体每一步的延迟,我们最近还推出了“瀑布”视图,方便你轻松找出哪些步骤对整体延迟的贡献最大。
改变用户体验以降低“感知”延迟
有时候,降低延迟最简单的方法……就是不去降低延迟。
这乍一听可能有些反直觉,但如果我们想想延迟为什么重要——它往往重要是因为人们担心如果智能体运行太久,用户就不爱用了。这个问题通常可以通过更新智能体的用户体验来解决。我们看到主要有两种做法。
- 流式返回结果。 流式输出对大多数 LLM 应用来说已经相当普遍,但如果你还没做,那绝对应该做。它能让用户知道 LLM 正在工作,他们就更不容易离开页面。除了流式输出响应 token,你还可以流式输出最终响应之外的内容。例如,你可以流式输出智能体正在执行的计划步骤、检索结果或思考 token。Perplexity 在这方面做得非常出色,他们的搜索界面就是如此。他们发现,通过改变 UI 来展示这些中间步骤,用户满意度提升了——尽管总完成时间并没有变化。
- 在后台运行智能体。让智能体在后台运行。对于我的邮件助手,我根本看不到邮件智能体花了多长时间。因为它是由事件(一封邮件)触发的,只有卡住时我才会收到通知。我把所有延迟都对用户隐藏了,智能体只是在后台运行。
减少 LLM 调用次数
并非所有事情都需要调用 LLM。如果你能用调用 LLM 之外的方式完成事情——那太好了!我们看到的正在构建的智能体,是 LLM 调用与代码的结合。这种将代码与 LLM 调用相结合的混合方式,是 LangGraph 的指导原则之一,也是Replit、Uber、LinkedIn 和 Klarna 等公司采用它的核心原因。
我们常见的一条路径是“单次 LLM 调用” → “ReAct 智能体” → “多智能体” → “LangGraph”。
人们从单次 LLM 调用开始。遇到一些不足后,就升级到智能体。这样还行,但接着他们想给它更多工具,然后意识到单个智能体只能支持有限数量的工具。于是他们转向“多智能体”架构,使用监督者或蜂群架构。
问题在于,这些架构会使用大量的 LLM 调用。它们在不同智能体之间的通信方式上效率并不高。这是有意为之——它们是通用架构,所以并没有针对你的用例做优化。
这时我们会看到人们转向 LangGraph。LangGraph 是低层级的,允许你精确指定这些 agent 之间应如何通信(或者何时只是一次 LLM 调用)。这通常会显著减少 LLM 调用次数,使 agent 更快、更便宜(而且往往更可靠)。
加速 LLM 调用
我们通常看到开发者通过两种方式加速 LLM 调用。
更快的模型。有些模型比其他模型更快。Google 提供的 Gemini Flash 非常快。OpenAI 和 Anthropic 也有更小、更快的模型。像 Groq 和 Fireworks 这样的开源模型托管平台一直在努力让最好的开源模型越来越快。注意:这通常伴随着使用更差模型的代价,因为这些更快的模型通常更小,因此准确性更低。
更少的上下文。 LLM 响应所需的时间与输入长度成正比。为了获得更快的结果,你可以传入更少的输入!这就是为什么你需要对每次 LLM 调用中究竟放入了什么拥有完全的控制权和可见性。那些对此进行遮蔽(或不易于控制)的框架都不好——这就是为什么 LangGraph 不带有隐藏提示词——你拥有完全的控制权。如果你正在寻找一种更好地洞察 LLM 调用中输入内容的方法——不妨看看 LangSmith。
并行进行 LLM 调用
并非适用于所有用例,但如果适用于你的用例,你就应该这样做。LangGraph 开箱即支持并行。你可以考虑这样做的示例:
- 并行进行护栏检查和生成
- 并行从多个文档中提取信息
- 并行调用多个模型,然后合并输出
结论
加速你的 AI agent 归根结底是在性能、成本和能力之间做出战略性的权衡。首先要理解你具体的性能瓶颈,然后根据你的用例有选择地应用这些技术。有时最有效的方法根本不是技术性的——而是重新思考用户如何体验与你的 agent 的交互。
当你尝试新策略时,我们很想听到你的声音——哪些技术对加速你的 agent 最有效?在 X 或 LinkedIn 上给我们留言。
来源:LangChain:Blog · langchain.com