Reading Guide
先问一个问题
当模型可以调用工具、读写文件甚至连续行动时,多出来的是什么能力,又多出来什么风险?
- 适合读者
- 开始让 AI 直接读写文件、访问网页或执行程序的读者
- 阅读基础
- what-language-models-do;task-definition-and-acceptance
Key Points
先记住这些
- 模型本身只会产生文本;所谓工具调用,是它产生一段符合约定格式的请求,由外部程序去执行并把结果送回。
- 凡是能被写成确定步骤的部分,都应当交给程序而不是模型,模型只负责判断与生成。
- 工作流是步骤固定、模型只填空的做法;Agent 是让模型自行决定下一步做什么的做法,两者可靠性差别很大。
- Agent 增加的是行动范围与自动化程度,不是判断的可靠性;错误会沿着步骤累积。
- 权限应当按最小必要授予,写入与删除必须与读取分开,外部内容进入上下文即应视为不可信输入。
- 自动化的价值主要体现在可重复的批量工作上,关键判断仍需保留人的检查点。
Terms
几个必要概念
- 工具调用
模型按约定格式输出一段调用请求,由外部程序执行后把结果返回上下文。
理解这一点就能明白:工具是否可靠取决于外部程序,模型只是决定了什么时候调用、传什么参数。- 工作流
步骤与顺序由人预先固定,模型在每一步内完成特定生成或判断。
它牺牲灵活性换取可预测性,适合体例统一、批量处理这类任务。- Agent
由模型自行决定调用哪些工具、按什么顺序推进、何时结束的运行方式。
适合路径难以预先确定的探索性任务,但每一步的误差会向后传递,必须设检查点。- 间接提示注入
外部材料中夹带的指令被模型当作用户要求执行。
只要允许模型读取网页或他人文件,这一风险就存在,权限设计必须以此为前提。
工具调用其实很朴素
模型不会自己打开文件,也不会自己访问网络。所谓工具调用,是运行环境事先告诉模型有哪些工具可用、各需要什么参数;模型在需要时产出一段格式规整的调用请求;外部程序解析这段请求、真正执行、再把结果作为新的文本送回上下文。整个回路里,模型始终只在读写文本。围绕这一思路的研究很多,共同点是把语言模型当作决策与表述的部件,把确定性工作交给外部程序。S1
由此可得一条实用原则:凡是能写成确定步骤的,就不要让模型来做。统计条数、比对字符串、按规则排序、检查字段完整性,这些交给几行程序既快又准。让模型去数一份年表里有多少条 1923 年的记录,是在用最不适合的工具做最容易出错的事。
近年出现了若干把工具接入方式标准化的公开规范,使同一套工具可以被不同产品复用。这类规范值得关注,但对使用者而言,关键仍然是弄清每个工具实际拥有什么权限,而不是它遵循哪种协议。S2
固定工作流与自主 Agent
两者的分界在于「下一步做什么」由谁决定。工作流由人预先排定:先切分,再抽取,再校验,再汇总,模型只在每一格里干活。Agent 则由模型自行决定调用哪个工具、要不要重试、什么时候算完成。S3
可靠性差别相当大。工作流的每一步都可以单独测试、单独回放,出错时能立即定位。Agent 的路径每次可能不同,某一步的小偏差会影响后续所有判断,且失败往往表现为「跑完了,但结果不对」,比直接报错更难发现。因此稳妥的做法是默认用工作流,只在路径确实无法预先确定时才用 Agent,并且给它设置明确的终止条件与人工确认点。S3
- 读与写分开授权:探索阶段只给读权限,确认方案后再开写权限。
- 写操作先出差异清单:让它先列出「将要改哪些文件的哪些行」,人看过再执行。
- 限定作用范围:只允许在指定目录内操作,不允许触及备份与版本库以外的地方。
- 设步数与时间上限:防止在错误路径上无限重试。
- 全程留痕:记录每一次调用与结果,出问题才能回溯。
外部内容一律视为不可信
一旦允许模型读取网页、邮件或他人提供的文件,就必须假定这些材料里可能夹带针对模型的指令。模型并不天然区分「这是要处理的材料」与「这是要遵从的命令」,两者在上下文里都是文字。已有工作把这类风险归入受工具增强的语言模型所特有的安全问题。对个人使用者而言,最简单的防线不是让模型学会分辨,而是不给它可以造成不可逆后果的权限。S1S4
从手工到自动化的四个台阶
自动化不必一步到位,实际上一步到位几乎总是失败。稳妥的路径是四个台阶,每一级都能独立产生价值,也都能停在那里不再往上走。第一级是纯手工加模型辅助:材料自己贴,结果自己复制出来,模型只负责生成与判断。这一级最慢,但对陌生任务是必要的,因为你需要先弄清楚这件事到底该怎么做。
第二级是把确定的部分脚本化:切分、格式转换、字段校验、结果汇总交给程序,模型仍由人逐批调用。这一级的收益最大,因为它消灭的是最枯燥也最容易出错的环节,而风险几乎为零。多数个人项目停在这一级就足够了。第三级是固定工作流:把整条链路串起来自动跑,人只在预设的检查点介入。第四级才是让模型自行决定步骤,即前面说的 Agent。S3
- 上一级之前,先确认下一级的每一步都已经在上一级中被手工验证过。
- 每上一级,都要新增相应的留痕:脚本化要记参数,工作流要记每步产物,Agent 要记每次调用。
- 任何一级出现连续两次说不清原因的失败,就退回上一级,而不是加更多自动化去补救。
- 检查点的位置随级别上移而更重要,第三级以上必须有不可跳过的人工确认。
- 自动化的收益要能说出具体数字,说不出就说明这一级不值得上。
还有一条与技术无关的判断:这件事你会做多少次。只做一两次的工作,手工加模型辅助永远最划算,为它写脚本是在赔本。要做几十次以上、且每次形态相近的工作,才值得往上走。本站的书目整理、体例统一、年表核对属于后者,而某一篇文章的翻译润色属于前者,两类工作不必用同一套办法。
此外还有一条容易被忽略的成本:自动化本身也要维护。脚本会因材料格式变化而失效,工作流会因某一步的产品更新而中断,而这些故障往往在你最赶时间的时候出现。因此每上一级之前,不妨先估一估维护它需要多少精力,若这份精力超过了它省下的,那就不值得往上走。
Conclusion
结语
工具让模型的手伸得更长,但脑子还是原来那个。把确定的事交给程序,把判断的事留给人,把生成与表述交给模型,这条分工线画清楚了,自动化才是省力而不是添乱。
仍可追问
- 间接提示注入目前没有公认的通用防御方案,本文只给出权限层面的规避建议。
- 多步 Agent 的错误累积规律缺少针对文献整理任务的公开量化研究。
- 工具接入规范仍在快速演变,本文对具体协议不作技术细节描述。
参考资料
- S1
Grégoire Mialon, Roberto Dessì, Maria Lomeli, Christoforos Nalmpantis, Ram Pasunuru, Roberta Raileanu, 等.Augmented Language Models: a Survey.2023
DOI / ISBN:arXiv:2302.07842查看来源 - S2
Model Context Protocol 项目.Model Context Protocol Documentation.2026
查看来源 - S3
Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao.ReAct: Synergizing Reasoning and Acting in Language Models.2023
DOI / ISBN:arXiv:2210.03629查看来源 - S4
National Institute of Standards and Technology.Artificial Intelligence Risk Management Framework (AI RMF 1.0), NIST AI 100-1.2023
DOI / ISBN:10.6028/NIST.AI.100-1查看来源