智能体中的编排模型能有多小?(将其与代码生成分开——显然代码生成需要大模型)

Reddit r/LocalLLaMA 新闻

摘要

作者研究本地优先智能体中的编排模型在保持可靠性的前提下能有多小,发现工具调用纪律比推理更先失效,且35B-A3B MoE模型在12GB硬件上被证明可行。

我正在构建一个本地优先智能体——一个简单的ReAct循环(思考、选择工具、观察、重复),基于llama.cpp后端——我想精确回答一个通常只会得到“视情况而定”的问题。确实视情况而定。所以让我把它拆分为两个任务:(a) 繁重的单次生成——编写一个400行的模块,重构一个大文件。这需要一个大模型,毋庸置疑。在我的设置中,我将此路由到一个专用的编码模型;我不要求循环模型来做这件事。(b) 编排循环本身——读取内容,决定使用哪个工具,用正确的参数调用它,查看结果,做出反应。这篇文章只讨论(b)。对于(b):在循环不再可靠之前,那个模型能有多小?我目前的平衡点是Qwen3.6-35B-A3B(MoE,约3B活跃参数)——这是循环能维持的最轻量设置,在12GB显卡上通过30个专家卸载仍然表现良好(运行速度40 tokens/s的提示生成)。低于这个规模就会退化,我一直在试图确定*什么*先退化。不是推理。是工具调用纪律。模型理解意图正确,但调用时出错。我测试过的较小模型的示例:- 向一个没有`overwrite`参数的`append_file`工具传递了`overwrite=true` - 用不存在的`output_mode`参数调用`grep_search`——它从另一个工具泛化了这个参数 - 试图调用一个从未是工具的`conclusion`“工具”,因为完成任务*感觉*像是一个动作 - 再次向另一个工具传递了`overwrite`,从之前的调用中“学”到了错误的教训。过度泛化或凭空捏造参数。35B-A3B很少出现这种情况;小型密集模型则频繁出现。我尝试了两件事来降低下限:1. 在系统提示中暴露精确的工具签名——直接从函数生成`tool_name(arg1, arg2, opt=default)`,放在每个工具旁边,这样模型就能看到精确的参数列表,并通过省略来知道哪些参数不存在。主观上帮助很大;尚未严格测量。2. 重复监控——小模型会卡住,重复相同的失败(工具,参数)调用,而观察结果不断报错;它们的状态模型已经漂移。我对最近的操作进行指纹识别,并在N次相同失败后注入“停止,改变策略”的提示。有效,但只是权宜之计。我追求的是:- 对于编排角色具体来说——你在循环中实际信任的最小模型是什么?- 工具调用纪律也是你们首先失效的东西吗,还是其他什么先失效?- 让小型模型在此可行更好的方法——更严格的工具模式、轻量微调?仓库在这里,如果有用的话——还很粗糙:https://github.com/homoagens/pragma 你可能可以做得比人们想象的更小——如果你修复了工具调用纪律,而不是仅仅伸手拿一个更大的模型。
查看原文

相似文章

结构化工作流与小规模本地模型的力量

Reddit r/LocalLLaMA

作者详细介绍了使用小型本地模型(Qwen3.5 9B)结合结构化工作流和map-reduce模式来管理上下文限制、构建自定义智能体循环的经验,并已用其取代Claude Code处理大部分任务。

小模型代理栈为何未能成为默认选择,与它们能否工作无关

Reddit r/LocalLLaMA

小型语言模型在代理任务上的表现可匹敌甚至超越大型前沿模型,且成本仅为后者的一小部分,然而其采用率仍落后,原因在于前沿实验室没有动力推广它们。一个关键问题是,小模型常常通过有缺陷的推理得出正确答案,这可以通过检索和验证层来缓解。