文章摘要
现代智能代理架构依赖链式调用大语言模型(LLM),但这种方式在扩展性上表现不佳,存在延迟、成本和上下文负担等问题。为解决这一问题,文章提出将工具选择决策建模为可训练的函数,通过可微控制器从数据中学习,避免外部API调用,提升执行效率和确定性。
文章总结
文章总结:优化LLM工作流中的工具选择:使用PyTorch和DSPy进行可微分编程
主要内容:
现代代理架构严重依赖于链式调用大型语言模型(LLM),典型的流程包括: 1. 使用LLM决定调用哪个工具。 2. 调用工具(如搜索、计算器、API)。 3. 使用另一个LLM解释结果并生成最终响应。
这种结构易于理解和原型设计,但扩展性差,因为每个LLM调用都会带来延迟、成本和令牌开销,并且会累积上下文,导致推理和模型性能的负担增加。
问题:
大多数代理系统使用GPT-4进行工具选择,但没有重用、抽象或效率提升,导致资源浪费。
解决方案:
通过将工具选择建模为可训练的函数,使用可微分控制器从数据中学习工具选择(通常通过强化学习或监督微调),并在LLM之外运行。这种方法具有以下优势: - 本地执行:避免外部API调用。 - 确定性:消除路由中的随机采样。 - 可组合性:与PyTorch/DSPy管道无缝集成。 - 可控性:工具选择可解释和可调试。
实现示例:
使用PyTorch实现一个简单的4层网络,输入为标记化文本,输出为工具上的softmax分布。通过反向传播从下游任务奖励中学习,逐步改进路由器。

数据来源:
可以从现有日志中获取数据,或使用GPT生成合成数据集,成本仅为一次性投入。

训练与优化:
使用简单的Adam优化器训练控制器。

对比与优势:
与基于提示的规划器相比,可微分路由器的上下文长度恒定,避免了上下文膨胀问题,减少了冗余令牌、截断风险、注意力稀释和逻辑泄漏。

成本效益:
使用可微分控制器可以将成本降低3倍,并且在工具链复杂度增加时节省更多。

结论:
在早期工作流中,LLM路由快速且灵活,但在规模扩展时效率低下。可微分控制器提供了一种优秀的替代方案,降低了成本,提高了性能,并明确了模型行为,标志着LLM系统向更模块化、可检查和可扩展的架构迈进。
评论总结
这篇评论主要围绕如何优化工具选择以减少LLM(大语言模型)的token开销和成本展开,观点多样且涉及多个方面。以下是主要观点的总结:
工具选择的优化:
- 支持观点:作者viksit提出通过本地可学习的路由器来减少token开销,并展示了如何将其集成到DSPy管道中。他认为这种方法可以降低成本并提高效率。
- 引用:“The main goal is to delegate tool calls via a PyTorch based learner and examples of how to integrate this into a DSPy pipeline.”
- 质疑观点:Garlef认为工具选择本身可能不是主要问题,关键在于如何根据上下文确定传递给工具的有效载荷。
- 引用:“Is selection really the issue? You’d still need to figure out what payload to give to the tool based on your context.”
- 支持观点:作者viksit提出通过本地可学习的路由器来减少token开销,并展示了如何将其集成到DSPy管道中。他认为这种方法可以降低成本并提高效率。
LLM在工具选择中的角色:
- 支持硬编码规则:bGl2YW5c认为工具选择应该通过硬编码规则和关注点分离来处理,而不是依赖LLM,因为LLM在处理确定性方面表现不佳。
- 引用:“I think the real problem is using an LLM to do tool selection at all. This is control flow and I believe should be handled with hardcoded rules.”
- 支持LLM的直觉:apsears则认为LLM具有直觉,但在无法微调LLM的情况下,数据可能更为重要。
- 引用:“the LLM has intuition, but I have data.”
- 支持硬编码规则:bGl2YW5c认为工具选择应该通过硬编码规则和关注点分离来处理,而不是依赖LLM,因为LLM在处理确定性方面表现不佳。
复杂工作流中的工具选择:
- 简单场景适用:crazylogger指出,这种方法适用于简单的查询-搜索-回答场景,但在复杂的代理流程中,工具选择和使用是核心任务。
- 引用:“For complex real-world agent flows though, tool use is often the only thing that the LLM is expected to do.”
- 复杂场景的挑战:nphard85质疑这种方法是否适用于需要跨多个工具进行编排的复杂工作流。
- 引用:“How does this approach work for complex agentic workflows where the LLM is expected to orchestrate across multiple tools?”
- 简单场景适用:crazylogger指出,这种方法适用于简单的查询-搜索-回答场景,但在复杂的代理流程中,工具选择和使用是核心任务。
技术细节的讨论:
- 小模型的使用:pcwelder提到,如果任务不复杂,可以使用更小、更便宜的模型,但小模型在尾部案例中的准确性可能会降低。
- 引用:“any place in your workflow you feel the task is not hard, you can use smaller and cheaper LM.”
- 更高效的方法:digitcatphd认为NVIDIA关于微调小语言模型的论文提供了更高效的方法。
- 引用:“NVIDIA’s paper on fine tuning small language models presents a slightly more efficient approach.”
- 小模型的使用:pcwelder提到,如果任务不复杂,可以使用更小、更便宜的模型,但小模型在尾部案例中的准确性可能会降低。
总结:评论中既有对优化工具选择的支持,也有对其局限性的质疑。支持者认为通过本地学习和硬编码规则可以提高效率,而质疑者则指出在复杂场景中,工具选择和使用仍然是核心挑战。此外,关于是否依赖LLM进行工具选择,也存在不同观点。