1. 从"能聊"到"能办":一个被低估的分水岭
过去两年,我接触过不少团队在折腾大模型落地,一个特别普遍的现象是:大家一开始都特别兴奋,觉得模型能写文案、能答问题、能编代码,仿佛什么都能干。但真到了业务场景里,问题就来了——你让它帮你订一张机票,它给你写了一段"如何订机票"的攻略;你让它去系统里查一下库存,它反手给你编了一个看起来很像真的数字。这种"嘴上功夫一流、动手能力为零"的状态,是很多人对AI失望的根源。
这个标题里提到的两个名字,其实代表了AI能力演进的两个典型阶段。前者是"会思考"的代表——你给它一个问题,它能推理、能分析、能给出结构化的回答,但它本质上还是一个"对话者",它的输出停留在文本层面。后者是"能干活"的代表——它不只是回答你,而是能真正去操作工具、调用接口、执行多步任务,把一件事从头到尾办完。这两者之间的差距,不是模型聪明程度的差距,而是能力形态的差距。
我写这篇东西,不是要做什么产品评测,而是想把这中间的逻辑讲清楚:为什么"会思考"和"能干活"是两回事?从前者到后者,技术上到底跨过了哪些坎?如果你是一个开发者、一个产品经理,或者只是一个想把AI真正用起来的普通用户,你应该关注哪些关键点?这些问题的答案,比单纯知道某个产品叫什么名字重要得多。
下面我会从能力边界、技术机制、落地场景、实操踩坑几个角度,把这条演进路线拆开来讲。文章会比较长,但每一段都是我实际折腾过之后觉得值得说的东西,不是那种看完就忘的泛泛之谈。
2. "会思考"的AI到底强在哪,又卡在哪
2.1 推理能力的本质:它是在"续写"而不是在"思考"
很多人对"会思考"这个说法有误解,觉得模型真的像人一样在脑子里推演。其实不是。大语言模型的核心机制是基于上下文的概率预测——它根据你给的前文,预测下一个最可能出现的词,然后把这个词接到后面,再预测下一个,如此循环。所谓"推理",是它在训练过程中见过大量带有推理链条的文本,于是学会了模仿这种推理的表达形式。
这个认知特别重要,因为它直接解释了为什么模型有时候看起来特别聪明,有时候又蠢得离谱。当你的问题和它训练数据里的某种模式高度吻合时,它就能给出非常漂亮的推理过程;但当问题稍微偏离它见过的分布,它就会一本正经地胡说八道。它不是"知道自己在说什么",而是在"续写一段看起来合理的文本"。
我做过一个很简单的测试:让模型算一个稍微复杂点的多步数学题,它给出的推理步骤读起来头头是道,但中间某一步的中间结果算错了,后面却继续基于错误结果往下推,最后给出一个错误答案,而且语气非常自信。这就是典型的"会思考"的局限——它的思考是文本层面的连贯,不是逻辑层面的正确。
2.2 上下文窗口:记忆的边界就是能力的边界
"会思考"的AI还有一个硬约束,就是上下文窗口。简单说,模型一次能"看到"的文字量是有限的。你给它的所有信息——你的问题、之前的对话、你粘贴的文档——加起来不能超过这个限制。超过的部分,它要么看不到,要么被截断。
这个限制在实际使用中带来的问题非常具体。比如你想让模型帮你分析一份很长的合同,合同有几十页,你一次性贴进去,它可能只能看到前面一部分,后面的内容它根本没读到,但它不会告诉你"我没看到后面",而是会基于看到的部分给你一个答案。这种"信息缺失但不自知"的情况,是最容易让人踩坑的地方。
我自己的经验是,处理长文档时,一定要先做分段摘要,把每一段的核心信息提炼出来,再把摘要喂给模型做整体分析。直接硬塞长文本,效果往往很差,而且你很难判断它到底读进去了多少。这个技巧看起来简单,但很多人不知道,结果就是反复抱怨"模型怎么这么笨"。
2.3 知识截止:它不知道昨天发生了什么
还有一个经常被忽略的点是知识截止日期。模型的知识来自训练数据,而训练数据是有时间边界的。在边界之后发生的事情,模型一概不知。你问它某个最近才出现的新概念,它要么说不知道,要么用旧知识去硬套,给出一个过时的答案。
这就引出了一个关键需求:模型需要能获取外部信息。而一旦模型需要获取外部信息,它就必须具备"调用工具"的能力——去搜索、去查询、去读取实时数据。这正是从"会思考"迈向"能干活"的第一步。因为"干活"的本质,就是模型不再只依赖自己脑子里的东西,而是能主动去外部世界拿信息、做操作。
3. "能干活"需要跨过的三道技术门槛
3.1 第一道坎:工具调用不是"说"出来的,是"调"出来的
让模型"能干活",最核心的机制叫工具调用(也叫函数调用)。原理说起来不复杂:你预先定义好一批工具,每个工具都有名字、描述和参数格式;模型在对话过程中,如果判断需要用到某个工具,它就不再输出普通文本,而是输出一段结构化的调用请求,比如"我要调用查询库存这个工具,参数是商品编号12345";外部系统收到这个请求后,真正去执行,把结果返回给模型,模型再基于结果继续处理。
这个机制的关键在于:模型本身不执行任何操作,它只负责"决定调用什么"和"解析返回结果"。真正的执行是由外部系统完成的。这个分工非常重要,因为它意味着安全边界是可控的——你可以决定哪些工具可以被调用,每个工具能做什么,不能做什么。
我见过一些团队一开始不理解这个分工,以为模型能直接操作数据库,结果设计出来的架构一团糟。正确的做法是:模型只做"决策层",工具做"执行层",两层之间通过结构化的接口通信。这样既安全,又可维护。
3.2 第二道坎:多步任务的规划与状态管理
单个工具调用相对简单,真正难的是多步任务。比如"帮我查一下上个月的销售数据,找出下降最多的三个品类,然后给每个品类生成一份分析报告"——这里面包含了查询、筛选、排序、生成等多个步骤,而且步骤之间有依赖关系。
模型要完成这种任务,需要具备几个能力:第一,把大任务拆解成小步骤;第二,记住每一步的执行结果,作为下一步的输入;第三,在某个步骤失败时,能判断是重试、换方案还是放弃。这就是所谓的任务规划与状态管理。
实际做下来,最容易出问题的是状态管理。模型在多轮交互中,很容易"忘记"之前步骤的关键信息,或者把不同步骤的结果搞混。我的经验是,不要指望模型自己记住所有东西,而是要在外部维护一个明确的状态记录,每一步都把关键信息显式地传给模型。这就像带一个记性不太好但很聪明的助手,你得把重要信息写在纸上递给他,而不是指望他全记在脑子里。
3.3 第三道坎:错误处理与自我纠偏
"会思考"的AI出错,最多是答案不对,你重新问一遍就行。"能干活"的AI出错,可能造成实际后果——比如调用了错误的接口、传了错误的参数、执行了不该执行的操作。所以错误处理机制是"能干活"的必备能力。
一个成熟的执行系统,至少要有这几层防护:参数校验(调用前检查参数是否合法)、权限控制(这个工具这个操作是否被允许)、结果验证(执行结果是否符合预期)、失败回滚(出错了能不能撤销)。这些机制大部分不是在模型层面做的,而是在工具层面和系统层面做的。
我踩过的一个坑是:早期做自动化任务时,没有做参数校验,模型把一个字符串类型的参数传成了数字,结果接口报错,但模型不理解错误信息,反复重试同一个错误调用,陷入了死循环。后来加了参数类型校验和重试次数限制,问题才解决。这个教训让我明白,"能干活"的系统,健壮性比聪明程度更重要。
4. 从对话到执行:一个任务是怎么被办完的
4.1 完整链路拆解:用户说一句话,背后发生了什么
我们拿一个具体场景来走一遍完整流程。假设用户说:"帮我看看这个项目最近的代码提交情况,如果有超过三天没提交的,提醒一下相关负责人。"
第一步,意图理解。模型解析这句话,识别出核心意图是"检查代码提交状态并发送提醒",涉及的关键实体是"这个项目"和"相关负责人"。
第二步,任务规划。模型把任务拆成几个子步骤:先获取项目信息,再查询最近的提交记录,然后计算每个贡献者的最后提交时间,筛选出超过三天的,最后发送提醒。
第三步,工具调用。模型依次调用:项目信息查询工具、提交记录查询工具、时间计算工具、消息发送工具。每一步的返回结果都作为下一步的输入。
第四步,结果整合。所有步骤完成后,模型把执行结果汇总成一段自然语言反馈给用户,比如"检查完成,共有两位贡献者超过三天未提交,已分别发送提醒"。
这个链路里,模型真正"做"的事情是理解、规划和决策,真正的"干活"是工具在干。但用户感知到的,是AI把整件事办完了。这就是"能干活"的体验本质。
4.2 工具设计的关键:描述比实现更重要
在实操中,我发现一个反直觉的点:工具的描述文本,比工具本身的实现更影响效果。因为模型是根据描述来判断"什么时候该用这个工具"的。如果描述写得含糊,模型就不知道该不该调用;如果描述写得准确,模型就能在正确的时机做出正确的选择。
举个例子,一个查询天气的工具,描述写"获取天气信息",模型可能在任何跟天气沾边的时候都去调用,哪怕用户只是随口提了一句"今天天气不错"。但如果描述写成"当用户明确询问某个城市的当前天气或未来天气预报时调用,参数必须包含城市名称",模型就能更精准地判断调用时机。
我的一般做法是,每个工具的描述都包含三部分:这个工具做什么、什么时候该用、参数有什么要求。这三部分写清楚,模型的调用准确率会明显提升。这个经验是我调了无数遍之后总结出来的,比任何文档都管用。
4.3 多工具协作时的冲突与优先级
当工具数量多起来之后,会出现一个新问题:多个工具都能完成类似的事情,模型该选哪个?比如同时有"搜索网页"和"查询内部知识库"两个工具,用户问一个既可能在网上有答案、也可能在内部文档里有记录的问题,模型该调哪个?
解决这个问题的办法,一是在描述里明确各自的使用场景和优先级,二是在系统层面设置路由规则。我的经验是,不要让模型在模糊地带自己做决定,而是尽量把场景区分清楚。如果实在区分不了,就设定一个默认优先级,比如优先查内部知识库,查不到再搜网页。
还有一个常见冲突是工具之间的依赖顺序。有些工具必须在另一些工具之后调用,比如必须先查询到用户ID,才能用这个ID去查订单。这种依赖关系,要么在任务规划阶段就确定好顺序,要么在工具描述里写明前置条件。我倾向于前者,因为规划阶段确定顺序更灵活,也更容易调试。
5. 落地场景:哪些事真的适合交给"能干活"的AI
5.1 信息聚合类任务:从多个来源收集并整理
这类任务的特点是:需要从多个地方拿信息,然后汇总成一份统一的输出。比如"帮我收集这个行业最近一周的重要新闻,按主题分类整理成一份简报"。模型需要调用搜索工具、网页读取工具、分类整理工具,最后输出一份结构化简报。
这类任务适合交给AI的原因是:它需要理解语义,而不是简单的数据搬运。传统的爬虫加规则引擎也能做信息聚合,但分类和摘要的质量远不如模型。而且模型能处理非结构化的内容,这是规则引擎做不到的。
实操中要注意的是信息源的可靠性。模型搜索到的信息不一定准确,需要设置可信来源白名单,或者在输出时标注信息来源,让用户自己判断。我一般会在工具层面做来源过滤,只允许从指定的几个渠道获取信息,这样能大幅降低错误信息的混入。
5.2 流程自动化类任务:把重复操作串起来
这类任务的特点是:步骤固定、重复性高、但涉及多个系统的操作。比如"每天上午检查服务器状态,如果有异常就记录到表格里并通知相关人员"。模型需要调用状态检查工具、表格写入工具、消息通知工具,按固定流程执行。
这类任务的价值在于把人从重复劳动中解放出来。但它的风险也最高,因为一旦出错,可能造成实际影响。所以这类场景一定要有人工确认环节——模型可以自动执行检查和记录,但在发送通知或执行关键操作前,最好让人类确认一下。
我的做法是,把任务分成"只读操作"和"写入操作"两类。只读操作(查询、检查、读取)可以全自动执行;写入操作(发送、修改、删除)需要人工确认。这样既提高了效率,又控制了风险。
5.3 决策辅助类任务:给出建议而不是替你做决定
这类任务的特点是:模型分析信息后给出建议,但最终决定权在人手里。比如"分析这份销售数据,给出下个季度的备货建议"。模型调用数据分析工具、趋势预测工具,输出一份建议报告,但不会自动去下单。
这类任务是最安全的,也是最容易被接受的。因为模型只提供信息和建议,不直接执行有后果的操作。对于刚开始尝试"能干活"的AI的团队,我一般建议从这类场景入手,先建立信任,再逐步放开权限。
5.4 不适合交给AI的场景:有些事还是自己来吧
说了适合的,也得说说不适合的。第一类是高风险决策,比如涉及大额资金、法律合规、人身安全的操作,这些必须由人来做最终决定。第二类是需要承担责任的场景,模型不能成为责任主体,出了事还是得人来扛。第三类是信息严重不足的场景,模型再聪明,没有足够的信息也做不出好决策,强行让它干只会出错。
我见过一些团队为了"AI化"而AI化,把一些本来就不该自动化的流程硬塞给模型,结果问题频出。判断一个任务适不适合交给AI,核心标准是:出错了能不能兜底。能兜底的,可以试;不能兜底的,老老实实人工做。
6. 实操踩坑:我在搭建执行型AI时遇到的真实问题
6.1 工具描述写得太"技术",模型反而不会用
刚开始做工具调用时,我按照写API文档的习惯,把工具描述写得非常技术化,参数名用英文缩写,描述里全是专业术语。结果模型调用准确率很低,经常该调的时候不调,不该调的时候乱调。
后来我把描述改成了大白话,用自然语言说清楚"这个工具是干什么的、什么时候用、参数是什么意思",准确率立刻上来了。这个经验让我意识到,模型不是程序员,它理解自然语言比理解技术文档更擅长。工具描述应该写给"一个聪明但不懂技术的助手"看,而不是写给"一个资深工程师"看。
6.2 多轮对话中的"上下文污染"
在多轮任务执行中,我遇到过一个很隐蔽的问题:前面步骤的错误信息,会"污染"后面步骤的判断。比如第一步查询失败了,返回了一个错误信息,模型在后续步骤中一直受这个错误信息影响,即使后面的工具调用本身是成功的,它也会倾向于认为整个任务失败了。
这个问题的根源是模型对上下文的敏感性。解决办法是在每一步之间做上下文清理,把已经完成的步骤的中间状态压缩成简洁的结论,而不是把原始返回全部保留。这样既能保留必要信息,又不会让错误信息持续干扰。
6.3 超时与重试:别让模型陷入死循环
前面提到过重试死循环的问题,这里再展开说一下。模型在工具调用失败时,默认行为是重试。但如果失败原因是参数错误或权限不足,重试多少次都没用,只会浪费时间。
我的解决方案是区分错误类型:可重试的错误(如网络超时)允许重试,但限制次数;不可重试的错误(如参数错误、权限不足)直接返回给模型,让它换方案或告知用户。同时在系统层面设置总超时时间,超过就强制终止,避免无限循环。
这个机制看起来简单,但实际做的时候要考虑很多细节:重试间隔怎么设、重试次数上限是多少、超时后怎么优雅地退出。我的经验是,重试次数不要超过三次,间隔用指数退避,超时时间根据任务复杂度设定,一般单步不超过30秒。
6.4 权限边界:能干什么和不能干什么必须写死
最后一个坑,也是最危险的坑:权限控制不能依赖模型的自觉。你不能在提示词里写一句"不要执行危险操作",就指望模型永远不执行。模型可能会因为理解偏差、上下文误导或者对抗性输入,做出超出预期的操作。
正确的做法是在系统层面硬性限制。每个工具都有明确的权限范围,超出范围的操作直接拒绝,不管模型怎么请求。比如一个"读取文件"的工具,就只能读取指定目录下的文件,不能读取其他位置。这个限制是在工具实现里写死的,模型无法绕过。
我的一般原则是:模型可以决定"做什么",但不能决定"能做什么"。"能做什么"是系统设计者决定的,是硬边界。这个边界越清晰,系统越安全。
7. 给不同角色的实操建议
7.1 如果你是开发者:先把工具层做扎实
开发者的核心任务不是调模型,而是把工具层做扎实。工具的描述要清晰、参数要校验、错误要处理、权限要控制。这些基础工作做好了,模型的能力才能发挥出来。我见过太多团队把精力全花在提示词调优上,结果工具层一塌糊涂,整体效果怎么都上不去。
具体来说,我建议开发者重点关注三件事:第一,每个工具都要有完整的参数校验和错误返回;第二,工具之间的依赖关系要明确,最好有编排层来管理;第三,要有完善的日志记录,每一步调用了什么、返回了什么、耗时多少,都要能追溯。这三件事做好了,后面调试会轻松很多。
7.2 如果你是产品经理:想清楚哪些环节可以放手
产品经理的核心任务是定义边界。哪些环节可以让AI自动执行,哪些环节必须人工确认,这个边界要在产品设计阶段就想清楚。不要等到出了问题再补,那时候成本就高了。
我的建议是,从"只读"场景开始,逐步过渡到"写入"场景。先让用户看到AI能准确地获取信息、分析信息,建立信任之后,再逐步放开执行权限。同时,每个自动执行的环节都要有"撤销"或"回滚"的机制,让用户有安全感。
7.3 如果你是普通用户:从简单任务开始试
普通用户不需要理解技术细节,但需要知道怎么用才安全。我的建议是,先从简单的、可验证的任务开始。比如让AI帮你整理一份文档、查一组数据,你检查一下结果对不对。确认它靠谱之后,再尝试更复杂的任务。
同时,对于任何涉及实际操作的请求,都要保持警惕。如果AI说要帮你发邮件、改文件、下单,先确认一下它到底要做什么,别稀里糊涂就同意了。AI是助手,不是替身,最终责任还是在你身上。
8. 一个值得关注的趋势:执行能力正在成为标配
我个人的判断是,"能干活"正在从差异化能力变成基础能力。就像当年智能手机从"能上网"变成标配一样,未来支持工具调用、能执行多步任务的AI,也会成为默认配置。到那个时候,区分AI好坏的标准,不再是"它能不能干活",而是"它干活靠不靠谱"。
这个趋势对开发者和产品经理意味着什么?意味着竞争焦点会从"有没有"转向"好不好"。谁能把工具层做得更稳、把权限控制做得更细、把错误处理做得更完善,谁就能在下一阶段胜出。技术门槛不会消失,只是从模型层转移到了工程层。
最后分享一个我自己的小习惯:每次搭建一个新的执行型AI系统,我都会先问自己一个问题——如果这个系统完全失控,最坏会发生什么?如果答案是"没什么大不了的",那就大胆试;如果答案是"后果很严重",那就先把防护措施做足再说。这个习惯帮我避免了好几次可能的翻车,也让我对"能干活"这件事始终保持着一份敬畏。