智能体工程这个词,这两年算是我朋友圈里出现频率最高的技术概念了。从一开始大家热衷于讨论"某个模型多聪明",慢慢变成了聊"怎么让模型真的能把活干了"。我自己从2023年开始在这个方向踩坑,到了2024年下半年才真正体会到,智能体工程不是简单地把几个函数包装给大模型调用,而是一整套关于任务规划、状态管理、工具调度、自我纠错、效果评估的方法论。它解决的本质问题是:怎么让大模型从一个"会聊天的工具"变成一个"能把事情办妥的数字员工"。这篇文章我不打算写那种滴水不漏的理论框架,就按我自己的实战经验,把这个领域的核心结构、落地路径、常见坑位讲透。无论你是刚接触大模型应用的开发者,还是已经带着团队在冲智能体项目的负责人,下面这些内容应该都能给你一些能直接用的参考。
1. 先把问题问清楚:智能体工程到底在解决什么
网上关于智能体工程的定义很多,有包装得特别高深的,也有刻意简单化的。我自己的理解比较朴素:它是在传统软件工程和大模型能力之间,搭起一层"会自主决策的执行系统"。
传统的大模型应用,本质是一条单行道。用户输入一句话,模型输出一段话,整个过程是即时性、无状态的。比如你让AI帮你写一封邮件,它给出一篇还可以的草稿,你关掉页面,这次交互就结束了。模型不需要记住你公司内部的项目代号,不需要去数据库里查历史立项记录,更不需要在写完草稿后检查一遍是不是漏掉了重点。
智能体工程则完全不同。同样是"帮我写一封邮件"这个需求,一个智能体可能要经历这些步骤:先判断这封邮件属于什么场景(对外商务、内部汇报、客户跟进),再决定是否需要去项目管理系统里查最近进展,可能需要调文档模板确认公司邮件格式规范,接着生成初稿,然后做一遍语气和事实错误检查,最后才产出最终版本。这整个链路有分支、有循环、有错误重试、有中间状态保存,不再是一问一答就能搞定的。
| 对比维度 | 传统LLM应用 | 智能体工程 |
|---|---|---|
| 交互模式 | 单次请求-响应 | 目标驱动、多步骤执行 |
| 状态管理 | 无状态或简单会话 | 需要短期和长期记忆 |
| 外部系统 | 基本不调用 | 深度依赖工具、API、数据库 |
| 出错处理 | 输出错误就结束了 | 需要自我检查、重试、降级 |
| 可解释性 | 黑盒输出 | 要求可追溯、可回放 |
| 评估方式 | 单次输出质量 | 任务完成率、成本、稳定性 |
从这个表格能看出,智能体工程并不是"多封装几个函数"这么简单。它需要开发者像设计分布式系统一样去思考超时、重试、幂等、并发冲突;又需要像做产品决策一样去定义什么任务该让模型自由发挥,什么任务必须走固定流程。这种混合属性,决定了它能把大量以前需要人工处理的流程自动化,但也意味着工程量远远大于一个Demo。
这个领域适合谁来学?我认为三类人受益最大。第一类是后端工程师,他们懂系统设计和可靠性,缺的是大模型能力边界的手感;第二类是算法工程师,他们理解模型行为,但需要补上工程化的短板;第三类是产品和技术负责人,他们需要判断哪些业务场景适合引入智能体、投入产出比怎么算。本质上,智能体工程已经不只是某一类工程师的技能,而是通往"AI原生应用"路上无法绕开的基础设施。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 拆开一个智能体:核心组件和各自扮演的角色
我在设计智能体架构时,习惯把它拆成五个核心部分:任务规划、上下文记忆、工具封装、反思修正、状态管理。这五个部分不一定每次全都要上,但任务复杂度一旦上来,缺任何一个都会在某个环节翻车。
2.1 任务规划:让模型先想清楚再做
规划层负责把一个大目标拆成若干子步骤,并决定每一步调用什么工具、按什么顺序执行。市面上常见的做法有两种:一种是完全由模型动态规划,每一步让模型在工具清单里选;另一种是把流程节点提前焊死,模型只负责执行当前节点的局部决策。
这两种方式的取舍,我踩过一次很深的坑。一开始做客服工单系统时,我做了一个完全自主规划的方案,让模型自己决定从哪个知识库查起、要不要调用户订单接口、最后怎么回复。本地跑通没问题,一上线就发现同样的工单类型走的路径五花八门,有些模型自作主张跳过了用户身份校验环节,导致回复里出现不该出现的敏感信息。后来我把工单分类、信息查询、回复生成、人工审核这四个节点全部固定成流程,模型只在每个节点内做局部判断,稳定性立刻提升了一个量级。
所以我的个人建议是:流程能固定的就固定,动态规划留给真正需要探索的任务。动态规划看起来很酷,但它把不确定性从模型层面扩散到了整个流程层面,没有足够强的监控和兜底机制时,建议不要拿生产环境冒险。
2.2 上下文记忆:短期工作台和长期档案库
记忆层是智能体最容易出问题的地方。一个没有记忆系统的智能体,就像一条七秒记忆的鱼:上一轮聊了什么,转头就忘。短期记忆用于保存当前任务中的对话历史和中间结果,长期记忆则用于跨会话保存用户偏好、历史结论、文档位置等信息。
短期记忆的实现不难,很多框架支持把历史消息拼进上下文,但难点在于控制体积。上下文越长,成本越高、响应越慢,而且模型反而会被无关信息干扰。我的做法是设置轮数阈值,超出部分自动做摘要压缩。比如单次任务最多保留12轮对话详情,更早的内容总结成一两百字的摘要再塞回上下文。实测下来,任务成功率没有明显下降,但token消耗能省将近一半。
长期记忆这块,主流最佳实践是向量化加检索。把每次对话的摘要、关键实体、结论性信息写入向量库,新任务进来时先做一次语义检索,只把相关的记忆片段放回上下文。这个方案看起来很成熟,但工程实现时要特别注意检索阈值。阈值设得高,相关记忆经常检索不出来;阈值设得低,一堆噪声记忆涌进来反而误导模型。我一般先用一批典型场景调一个初始值,再根据线上日志持续修正。
2.3 工具封装:把外部能力翻译成模型能听懂的语言
工具层是智能体的手脚。模型本身只能输出文本,要通过工具调用才能查数据库、发消息、操作文件。目前主流的交互方式叫函数调用,也就是把每个外部能力定义成一份带有清晰描述的JSON Schema,模型根据这些描述决定什么时候调用以及传什么参数。
很多人觉得工具定义就是把接口参数列出来就行,但实际上最影响调用准确度的,是description怎么写。我举一个真实例子。早期我在一个内部运营系统里定义了一个"查询用户信息"的工具,结果模型经常在需要查订单数据的时候错误地调用它,因为描述太模糊了。后来我把description改成"根据用户ID或手机号查询用户的注册信息、账户状态和会员等级,仅限用户主数据查询,不用于订单或交易数据查询",错误调用率立刻降了下去。
工具返回结果的结构化程度同样重要。返回的JSON里应该包含明确的状态字段、业务数据和错误信息。比如查询成功就返回"status": "success",失败就返回"status": "failed"和具体原因。模型只有拿到清晰的反馈,才能在后续步骤里做出正确判断。如果返回结果模棱两可,模型很可能把失败当作成功继续往下走。
2.4 反思修正:让智能体学会检查自己的作业
反思机制是我后来才补上的模块,但补完之后整个系统的可可靠性提升非常明显。简单说,就是在模型完成任务后,增加一个自我检查的环节。可以是让模型重新审视一次自己的代码逻辑,可以是对比预期结果和实际结果的差异,也可以引入独立的评分模型给结果打分。
在设计这个环节时,我发现最有效的反射方式是"针对特定风险的定向检查",而不是笼统地说"请检查你的回答"。比如在生成SQL查询工具调用的场景里,反思提示词可以写成"请检查你生成的SQL是否包含了有效的WHERE条件,是否可能扫描全表,返回字段是否完整"。这种定向检查能让模型把注意力放在最容易出错的地方。
反思机制也不需要每次任务都完整跑一遍。对于简单任务,模型生成质量本身就稳定,强制反思只会浪费成本;对于复杂任务、高风险操作、外部依赖较多的任务,则需要每次都做。我给反思机制设置了一个动态开关,根据任务风险等级决定是否开启。
2.5 状态管理:保证每一步都有迹可循
状态管理是智能体系统里最无聊但最关键的部分。它负责记录从任务开始到结束的完整执行轨迹:每一步决策是什么、调用了哪个工具、参数是什么、返回结果是什么、是否发生过重试和异常。没有这套记录,线上出问题时排查难度会呈指数级上升。
有一次线上任务出现了一个奇怪的错误,某一天的销售日报突然少了一个分区的数据。如果没有状态管理,我需要人肉翻日志、按时间线对齐各个服务的记录,可能要折腾几个小时。后来我们做了结构化的任务状态表,每个任务有唯一的任务ID,每一步执行记录都写入这个表。那次排查只花了几分钟,顺着任务ID一查,就发现是第二步的数据查询工具超时后重试成功,但状态没同步到位,导致后续聚合计算用了错误数据集。
状态管理也意味着可观测性。我建议至少记录这些字段:任务ID、当前状态、计划步骤、实际步骤、每步输入输出摘要、耗时、错误信息、最终结果。这些数据不仅能帮你排查问题,还能用于后续评估模型行为的变化趋势。
3. 评估体系:没有评估的智能体工程都是玄学
很多团队做智能体项目,最致命的问题不是技术实现,而是根本说不清楚"这个智能体做得怎么样"。传统软件有单元测试、集成测试、回归测试,标准很清晰。但智能体的输出是概率性的,同样的输入跑十次可能产生十种不同的轨迹,靠"看起来差不多"来验收,等于在碰运气。
3.1 建立任务级别的指标体系
评估智能体,不能只看大模型的回答质量,更核心的是看任务完成情况。我自己常用的几个指标:
| 指标名称 | 计算方式 | 说明 |
|---|---|---|
| 任务完成率 | 成功完成的任务数 / 总任务数 | 最核心的业务成功指标 |
| 工具调用成功率 | 成功调用的工具次数 / 工具调用总次数 | 反映工具层稳定性 |
| 平均执行步数 | 任务总步数 / 任务数 | 步数越多说明规划越绕 |
| 平均耗时 | 总耗时 / 任务数 | 延迟敏感场景必须盯 |
| 单任务成本 | token消耗 + 工具调用费用 | 决定商业可行性 |
| 回退率 | 触发兜底逻辑的任务数 / 总任务数 | 反映异常发生的频度 |
这些指标的价值在于,它们不关心模型单次的输出好坏,而是从系统工程角度衡量整体表现。比如平均执行步数这个指标,如果连续几天上升,往往意味着模型开始把简单任务拆得越来越复杂,直接推高成本和延迟。我曾经通过观察这个指标发现线上问题,最后定位到是某次Prompt调整让模型变得过度谨慎了。
3.2 准备回归测试集,比写代码更重要
智能体上线后,几乎每次修改都可能影响行为。改一个工具描述、换一个模型版本、调整一次记忆压缩策略,都有可能在特定场景下引发问题。为了不靠人工去翻几十个用例,你需要一个回归测试集。
这个测试集我建议从高频业务场景里抽。对我们来说,就是把过去三个月真实出现的需求类型整理成50到100个代表性子任务,每个子任务都标注好预期结果和关键检查点。每次改版后自动批量跑一遍,对比四个指标:任务完成率、平均步数、平均耗时、输出格式合规率。任何一项比基线差超过一定幅度,这个版本就不允许发布。
3.3 区分离线评估和线上监控
离线评估覆盖的是已知场景,但智能体系统最怕的是未知场景。线上跑着跑着,突然来了一种训练时没覆盖到的任务类型,系统怎么处理、怎么兜底,靠离线测试集测不出来。所以我强调要建立线上监控面板,实时观察任务量、成功率、失败原因分布、工具调用异常等指标。
我最关注的一个信号是"失败原因分布突变"。正常情况下,失败原因里占比最多的是工具超时这类的基础设施问题。如果某个晚上开始,排名第一的失败原因突然变成"模型输出解析失败",那大概率是上游模型版本行为有变化或者我们的工具Schema被连带改了。这类突变如果不能在几小时内发现并处理,就会像滚雪球一样影响越来越多用户。
评估体系的建设一定要从项目第一天就开始,不要等系统上线了再补。因为它和数据集一样,是越攒越厚、越跑越准的资产。等系统跑了一个月再回头去做评估,很多问题已经无法追溯到那个时间窗口了。
4. 实操过程:从零搭一个能跑通的多智能体任务流
理论讲再多,最后还是得落到代码和配置上。我拿一个实际做过的项目来拆解,需求背景是某运营团队需要每天从多个数据源抓取销售数据,汇总后生成日报,并在指标异常时自动提醒相关同事。整个流程涉及数据抓取、清洗、指标分析、文案生成、消息推送五个环节,我们把它拆成了两个角色:数据分析智能体和报告生成智能体。
4.1 技术选型与整体架构
模型层选用的是支持函数调用、上下文长度超过128K的主流大模型。框架层没有从底层手搓,而是基于几个成熟的开源Agent编排框架做二次开发,因为任务规划、工具调度、断点重试这些模块,社区已经踩过一遍坑,自己重造轮子成本和风险都太高。
整体架构分四层:
- 接口接入层:统一封装模型API和多数据源API
- 规划编排层:负责任务解析、角色分配、步骤调度
- 工具执行层:封装数据查询、指标计算、消息推送等原子能力
- 记忆与状态层:管理对话记录、长期知识库和任务轨迹
这个分层的好处是职责清晰。工具执行层不关心模型怎么决策,只管把每个原子操作做对做稳;规划编排层不关注数据抓取细节,只负责调度和兜底。改任何一个组件,不会牵扯到其他层。
4.2 工具定义的核心参数解析
数据查询工具的函数定义,我写成JSON Schema格式。这里最关键的不是把字段写全,而是把描述写准。下面是一个查询销售数据工具的简化示例:
json复制{
"name": "query_sales_data",
"description": "根据日期范围和门店维度查询销售汇总金额与订单数,仅用于销售业务统计,不适用于退款或售后数据查询",
"parameters": {
"type": "object",
"properties": {
"startDate": {
"type": "string",
"description": "开始日期,格式YYYY-MM-DD"
},
"endDate": {
"type": "string",
"description": "结束日期,格式YYYY-MM-DD,不早于开始日期"
},
"storeIds": {
"type": "array",
"items": {"type": "integer"},
"description": "门店ID列表,不传则默认查询全部门店"
}
},
"required": ["startDate", "endDate"]
}
}
注意description里那句"仅用于销售业务统计,不适用于退款或售后数据查询",这就是我在前文强调的"什么时候不要用"。模型靠这段描述来判断工具适用范围,写清楚边界能大幅减少错误调用。工具返回结果的格式同样要做结构化设计,我会在每个返回对象中固定带上一个"success"布尔字段和"errorMsg"字段,即使业务数据为空也要保证这两个字段存在。
4.3 多智能体协作的编排实现
两个智能体之间有明确的依赖关系:数据分析智能体先执行,把清洗和计算结果写入共享状态存储;报告生成智能体读取分析结果,再调用文案生成工具产出日报。这种先后关系依赖一个分发路由模块,路由本身也是一次模型调用,输入是用户任务描述和两个智能体的能力说明,输出是选择哪个智能体及传什么参数。
这里我想分享一个反复验证过的经验:Agent不要为了拆而拆。很多Demo喜欢把每个功能都独立成一个Agent,看起来灵活,实际上每多一个Agent就多一层推理开销和失败概率。我更倾向于保持Agent的粗粒度,优先保证职责边界清晰、协作关系明确。能一个Agent做的事绝不拆两个,除非成本、延迟或性能指标证明拆分值得。
编排层的鲁棒性设计上,我给每个Agent加了一组通用能力:超时控制、重试策略、全局终止机制。比如工具调用最长等待10秒,失败最多重试2次,重试之间加一秒延迟;整个任务设置最大步数上限,达到上限强制结束并返回阶段成果。这些设计看似保守,却是生产环境的基础保障。
4.4 关键参数调优实测记录
任务型智能体,温度参数我一般放在0到0.3之间。温度太高,模型会输出一些"看起来很漂亮但不可复现"的内容,任务系统不需要这种创造性。我在验证集上实际测了三组值:0.0、0.3、0.7,0.0生成结果最稳定但文案过于刻板,0.7又太跳脱,0.3是稳定性与表达自然度的平衡点。
上下文长度同样要做预算。我给短期记忆设了最大12轮对话,超过部分做摘要压缩;单次查询结果如果超过2000字符,先让模型提取关键指标再传给下一环节,而不是把原始数据直接堆进上下文。重试参数我也有明确设置:工具调用超时10秒,最多重试2次。为什么是2次不是3次?因为通过线上日志统计,绝大部分偶发超时在第二次重试后都能成功,第三次重试的成功率极低,却会把任务总耗时拉长一倍。
4.5 上线前的验证和灰度策略
智能体项目上线前的验证比传统项目更需要细化。我要求团队成员先做一轮全场景手动测试,把每个分支都走一遍,特别是异常分支,比如某个数据源断开、某个工具返回了空数据、模型连续两次调用同一个工具这类边界情况。
然后是自动回归。我把50个典型日报场景整理成一个JSON测试集,脚本批量跑完后输出指标对比报告。发布顺序上,我坚持先小范围灰度给内部用户用两三天,确认稳定后逐步放量到全量。这一步不省,因为智能体系统对真实数据分布极其敏感,测试集永远不可能覆盖所有线上情况。灰度期要盯的指标就是前面提到的六个核心指标,哪个出现明显下降,立刻回滚配置。
5. 一线上线后最常见的坑和排查实录
不管准备工作做得多充分,真实环境里总会冒出新问题。这一节我挑五个我在生产环境里遇到过的典型坑位,每个都附上可复现的排查思路和应对方案。
5.1 模型陷入死循环,反复调用同一个工具
现象很直接:日志里同一个工具被连续调用七八次,参数几乎一样,返回结果也一样,但模型就是不推进到下一步。
我的排查方法是先看工具返回结构。如果返回JSON里缺少模型做下一步决策的关键信息,它就可能像卡带的录音机一样不断重试。比如一个查询工具返回了销售额汇总,但没有返回"数据是否完整"的状态,模型就无法判断该继续查询还是开始生成结论,于是一直重复查询。
解决方案从两个方向同时做。第一,在工具返回里明确加上"data_status"字段,取值可以是"complete"、"partial"、"empty",让模型能直接根据状态推进;第二,设置硬性最大迭代次数,比如20轮,超过自动终止并返回当前进度报告。这个兜底看似粗暴,但能阻断最坏情况下的成本失控。
5.2 工具参数幻觉:模型编造了不存在的参数值
现象是模型调用工具时传了一个数据库里根本不存在的ID或名称。比如用户说"查一下华东区的数据",数据库字段设计的是区域编码"EAST",模型却可能传一个中文值"华东区"进去。
根因是模型基于用户描述做了过度推断,把自然语言直接映射成参数,而没意识到需要先查询合法取值。对策有三个层面:第一,参数Schema里能枚举的全部枚举,不给模型自由发挥的空间;第二,对不能枚举的参数,在规划器提示词里明确写"参数信息不完整时,先调用元数据查询工具获取合法取值,不要猜测";第三,工具层对参数做合法性校验,非法参数直接返回报错信息而不是放行查询。这三层堵下来,参数幻觉的成功率会降得很明显。
5.3 上下文爆炸:对话越来越长,越来越贵
运行一个月后,单次任务token消耗比刚上线时涨了40%,响应时间也增加了。一查日志,发现记忆模块没做压缩,模型把三个月前的原始对话记录全都塞进了上下文。
我的对策是三级压缩:第一级,超过12轮对话后自动把最早的几轮总结成摘要;第二级,摘要累积超过500字后,合并成更高层的抽象摘要;第三级,长期记忆存储只保留结构化摘要和关键结论,不保留逐字记录。这套策略实测下来能把上下文消耗稳定在峰值的60%左右,对任务效果的影响基本察觉不到。
5.4 多智能体互相等待,任务陷入死锁
现象是两个Agent互相依赖对方产生的结果,谁也不先往前走,整个任务卡死。这里要补充一个识别点:任务卡死时日志里可能没有任何报错,只是状态一直停留在"等待中"。
排查方向是编排层的依赖关系定义不完整,缺少超时和补偿逻辑。我在分发路由层加了一个全局超时,单个Agent执行超过30秒未返回结果,自动触发备用流程或者重新分配;每个Agent在执行前先检查依赖数据是否就绪,未就绪则跳过等待直接进入降级逻辑。这和传统分布式系统里的超时、重试、降级思路一脉相承,只是很多人做智能体项目时容易忽略这一层。
5.5 输出格式不稳定,解析层经常崩
同一个任务跑五次,三次输出合法JSON,两次输出Markdown代码块包裹的JSON,偶尔还在JSON前面多打了一段解释性文字。解析器按纯JSON解析直接报错。
对策三板斧:第一,在系统提示词里加上正例和反例,明确说明只允许输出纯JSON,不得包含Markdown包裹和额外说明;第二,解析环节做容错,先用正则剥离Markdown代码块标记再做JSON解析;第三,如果解析还是失败,自动触发一次"重新输出纯JSON格式"的重试。这套机制加上后,格式问题基本在95%以上的场景里被处理掉。
下面把这些常见问题整理成速查表,方便你直接对照排查:
| 问题现象 | 可能根因 | 优先排查项 | 快速缓解手段 |
|---|---|---|---|
| 反复调用同一工具 | 工具返回信息不足 | 检查返回结构是否含状态字段 | 增加失败状态标识 + 最大迭代次数 |
| 工具参数凭空编造 | 提示词未约束 + Schema枚举缺失 | 检查参数合法性校验日志 | 枚举参数 + 提示先查后猜 |
| token消耗持续上涨 | 记忆组件无压缩策略 | 确认上下文实际携带内容 | 三级摘要 + 长期记忆结构化 |
| 多个Agent互相等待 | 依赖图缺失超时和补偿 | 查看中间状态滞留点 | 全局超时 + 前置检查 |
| 输出格式不稳定 | 模型对格式遵守能力波动 | 解析器错误日志 | 正反例提示 + 容错解析 + 重试 |
6. 新领域、新挑战、新机遇:我坚持的几个小原则
写到这里,已经接近智能体工程的核心问题。最后一部分不打算堆砌宏大的行业预测,只聊聊我在这几轮实战中对"新领域、新挑战、新机遇"的真实感受。
智能体工程的新,体现在它同时横跨了产品设计、后端工程、模型算法、系统可靠性几个方向。你在设计任务规划时是在做产品设计,你在封装工具时是在做后端接口设计,你在做记忆压缩时是在做算法优化,你在搭监控看板时是在做SRE。这种跨学科的属性决定了它没有一个标准答案,每个团队都会长出自家的解法。
但对个人开发者来说,这里面有个真实的矛盾:什么都得懂一点,却又很难做到样样精通。我在项目初期被这个问题折磨过,既追最新模型能力边界,又要摸业务系统约束,还得写工程代码。后来想明白一件事:不需要在每个领域都做到顶尖,重要的是建立起一套能把大模型能力翻译成工程实现的思维框架。你不需要懂模型内部每个参数怎么训练出来的,但你要清楚它擅长什么、不擅长什么、什么时候会一本正经地胡说八道。
从机会角度看,智能体工程至少在这几个方向上有真实需求。一是企业内部流程自动化,大量数据整理、报告生成、客户沟通的重复性劳动正在被重构;二是专业垂直领域的高价值任务,比如金融研报整理、法律文书审查、医疗文本结构化,这些场景容错率低但对自动化的渴求最强;三是人机协同模式的改变,从"人在环上做监视"逐步变成"人在环中做关键决策",这对交互设计提出了全新要求。
机会背后也有需要冷静的地方。我见过不少团队把智能体项目当成包治百病的万能药,结果上线后问题成堆,回头发现连基础的测试集都没准备。智能体系统首先是软件系统,需要验收标准、测试体系、灰度策略、监控告警。它不是变魔术,不是"一键智能化",而是一个需要持续维护和迭代的复杂系统工程。
最后分享一条我在多个项目里花了最大学费换来的经验:永远给你的智能体输出加一层可追溯引用。无论是一个日报里的数据结论,还是客服回复里的一句话,都要带上它在哪个环节、从哪个工具、依据哪条原始记录得出的。有了这层引用,出错了能顺着线索一路追到根因,而不是对着一个黑盒干瞪眼。这层设计在前期会多花一点功夫,但它可能是在所有真实场景里保护你最厚的一道铠甲。
智能体工程的讨论热度很高,花哨的框架和概念层出不穷,但真正拼到最后,还是基本功——规划拆得够不够细、记忆管得够不够稳、工具描述得够不够准、评估体系建得够不够全。这些环节打磨扎实了,概率化的模型行为才会在业务里越来越接近确定性的结果。这个领域的新机遇,属于那些愿意在脏活累活里沉住气的人。
