ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI智能体如何重塑专家系统与决策支持系统的落地方式

AI智能体如何重塑专家系统与决策支持系统的落地方式 先说结论AI智能体确实在改变ES和DSS的落地方式但“替代”这个词得拆开看。我做了快十年的专家系统和决策支持系统项目以前最头疼的就是知识获取和规则维护。现在大模型和智能体框架把这两件事的成本打下来了但你要是以为把规则库删了、让大模型拍板就能上线那踩坑的滋味会非常酸爽。这篇文章会围绕智能AI、专家系统ES、决策支持系统DSS这三个核心词展开聊聊我实际观察到的边界变化、判断标准以及一个可以照着做的AI智能体决策支持原型。内容偏实操适合正在做系统升级的技术负责人、想引入AI能力的产品经理还有对AI落地边界好奇的开发同学。1. 传统ES和DSS到底在解决什么问题1.1 专家系统把老师傅的经验变成机器能跑的规则以前做专家系统核心就三件套知识库、规则库、推理机。知识库存事实比如设备参数、材料属性规则库存“如果那么”的逻辑比如“如果变压器油温超过85摄氏度且负载率超过80%则发出告警并建议减载”。推理机负责把这些规则组合起来按照正向或反向链去推导结论。听起来很美好但你真去实现一个就知道最难的不是写推理机而是把老师傅脑子里的经验“掏”出来。我当年做一个电力设备故障诊断系统请了三位平均工龄二十年的老师傅光是梳理故障现象和原因的对应关系就花了两个月。而且老师傅的经验有很多“只可意会”的部分比如“听着声音不对”这种模糊信息在规则引擎里很难表达。更要命的是维护成本。业务一变规则要改推理链要调测试用例要重跑。规则多了以后还会互相冲突排查一个误报可能要翻半天规则表。所以传统ES适合那些知识高度稳定、场景高度封闭的领域比如简单的设备告警、资质审核一旦环境复杂一点规则库就会膨胀到没人敢动。1.2 决策支持系统帮人做决定而不是替人做决定决策支持系统和专家系统的定位完全不同。专家系统是想模拟人给出“专家级结论”DSS本质是给人提供数据、模型和分析工具让人自己拍板。比如财务决策支持系统它不会告诉你“应该融资”而是把现金流预测、利润率、资产负债率这些指标算好用图表摆在你面前决策仍然是人来做的。所以DSS的核心是三块数据管理、模型管理、交互界面。数据管理管的是内部业务数据和外部数据模型管理管的是财务模型、预测模型、优化模型交互界面则是给决策者用的报表、仪表盘、参数调节器。这种架构到今天不过时很多BI平台和数据分析平台骨子里还是DSS那套东西。但传统DSS也有明显的天花板模型是预设的分析维度是预设的当决策者问出一个“模型之外”的问题系统就哑火了。比如你做一个销售决策支持系统里面预设了销售额、毛利、退货率这些指标领导突然问一句 “为什么不考虑天气因素对区域销量的影响”这种开放性问题传统DSS只能靠人工写SQL去临时查效率很低。1.3 两者共同的痛点把ES和DSS放在一起看共同的痛点其实就三个第一构建成本高无论知识库、规则库还是模型库都需要大量人工梳理第二响应不了开放性问题系统只关注设计者预设好的路径第三维护困难环境一变规则和模型就要人工大改。这三个痛点恰好就是AI智能体目前最擅长改善的地方。我后面会详细展开但先记住一个判断AI智能体真正替代的不是“专家系统”和“决策支持系统”这两个名字而是它们背后那套昂贵的人工知识构建和人工模型适配流程。2. 智能AI带来的新变量为什么现在才谈替代2.1 大模型把“知识获取”这个瓶颈打穿了过去做专家系统最难的是知识工程——要把人类专家经验结构化变成规则和事实。大模型出现以后知识可以从文档、文本、历史案例里自动抽取甚至直接以向量形式存起来用语义检索就能召回。拿我之前说的电力设计规范查询举例。以前做一个电力设计规范专家系统需要把几百条规范逐条结构化做成规则表。现在只要把这些规范文档做切分、向量化灌进向量数据库再用大模型做上下文召回和生成就能实现“问一句自然语言定位到对应规范条款并给解释”。这背后实际是RAG检索增强生成跟前端感知到的“智能问答”差别很大。当然RAG也不是万能药文档切分不科学、向量模型选不好、召回结果不准确都会让答案质量下降。但比起传统知识工程成本已经降了一个数量级这就是为什么现在各地企业都敢提“AI智能体”改造。2.2 智能体把“能回答”升级为“能干活”如果你只是问大模型问题那它最多是个高级搜索引擎。AI智能体的关键在于“能干活”——接到一个目标自己拆解步骤、调用工具、观察结果、修正动作直到完成。拿现在很火的AI获客智能体举例。它不是一个聊天机器人而是接到“找出本月高潜客户”这个任务后会自动去查CRM里的客户数据、调用外部工商数据、给客户价值打分、生成跟进话术甚至自动发送营销邮件。这其实就是把DSS里“模型计算报告生成”的部分改成了智能体自动编排执行。这种变化对决策支持系统的意义在于以前是人向系统提问系统回报表现在是人下达目标系统自己找数据、自己跑分析、自己给方案。交互模式的改变直接影响了决策效率。2.3 但大模型并不是银弹如果只看能力上限大模型确实碾压老系统但从工程落地上看它有三个硬伤幻觉、不可控、算力成本。幻觉意味着模型会一本正经地胡说八道。在设备故障诊断这种场景模型给出一段听起来很专业的错误分析风险极大。不可控体现在输出格式不稳定、行为不收敛你可能连续问十次都得到不同方案。算力成本就不用多说了每次调用都在烧钱。所以我的态度很明确AI智能体要和传统规则、人工审批结合起来用而不是简单二选一。低风险、高重复的场景可以让智能体自主决策高风险、强责任的场景智能体只能做分析和建议的辅助最终决定权还得留给人。3. 场景拆解哪些能替代哪些只能辅助3.1 高确定性、高风险、强责任场景建议做辅助不建议做替代医疗诊断、法律合规、安全事故分析、电力调度这类场景共同特点是出错代价巨大而且需要明确的责任归属。就算大模型诊断准确率到了99%剩下1%的错误一旦发生在真人身上谁都担不起这个责任。在这种场景里AI智能体最合适的角色是“辅助人做决策”而不是“替人做决策”。辅助和替代的差别在于流程设计。辅助模式下智能体负责资料检索、初步分析、风险提示人负责最终判断替代模式下智能体直接输出并执行决策。我在电力行业见过很典型的例子AI辅助巡检报告生成可以显著减少人工工作量但所有报告都要经过持证工程师复核签字。这个“人复核”的环节短期内不会消失。3.2 高重复、低风险、追求效率场景智能体完全可以扛起来与之相对的客服问答、单据审核、故障分类、日志初步排查、文档检索这类场景天然适合AI智能体。这些任务有几个共同点重复性高、知识范围封闭、错误容忍度较高、不需要复杂责任归属。比如我想做一个电力设计规范智能体目的就是让设计师快速查规范、算参数。这类应用即使偶尔给错设计师自己也有判断力不会造成严重后果。又比如电商售前咨询智能体答错一个问题最坏的结果是客户不满意远不至于出安全事故。这些场景完全可以放开手脚用AI智能体替代传统ES和DSS。3.3 判断一个系统能不能被替代就看这六个维度我总结了一张判断表这些年做项目评估时一直在用判断维度适合AI智能体替代需要保留人工/规则知识稳定性知识变化快文档多人工维护困难知识高度稳定规则几十年不变风险容忍度出错影响小可挽回出错影响大不可挽回责任归属无强监管要求法规明确要求人必须复核实时性要求允许几秒到几十秒的响应毫秒级强实时需要传统程序控制数据质量文本、文档、半结构化数据多强结构化数据计算逻辑固定成本预算能用调用量换效率单次决策成本极敏感这个表格不是拍脑袋写的而是我对比过十几个项目后总结出来的规律。你可以拿自己的场景套一下基本能判断该往哪个方向走。3.4 务实方案LLM 规则 人工审批三段式现在最稳的架构我认为是“LLM 规则 人工审批”三段式。第一段LLM负责理解用户意图拆解任务调用工具第二段规则引擎负责强约束校验比如参数范围、业务逻辑硬性要求第三段关键环节由人工审批兜底。有人可能觉得这套架构不够“AI”但我的经验是工程上往往越土越稳。一个智能体系统能把70%的常规问题自动化掉剩下30%交给规则和人工这已经是很健康的落地状态了。那些一上来就想全自动、所有决策都不需要人管的项目最后基本都在负责任问题前折戟。4. 实操用AI智能体搭建一个决策支持原型4.1 整体架构一个典型的AI智能体工作流以下是我推荐的最小可用架构参考了很多开源智能体框架的思路接入层网页、IM、API接口负责接收用户请求。Agent层核心调度器负责意图理解、任务拆解、工具调用、上下文管理。工具层一组可调用的外部函数比如查询ES、查数据库、调用消息推送。知识层向量数据库 传统ES负责语义检索和关键词检索。执行层业务系统、规则引擎、人工审批接口。关键点在于Agent层和工具层是解耦的。Agent只负责“想”不负责“做”所有实际动作都通过工具完成。这种设计的好处是你可以在Agent运行过程中灵活添加、替换工具而不会影响调度逻辑。很多团队刚上手就把业务逻辑直接写死在Agent代码里等到要换流程时改动成本非常高。4.2 用Python写一个最小可用的Agent核心这里我用Python写一个极简示例演示Agent的核心调度逻辑不依赖任何重型框架import json from typing import Callable, Dict, Any # 工具注册表Agent能调用的所有能力都注册在这里 TOOLS: Dict[str, Callable] {} def register_tool(name: str): 工具装饰器把函数注册到工具表 def decorator(func: Callable): TOOLS[name] func return func return decorator register_tool(query_es) def query_es(index: str, query: Dict[str, Any] None): 查询ES返回文档列表 query query or {match_all: {}} # 这里写实际ES查询逻辑比如用elasticsearch-py # result es.search(indexindex, queryquery) return {total: 2, docs: [...示例数据...]} register_tool(call_llm) def call_llm(prompt: str, context: list None): 调用大模型获取生成结果 # 这里接GPT、Claude或本地模型API return 模型返回的文本 class MinimalAgent: 极简Agent循环调用模型直到任务完成 def __init__(self, system_prompt: str, max_steps: int 5): self.system_prompt system_prompt self.max_steps max_steps self.messages [{role: system, content: system_prompt}] def run(self, user_input: str) - str: self.messages.append({role: user, content: user_input}) for step in range(self.max_steps): response call_llm(messagesself.messages) # 解析模型输出判断是调用工具还是给出最终回答 action self.parse_action(response) if action[type] final: return action[content] elif action[type] tool_call: tool_name action[tool] tool_args action[args] if tool_name not in TOOLS: self.messages.append({role: function, content: 工具不存在}) continue # 执行工具把结果拼回对话 result TOOLS[tool_name](**tool_args) self.messages.append({role: function, content: json.dumps(result, ensure_asciiFalse)}) self.messages.append({role: assistant, content: f已调用{tool_name}继续分析}) return 超过最大步数任务未完成 def parse_action(self, response: str) - dict: # 简化的解析逻辑实际项目建议用结构化输出或JSON模式 if 调用工具: in response: return {type: tool_call, tool: query_es, args: {...}} return {type: final, content: response}这个示例看起来简单但它已经具备了一个Agent最核心的能力根据模型判断决定要不要调用工具、调用哪个工具、以及把工具结果反馈给模型做下一轮推理。你在这个基础上扩展工具函数、增加参数校验、加日志就能变成一个可用的生产级Agent。我从实践里总结出的一个经验千万不要让Agent直接执行没有校验的工具调用。比如上面query_es的输入实际项目里一定要做白名单校验索引名不能是用户任意指定的防止通过工具调用搞出安全问题。4.3 知识库搭建用ES搞定向量和关键词混合召回既然是决策支持知识检索能力就特别重要。我推荐用ES同时承担关键词检索和向量检索这样不用引入两套系统运维成本低。ES从8.0开始内置了向量检索能力你可以把一个索引当作混合检索库。创建索引时要注意字段映射。假设我们做一个电力设计规范知识库索引结构大致是{ mappings: { properties: { title: { type: text }, content: { type: text }, category: { type: keyword }, publish_year: { type: integer }, content_vector: { type: dense_vector, dims: 768, index: true, similarity: cosine } } } }content_vector这个字段用来存文本向量维度根据你用的embedding模型决定。如果你用开源的中文embedding模型比如BGE系列常用维度可以是768或1024。写入的时候就先把规范文档切段每段走embedding模型生成向量再连同原文一起写入ES。查询的时候最有效的不是纯向量检索而是关键词与向量混合检索。比如用户问“10kV电缆敷设最小弯曲半径是多少”你既可以做关键词匹配“10kV”“电缆”“弯曲半径”也可以做向量语义匹配。ES支持在同一个查询里组合boolean查询和knn查询{ knn: { field: content_vector, query_vector: [0.1, 0.2, ...], k: 10, num_candidates: 100 }, query: { bool: { should: [ { match: { title: 10kV 电缆 弯曲半径 } }, { match: { content: 10kV 电缆 弯曲半径 } } ] } } }混合检索的核心思路是“向量召回关键词过滤”这样既能拿到语义相似但字面不同的内容又能保证精准命中。4.4 向量检索速度优化别再傻乎乎全量扫描了热搜词里有“es向量检索时间太长”这个问题我确实碰到过很多次。向量检索慢通常有几个原因第一数据量太大没有做过滤。正确做法是先通过关键词或分类字段缩小候选集再在这个子集里跑向量计算。比如查电力设计规范就应该先用category字段过滤到“电缆敷设”相关文档再跑knn而不是在几百万文档的全量向量里搜索。第二向量维度太高。768维已经很大了如果embedding模型能输出384维且效果相差不大建议优先用低维度。维度越高内存占用和计算量都指数级增长。第三分片数不合理。分片太少会导致单分片数据量过大检索慢分片太多会增加查询合并的开销。我一般建议单分片控制在1-2GB数据量节点数不超过20。第四没有利用近似最近邻ANN参数。knn检索里的num_candidates值设太小会影响召回率设太大会慢。实践经验是先设到10倍于k再从召回率指标反调。优化完这些向量检索的P95延迟从几秒降到几百毫秒是很正常的事。4.5 Java端集成与数据同步Canal实现MySQL同步到ES不少团队是Java技术栈因为热词里有“canal实现mysql同步到es”和“es异步写入java”我专门说下数据同步。常见做法是用Canal监听MySQL binlog把增量变更同步到ES。整体链路是业务数据写入MySQL → Canal伪装成MySQL从库读取binlog → 解析成结构化变更事件 → 写入消息队列 → 消费者把变更写入ES。具体配置Canal的步骤我简要说一下在MySQL开启binlog设置binlog_formatrow。下载Canal服务端配置canal.properties和instance.properties指定要监听的数据库和表。写一个消费端用Java对接Canal的client接收变更数据并解析。把解析后的数据通过ES的bulk接口批量写入。这里最容易踩的坑有三个。第一个是主键冲突如果MySQL是联合主键ES里就得把联合主键拼成一个唯一字段。第二个是字段类型映射MySQL的datetime、decimal、tinyint都会被转换稍不留神就会在ES里变成错误类型查询结果对不上。第三个是删除同步很多团队只做了插入和更新忘了删除事件导致ES里的脏数据一直残留。我建议在同步链路上加一层监控统计Canal消费延迟和写入失败条数。延迟超过30秒就告警失败条数持续增长就要人工介入不然等到业务方发现问题时数据已经对不上了。5. 常见问题与排查技巧实录5.1 智能体开发中的上下文管理问题做AI智能体工作流时最常见的坑就是上下文爆炸和上下文污染。上下文爆炸很好理解一个多轮会话中每轮都携带全部历史很快就把Token窗口塞满了。解决思路是“记忆摘要”——把早期对话总结成摘要只保留最近几轮完整内容。上下文污染更隐蔽。工具调用返回的结果是很占空间的数据比如一次ES查询返回了100条文档如果全部塞进上下文模型会被无关信息干扰还会浪费大量Token。我在实际项目里的做法是工具返回结果先经过预处理只保留关键字段超长内容先做摘要再放回对话。这样Agent的判断质量会明显提升。5.2 多智能体协作时要定的开发规范如果你的系统有多个Agent协作比如一个负责查资料一个负责写报告一个负责质检那就要提前定好开发规范。我推荐至少包含这几条任务上下文隔离每个Agent只能看到自己需要的上下文不要共享全部消息。工具命名空间隔离A Agent能调用的工具列表和B Agent之间要做权限区分。明确交接协议Agent之间传递的数据要定义好格式不能是自由文本最好是JSON结构。全局日志追踪每个任务要有一个唯一的trace_id贯穿所有Agent调用方便排查问题。这些看起来是技术细节但如果没有提前定好等Agent数量一多系统会变得根本没法调试。这也是为什么现在很多团队在推“多智能体AI Agent Coding协助开发规范”本质就是为了让协作有序。5.3 如何治理大模型的幻觉问题对于知识问答型智能体幻觉治理是重中之重。我在电力设计规范智能体里用了三层防线第一层是召回校验。如果向量检索和关键词检索都没找到足够相似的内容就明确告诉用户“知识库中没有相关内容”禁止模型自由发挥。第二层是引用溯源。Agent生成的每个关键结论都要附带来源文档编号用户点击就能看到原文。这样做的前提是提示词里要明确要求“只基于检索到的内容回答并标注来源”。第三层是规则拦截。对强约束业务规则比如电压等级匹配、安全间距校验直接在规则引擎里做强制校验模型输出结果如果不符合规则直接拦截给出错误提示而不是让模型自己判断。三层防线都做上以后虽然不能保证100%无幻觉但至少95%以上的错误能在到达用户前被拦下来。5.4 智能体开发工具选型别盲目追新现在智能体框架多到数不清我见到的就有Dify、Coze、Claude Code、LangChain、AutoGen等等。我的建议是按团队规模和用途选别盲目追新。如果你主要是做企业内部知识库问答、工作流编排Dify这类可视化平台很合适。它有现成的知识库、Agent编排、报表功能团队不用从零搭建基础服务一个星期就能出一个能用的原型。我身边有不少团队就是拿Dify做电力、法律、人事规范类智能体成本很低。如果是做编码辅助类智能体Claude Code这类工具体验很好适合写代码、查问题、做重构。但注意它更适合开发者个人使用不适合直接嵌入到对外服务的系统里。如果是要自己做深度定制的Agent那就老老实实用LangChain或直接自己写调度逻辑。框架不是越重越好能解决当前问题的最小方案就是最好的方案。5.5 安全分级框架越早想清楚越好最后聊一下通用型AI智能体L1-L5分级安全框架。这个框架的思路是从低到高给智能体分级L1是纯辅助L2是建议为主L3是半自主决策L4是高度自主L5是全自主。我的建议是项目启动时就要明确你这个智能体要做到哪个级别并且在架构上做对应的安全设计。如果目标是L2那人工审批流程就是必备环节如果目标是L3就必须有强规则校验和完备的日志系统。等到上线再补安全措施改造成本会高很多。很多项目一开始定位是高自主决策结果做着做着发现风险兜不住又退回低级别早期设计的全自主架构就白做了。与其这样不如开始就往低级别设计先跑通再逐步升级。我自己在多个项目里的体会是AI智能体不会把专家系统和决策支持系统彻底“干掉”但它会逼着这些老系统升级换代。传统ES里那套昂贵的规则构建流程会被RAG和智能体工作流重新定义传统DSS里那套固定的模型分析框架会被能自我编排的智能体协作方式取代。而最后留下来的永远是规则、数据和人的判断力。做系统设计的时候别只盯着模型能力多想想你的系统在哪个环节需要规则兜底、哪个环节需要人来签字这才是真正能落地的AI改造路线。
返回列表