【智能体开发】怎样提升AI智能体的运行速度?
我们在开发AI智能体时,通常会先花时间让智能体(Agent)能够正常运行,但接着我们会注意力到速度和成本面临挑战,大模型的调用次数越多,程序运行越慢,用户等待时间越长,Token消耗越多。我们如何提升智能体执行速度并降低运行成本呢?
以下是实际开发中经常采取的几种做法:
- 找出延迟的来源
- 改变用户体验,以降低“感知到的”延迟
- 减少 LLM 调用次数
- 加快 LLM 调用速度
- 并行进行 LLM 调用
1.识别延迟的来源
这是很朴素的逻辑,问题的第一步是如何识别性能瓶颈。减少延迟的方法完全取决于你具体的瓶颈是什么?延迟是来自一次耗时很长的 LLM 调用?还是来自多次较短的调用累积起来的结果?在尝试加速之前,你需要先诊断清楚这些问题。
你可以借助一些工具(如LangSmith或自建埋点监控系统)。监控能为你提供智能体每次交互的完整可视化。你可以跟踪代理每一步的延迟,方便你轻松识别哪些步骤对整体延迟的影响最大。
2.通过改变交互来减少“感知到的”延迟
有时候,减少延迟的最简单方式……其实并不是减少延迟本身。
虽然这听起来可能有点反直觉,但如果我们思考一下降低延迟为什么重要,通常是因为人们担心,如果智能体运行得太慢,用户就不愿意继续使用。这种情况下,往往可以通过更新智能体的用户体验来解决。目前主要通过以下两种方式来做到这一点:
流式返回结果
流式输出在大多数 LLM 应用中已经非常常见,这是目前主流的做法。它能够向用户传达LLM 正在工作,展示中间状态或者部分中间结果,降低用户等待的焦虑感从而降低用户离开页面的可能性。
除了流式传输最终的响应 token,你还可以流式传输更多内容,例如:代理正在执行的计划步骤、检索到的结果、甚至推理过程中的“思考 token”。Perplexity 在他们的搜索界面中就在这方面做得非常好。他们发现,仅仅通过在 UI 中展示这些中间步骤,就能显著提升用户满意度——即使总的完成时间没有任何缩短。在后台运行代理
让代理在后台运行。比如我的邮件助手,我根本不需要知道它处理一封邮件具体花了多少时间,因为它是由事件(收到邮件)触发的,只有在卡住时我才会收到通知。通过这种方式,我把延迟完全隐藏在用户之外,让代理在后台静默地工作。
3.减少 LLM 调用次数
在用户交互过程中,并不是所有事情都必须通过 LLM 调用来完成。如果你能用其他方式来实现,而不必调用LLM,那就更好!目前我们看到的许多智能体(Agent)都是由 LLM 调用和代码组合而成的,即“代码 + LLM 调用”的混合方式。
我们常看到的一个发展路径是:“单次 LLM 调用” → “ReAct Agent” → “多代理(Multi Agent)” 。
从简单开始,人们一开始通常从单次 LLM 调用做起,但很快会遇到一些限制,于是升级为一个智能体。这种方式一开始运作还不错,但当他们想给代理增加更多工具时,就会发现单个代理能支持的工具数量有限。接着就会尝试使用“多Agent”架构,比如通过一个主管Agent(supervisor)或集群(swarm)架构来协调多个智能体。
但问题在于,这些架构会产生大量的 LLM 调用,而且在不同代理之间的通信效率并不高。这其实是设计使然——它们是通用架构,因此不会针对你的特定场景进行优化。
没有银弹,通用的框架不能在所有业务场景下都高效运行,我们需要针对特定的业务做调整,最好的的方式允许你精确指定各个Agent之间的通信方式(或者明确什么时候只需要一次 LLM 调用)。在很多情况下,这可以显著减少 LLM 调用次数,让代理运行得更快、成本更低(而且往往更稳定可靠)。
4.加快 LLM 调用速度
提升模型的调用速度也同样重要,我们通常用两种方式来加快 LLM 调用:
使用更快的模型
有些模型本身就比其他模型更快。比如 Google 提供的 Gemini Flash 就非常快速。OpenAI 和 Anthropic 也都有更小、更快的模型。开源模型托管平台,例如 Groq 和 Fireworks,也在不断努力让最好的开源模型越来越快。
注意:这通常是一个权衡,因为更快的模型往往更小,所以准确率也会相应下降,所以我们需在实际切换的过程中需要做能力评测,防止产品能力退化。减少上下文(context)长度
LLM 的响应时间与输入的长度成正比。为了更快获得结果,你可以减少输入内容!这就是为什么你需要对每一次 LLM 调用中传入的内容拥有完全的控制权和可见性。如果一个框架会隐藏这些细节(或者不方便控制),那就不是一个好选择,你要对调用过程中的一切都能完全掌控。
5.并行进行 LLM 调用
虽然这并不适用于所有使用场景,但如果你的场景可以用上,那你绝对应该考虑这么做。我们请求处理中往往涉及多步操作,如:
- 同时进行安全/质量检测(guardrail check)和内容生成
- 并行处理多个文档的内容抽取
- 并行调用多个模型,然后将输出结果合并
6.总结
这篇文章介绍了提升智能体运行效率的一些方式,希望对你构建智能体有所帮助。想要让你的AI Agent跑得更快,归根结底是在性能、成本和能力之间做出战略性的权衡。首先要弄清楚你具体的性能瓶颈在哪里,然后再根据你的使用场景,有选择地应用这些优化方法。而有时候,最有效的方式可能根本不是技术手段,而是重新思考用户与 Agent 交互的体验。