资讯详情

Agentic AI在Dynamics 365中的落地实践:从规则自动化到智能决策

📅 2026/10/22 19:31:32 | 华诺云谱 👁 阅读
Agentic AI在Dynamics 365中的落地实践:从规则自动化到智能决策
项目启动的时候团队内部争论最多的问题不是技术选型而是“我们到底需不需要 Agentic AI”。当时很多人觉得D365 里已经有 Power Automate 了流程都能自动跑再引入智能体是不是有点重复建设。但真正把业务场景摊开看结论就变了——传统自动化擅长处理“规则明确”的流程而业务侧的实际情况是大量请求进到系统里后第一步的“理解、判断、分工”根本没人做也没法用固定规则写死。Agentic AI 在 D365 里的落地本质上是把“人读消息、人做判断、人去操作”这一段补上让系统从“按规则执行”进化到“按意图行动”。这篇内容我会完整拆解这个项目的落地过程为什么选择 Agentic AI 而不是纯提示词调用技术架构里每个组件负责什么从提示词到自动执行到底要过哪几道坎以及真实场景里踩过的坑和排查方法。适合正在评估 D365 智能化的顾问、负责业务流程优化的业务分析师以及准备在微软生态里做智能体落地的开发者参考。1. 项目背景与整体设计思路1.1 业务痛点为什么传统自动化不够用先说说项目启动时的业务背景。客户是某制造业企业用的是 D365 的客户服务模块和销售模块日常有大量来自邮件、表单、内部系统的请求需要录入到系统里并分派处理。举个例子售后邮箱每天能收到上百封客户邮件有的是报修、有的是查订单、有的是投诉、有的只是询问营业时间。以前的做法是靠一个运营专员人工阅读、分类、录入、分派一天下来光是机械操作就要占掉大半天。早先团队尝试过用 Power Automate 做自动化邮件触发器接到新邮件后用关键词规则判断主题和正文匹配到对应队列就创建工单。这套方案在规则有效的范围内确实能跑但问题也明显客户写邮件不会按你设定的关键词来一句话里有多个意图同一个词在不同语境下含义不同。规则的覆盖率撑死到 60% 左右剩下的邮件还是得靠人。更麻烦的是规则越多维护成本越高每次业务调整都要改一遍判断逻辑。当时我们评估过直接用大模型 API 做提示词调用让模型输出邮件的分类结果和结构化字段然后交给 Power Automate 去创建记录。这个方案能解决“理解”的问题但新的问题又来了模型只负责“输出建议”没有任何机制去验证建议是否合理、也没有能力去处理字段缺失或歧义。比如模型判断这是一封投诉邮件但客户没留订单号这时候谁来追问客户模型不会流程只能报错。1.2 Agentic AI 的定位把“理解、决策、执行、反馈”串成闭环所以这个项目的核心思路不是用 AI 替换掉某一段流程而是用 Agentic AI 把整条链路串起来。所谓 Agentic AI通俗讲就是一个具备“目标拆解、工具调用、自主决策”能力的智能体它不再只是“回答你的问题”而是能“根据你的目标自己规划步骤、调用系统功能、完成操作并且根据操作结果调整下一步动作”。放到 D365 场景里这个智能体需要做四件事第一理解用户输入的意图不管是邮件、表单还是聊天消息第二调用 D365 的 API 或 Power Automate 流去执行具体操作比如创建工单、更新客户信息、分配负责人第三根据执行结果判断是否需要补充信息或升级人工处理第四整个过程有日志、有监控关键节点必须经过确认。这四个能力对应到微软生态里分别由不同组件承担理解部分靠 Azure OpenAI 的模型能力工具调用部分靠 Copilot Studio 的智能体技能和 Power Automate 的连接器决策和状态管理靠智能体的编排逻辑监控和治理靠 D365 的审核日志和自定义反馈机制。整个链路里没有一个组件是多余的后面会逐个拆。1.3 方案选型为什么选 Copilot Studio 而不是纯代码开发项目组内部其实有过另一条路线完全自己写代码用 Azure OpenAI 的 Function Calling 能力配合 D365 的 Web API 做一套自定义智能体。这套方案的好处是灵活想怎么编排就怎么编排但坏处也很明显——开发成本高、维护成本更高而且很难和 D365 原有的安全模型、业务流程、审核机制天然集成。最后选 Copilot Studio 作为智能体编排层是基于三个判断。第一Copilot Studio 里创建的智能体可以直接发布到 D365 的嵌入体验中用户不需要离开业务系统就能发起请求这符合实际使用习惯。第二Copilot Studio 的“技能Skills”机制可以原生绑定 Power Automate 流意味着我们不用自己去对接 D365 API 的认证和权限微软的连接器已经把这块封装好了。第三智能体可以复用 D365 里的 Microsoft Dataverse 数据权限用户能操作什么数据、不能操作什么数据由 D365 原有的角色权限控制不需要额外做一套授权逻辑。这个选型决定直接影响了后面的整体架构。整个系统的设计思路是“智能体做大脑Power Automate 做手脚D365 做账本”每一层只负责自己该做的事减少耦合方便后面的扩展和维护。2. 核心架构与工具选型解析2.1 整体架构分层从用户输入到系统落库整个架构可以分成四层。最上层是入口层也就是用户发起请求的渠道包括 D365 的客户服务空间嵌入聊天、Teams 里的消息、以及邮件触发。入口层不直接对接模型而是把请求统一格式化成文本传到智能体。第二层是智能体层核心是 Copilot Studio 里创建的自主智能体Custom Agent负责语义理解、意图识别、任务规划。这一层相当于传统流程里的“大脑”它不直接操作数据而是决定要调用哪些技能、需要哪些参数、如果信息不够要怎么向用户追问。第三层是执行层由 Power Automate 流和自定义连接器组成。智能体把任务拆解成一个个具体的动作后通过技能调用触发对应的流。流负责对接 D365 的 API完成记录的创建、更新、分配等操作并把结果结构化返回给智能体。最底层是数据层也就是 D365 里的 Dataverse所有业务数据、附件、审核日志都存在这里。智能体本身不存业务数据它只通过技能去读写 Dataverse所以天然继承了 D365 的安全权限和数据治理能力。这样的分层设计有一个明显的好处每一层都可以独立升级。模型换了、入口渠道加了、业务流程改了都不会牵动整条链路重做。2.2 核心组件逐一拆解先说说 Copilot Studio 在这个项目里扮演的角色。Copilot Studio 里可以创建两种智能体一种是“辅助型助手”偏向对话问答另一种是“自主智能体”可以配置触发条件、技能和知识源在无人盯着的情况下主动完成任务。这个项目用的是后者。自主智能体的底子是一套指令Instructions里面定义了它的角色定位、工作流程、决策边界和输出规范相当于给智能体写的一份“岗位说明书”。然后是技能Skills。技能是智能体执行动作的通道既可以绑定 Power Automate 流也可以配置自定义连接器直接调 API。在这个项目里我们建了五个技能创建工单、更新工单状态、查询客户信息、查询订单信息、分派负责人。每个技能都定义好了输入参数和输出结构比如“创建工单”需要客户邮箱、主题、描述、优先级输出则是工单编号和状态。接下来是 Azure OpenAI 的部分。虽然 Copilot Studio 底层已经接了 GPT 模型但我们还是单独配置了 Azure OpenAI 的资源主要用来做两件事一是自定义系统提示词把 D365 的业务术语和操作规范写进去提高意图识别的准确率二是用结构化输出Structured Output把模型的判断结果固定成 JSON 格式方便后面的流去解析。最后是 Power Automate 执行层。这里不仅仅是简单的“触发器 动作”而是每个技能对应一个独立的云端流流内部做了参数校验、错误捕获和结果格式化。设计上有一条红线流程只做确定性操作比如查数据、建记录、发通知所有需要判断的地方全部上抛给智能体不在流里写复杂的条件分支。2.3 关键选型的对比与理由列表里对比三条技术路线最直观方案理解能力与D365集成开发成本决策灵活性适用场景纯提示词调用模型只做分析强弱需自行对接API低无只输出建议辅助人工决策不追求自动化传统Power Automate自动化弱依赖关键词/规则强原生连接器中无固定分支规则明确的重复性流程Agentic AI Copilot Studio强可理解复杂意图强原生集成中高强可自主规划动态性强的业务请求处理这个项目最终选的显然是第三条路线但不是全盘替换第二条。实际落地时能靠规则解决的简单场景比如特定表单提交自动建客户仍然走 Power Automate 原生流程只有需要“理解判断多步骤操作”的场景才交由智能体处理。这也是一条经验不要为了智能化而智能化Agentic AI 解决的是复杂动态问题规则能搞定的事情用规则性价比最高。3. 从提示词到自动执行的完整实现路径3.1 第一步把业务需求翻译成提示词架构很多人以为提示词就是写一段话告诉 AI 该干嘛实际上在 Agentic AI 项目里提示词是一个结构化的配置文件决定智能体的行为边界。这个项目里智能体指令分成四个模块角色定义、任务流程、决策规则、输出规范。角色定义部分写明“你是 D365 客户服务团队的智能助理负责处理客户邮件和聊天消息你在 Dynamics 365 环境中工作可以调用工单管理相关的工具”。任务流程部分写明收到请求后的步骤先理解意图再识别必要字段缺少必要字段则追问信息齐全后调用对应技能根据技能返回结果决定是否结束或升级。决策规则部分写明什么情况可以自动执行比如客户留了完整订单号、诉求清晰、什么情况必须转人工比如客户情绪激烈、涉及赔偿金额、收到的请求超出智能体的权限范围。输出规范部分则要求智能体在每次操作后简明总结做了什么、结果如何、是否需要人工介入。这份指令不是一次性写好的前后改了七八版。最大的一个教训是不要试图在提示词里穷举所有业务场景而是把决策原则写清楚让模型根据原则去推理。比如一开始我们写了“如果客户提到发票问题走 A 流程如果提到退换货走 B 流程”结果模型在意图交叉时经常判断错。后来改成“根据客户诉求判断属于售后、销售还是咨询类别对应调用技能”准确率反而上去了。3.2 第二步设计确定性的技能边界技能设计是整个项目里最需要花心思的部分。技能是智能体与系统之间的接口接口规不规范直接决定后面流程能不能稳定跑起来。我们给“创建工单”这个技能定义了一份输入参数规范核心字段包括CustomerEmail客户邮箱必填格式校验Subject工单主题必填50字以内Description详细描述非必填Priority优先级枚举Low/Normal/High/UrgentOrderNumber关联订单号非必填但提供后需校验存在性RequestType请求类型枚举Inquiry/Warranty/Complaint/Return/Other参数设计上有两个容易被忽视的细节。第一所有字段都必须定义枚举值或格式校验规则不要让模型自由发挥否则会出现优先级填了“非常紧急”、类型填了“退换货问题”这类无法映射的数据。第二必填字段越少越好。智能体的一个核心价值就是能在信息不全时主动追问所以技能接口只保留真正的必填项其他全部做成可选这样才能给模型留出判断空间。技能返回值的结构同样重要。我们统一采用了一个 Result 结构包含 StatusSuccess/Partial/Failed、Data操作结果对象或错误信息、Message给用户看的自然语言摘要。这个结构的好处是智能体不需要去解析复杂的业务对象只需根据 Status 判断下一步Success 就总结收尾Partial 就追问缺失部分Failed 就切换到错误处理逻辑。3.3 第三步搭建“规划-执行-验证”循环有了提示词和技能接下来要解决的是怎么让智能体真正“动起来”。Copilot Studio 的自主智能体默认支持多轮规划循环接收用户目标后智能体会把目标拆解成步骤清单逐步执行技能并根据每次技能返回的结果重新规划下一步。我们在这个基础上多做了一层“验证”环节。智能体在调用“创建工单”技能后不能直接告诉用户“已完成”必须调用“查询工单信息”技能去确认工单真的创建成功了。这个设计来源于一次真实事故——有段时间技能返回 Success但工单实际没落库原因是流里有一处字段映射错了导致 D365 API 调用失败但流本身没抛异常。从那以后我们就立了一条规矩所有写操作完成后必须做一次读操作验证这也成了后面项目的一大亮点实际运行中多次拦截了偶发性的集成故障。为了让这个循环稳定运行我们还在提示词里明确了“每个技能调用前必须先列出参数参数确认后再调用”的约束避免模型跳过必要步骤直接执行。这一步对调试帮助很大因为每一步都有迹可循。3.4 第四步最关键的安全闸门自动化程度越高风险控制就越重要。这个项目里设了三道安全闸门。第一道是权限边界。智能体本身不做任何数据权限校验它调用的 Power Automate 连接器使用的是服务账号权限但 Dataverse 层面的行级安全和列级安全依然生效而且在流里显式限制了只能访问特定队列和特定字段。第二道是“人工回环”。我们把操作分成了三类自动执行类查客户、查订单、创建草稿工单、需确认类正式创建工单、分派负责人、强制人工类修改客户等级、处理退款、删除记录。需确认类操作执行前智能体必须向用户输出操作摘要拿到确认后才继续。这条规则很朴素但实际效果极好业务部门的信任感就是这么建立起来的。第三道是审计追踪。每一条智能体的操作记录都会写入 Dataverse 的自定义表包含触发消息、识别意图、调用的技能、传入的参数、返回结果、耗时、采用的模型版本。出了问题可以精确回溯到是哪一次调用、哪一个环节出的错不用靠猜。4. 实际场景落地举例全流程盘点4.1 场景一售后工单自动创建与分派这个场景是项目里最早落地的也是最有代表性的一条链路。客户发邮件到售后邮箱邮件触发 Power Automate 把邮件内容导入 Dataverse 的自定义队列表然后触发智能体进入处理循环。智能体收到邮件文本后第一步是意图识别判断这是售后请求还是其他类型。如果是售后请求就继续提取客户邮箱、订单号、问题描述。订单号往往是客户在邮件里提到的模型需要从正文中抽取并调用“查询订单”技能校验订单是否存在。如果订单号和客户邮箱对不上智能体会先查客户信息再决定是否为该客户创建新工单还是补充到已有工单。接下来进入确认环节。智能体把识别到的信息整理成摘要卡片发给运营人员确认。运营人员在 D365 的嵌入面板里点一下确认智能体再调用“创建工单”技能正式落库并自动按产品线和客户等级分派到对应队列同时给客户发一封自动回复邮件。整个过程中运营人员只做一次点击确认剩下的理解、抽取、校验、落库、分派全部自动完成。上线后这个场景把每封邮件的平均处理时间从 12 分钟降到了不到 2 分钟而且因为多了模型理解这一步之前完全处理不了的复杂邮件比如客户把保修和退货写在同一封邮件里也能被拆分成两个独立任务处理。4.2 场景二潜在客户信息智能补全这个场景属于销售模块。D365 的潜在客户表单里经常出现只填了公司名、负责人名但邮箱、电话、行业规模这些关键字段全部留空的情况。传统做法是靠销售代表手动去查或者靠规则从邮件签名里抓效率低而且经常抓错。智能体落地后每次潜在客户记录创建时如果发现关键字段缺失就触发智能体去补全。智能体先去查邮件历史记录从 Exchange 集成拿如果历史邮件里能提取到签名信息就用签名填充提取不到的话就去查该公司的已有业务往来记录还不行的话就生成一个带固定问题的补全请求发送给信息提供人等对方回复后再回填。值得注意的是这个场景涉及数据更新所以我们把它设成了“需确认类”。虽然补全的信息来自系统内部记录正确率很高但一旦更新错字段会影响后续评分所以每次回填前都会给对应的销售代表发一条预览消息。实际跑下来字段完整率从 43% 提到了 86%而且因为记录质量上去了后续的线索评分准确度也跟着提升。4.3 场景三跨系统状态联动这个场景稍微复杂一点涉及 D365 之外的一个旧系统。客户的旧 CRM 里有一些历史工单状态之前需要每天手动同步一次到 D365不仅延迟高还容易漏。项目后期我们做了一个自定义连接器封装了旧 CRM 的读取和更新接口然后用智能体来驱动同步逻辑。智能体每天定时触发先读取旧 CRM 中状态有变更的工单列表逐条调用“查询工单”技能确认 D365 这边对应工单是否存在。存在的话就直接更新状态不存在就把工单的完整信息返回给智能体由智能体判断是否需要创建新工单。跑了两周后发现这个智能体还能主动发现数据不一致的情况比如旧系统显示工单已关闭但 D365 这边还有未完成的子任务它会把这些工单标记为“待人工检查”并通知对应负责人。这个案例带来的一个启发是Agentic AI 的价值在跨系统场景里体现得更明显。因为智能体天然具备“发现矛盾 - 做出判断 - 采取行动 - 报告结果”的能力这在传统 ETL 工具里很难实现。4.4 场景落地中的数据指标对比上线三个多月后我们拉了一组对比数据。这里选取的是最核心的四个指标都是一手实测数据指标传统人工处理纯规则自动化Agentic AI方案工单平均创建耗时12分钟8分钟2分钟意图识别准确率-62%91%工单字段完整率73%68%95%需人工介入比例100%38%21%需要说明的是21% 的人工介入比例不是模型能力不够而是项目设计上刻意留出的安全阀。所有涉及金额、投诉升级、客户资料修改的请求都会强制转人工。如果只看纯售后类工单自动完成的比例能到 90% 以上。数据最能说明问题的一点是智能体不是取代了运营人员而是把运营人员从机械录入中解放出来让他们只处理真正需要人的判断的 21% 的请求。5. 常见问题与排查技巧实录5.1 问题一提示词里的业务规则不生效项目初期遇到过很诡异的现象指令里明明写了“当客户情绪激烈时直接转人工”但实际测试时故意输入一段情绪激烈的邮件智能体还是照常创建了工单。排查后发现问题出在条件判断的表述上——原话是“客户情绪激烈”模型对这个抽象描述的理解范围和业务人员的想法不一致。解决办法是把模糊描述改为可被模型识别的具体信号比如“客户多次使用感叹号”“出现‘投诉’‘愤怒’‘最差’等情绪化词汇”“邮件正文超过一百字但未留订单号”这样模型在推理时就有明确的参照锚点。这类语义模糊问题在项目里反复出现现在我们的原则是提示词里的规则必须是“可验证的状态描述”或“明确的行为指令”不带主观评价。5.2 问题二技能返回值字段对不上智能体调用的技能返回结构是动态的按理说不会对不上但有一次“创建工单”技能明明返回了工单号智能体却报告说“无法获取工单号需要人工处理”。后来查了日志才知道技能的返回值里有工单号但返回结构里字段名写的是 TicketId而提示词里让智能体读取的是 WorkOrderId一个字段的命名差异导致智能体误判。这类问题的排查思路是只要智能体反馈异常第一件事去查 Dataverse 里的技能调用日志看实际返回的 JSON 结构再和提示词里的字段引用做对比。为减少这类问题我们在迭代中做了一个规范所有技能返回的字段名一律和 D365 实体字段的 SchemaName 保持一致不允许出现“业务别名”。这个规范看起来严格但能省掉大量排查时间。5.3 问题三Power Automate 流偶发超时导致任务中断另一个高频问题是执行层不稳定。智能体调用“创建工单”技能绑定的是 Power Automate 流有一次因为流里调用的一个自定义连接器响应慢导致整个流超时技能返回 Failed智能体的规划循环直接放弃了这个任务。排查流程分三步。第一步在流里加了“超时重试”机制失败时自动重试一次重试还是失败就返回明确的错误码。第二步把所有流的响应超时设置从默认值调大并给 HTTP 请求动作单独配置分步超时。第三步在智能体指令里补充了一条规则——“如果技能返回 SystemTimeout 错误不要放弃改用‘查询任务状态’技能确认操作是否已部分完成再决定是否重试”。这个组合拳解决掉了九成以上的超时问题。5.4 问题四模型对话历史太长导致决策漂移智能体处理复杂任务时对话一旦超过一定轮次模型很容易“忘掉”初始目标出现答非所问或重复执行技能的情况。我们曾经遇到过智能体在确认阶段反复调用查询接口把同一个订单查了四次的案例。定位后发现是上下文管理的问题。Copilot Studio 的自主智能体会自动维护对话历史但过多无关的中间步骤会稀释模型对核心目标的注意力。我们的解决办法是把智能体指令里加上“核心目标锁定”机制要求智能体每次开始新步骤前先用自己的话简述一下“我正在处理的原始请求是什么”然后再执行操作。这样每轮对话都会重提目标模型不容易跑偏。同时我们优化了技能返回内容把长文本尽可能截成摘要减少不必要的上下文占位。5.5 避坑清单汇总以下是整个项目里最有价值的几条经验直接汇总成清单创建技能时所有参数必须有明确的枚举值或正则校验别让模型自由发挥提示词里的规则必须写行为、写具体信号不要写抽象描述所有写操作执行完成后必须调读接口做验证智能体的操作日志是排障的第一现场必须从一开始就设计好不要事后补技能返回的字段名直接对齐 Dataverse 物理字段名不要引入内部叫法需确认类操作不要省确认环节哪怕确认率 100% 也要保留这是信任的底线在智能体指令里强制加入“目标回述”避免长对话导致行为漂移这类问题排查下来大部分其实不是模型能力不够而是在“智能体与应用系统之间”的连接处出的问题。字段命名、超时策略、上下文管理、日志追踪这些都是工程问题跟大模型本身关系不大。这也是 Agentic AI 项目与传统 AI 项目最不一样的地方——它的成败往往取决于工程细节而不是模型参数。6. 后续迭代方向与实际使用体会最后再分享一点我自己的体会。Agentic AI 在 D365 里的落地真正难的不是技术而是“信任”。这里的信任有两层一层是业务部门对系统自动执行的信赖另一层是系统自己在面对不确定性时能不能做出可靠判断。第一层靠确认机制来建立第二层靠大量的日志和验证来兜底。这两个东西做好就算模型本身表现平平整体体验也能远超预期。项目上线到现在智能体每个月要处理五千多条请求自动完成的占比稳定在八成左右。但我们也清楚这个数字不是越高越好安全边界内的自动化才有价值。后续的计划是把智能体扩展到库存查询和报价生成场景同时给智能体增加自我评估机制让它能根据每次操作的用户反馈来微调自己的执行策略。就目前跑下来的表现看这套架构的扩展性比预期好每个新场景的接入成本在逐步降低这条路是走得通的。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑