大模型企业级落地:AI Agent 赋能业务系统打造工作小助手

在当前 AI 技术飞速发展的浪潮中,大模型(LLM)已从通用问答场景逐步向企业级业务场景渗透。然而,企业办公场景与通用场景存在显著差异 —— 业务中充斥着 “黑话”“特有流程” 和 “私密数据”,这使得传统问答型 AI 助手难以真正融入业务系统。特别是在业务数据处理、多系统协同操作等核心环节,通用 AI 往往 “水土不服”。

本文将以销售运营系统排产场景为例,详细拆解如何通过工程化手段构建 AI Agent,解决企业级场景下的 “理解难”“执行长”“交互差” 问题,最终打造业务人员可自主使用的 “工作小助手”,实现业务增效与自主可控的双重目标。

一、企业级 AI Agent 的核心痛点:为何通用方案不适用?

在企业办公场景中,AI Agent 面临三大核心挑战,这也是通用 Coding 类 Agent(代码语言通用、逻辑标准化)无需解决的问题:

  1. 业务语言理解难:如销售排产中的 “拼柜数据”“未排产订单”“整柜排产” 等术语,LLM 无预设认知,易出现理解偏差;

  2. 业务流程执行长:单个任务常跨多系统(如从销售系统拉取订单→拼柜系统核对数据→排产系统写入计划),单次对话易因上下文过载出错;

  3. 业务自主可控性低:企业数据敏感(如订单金额、交付日期),需确保 AI 执行可中断、可验证、可追溯,避免 “黑箱操作”。

为验证 AI 与企业业务系统的融合方案,我们选择销售运营排产场景作为切入点:销售运营人员需定期拉取 “未排产订单”,结合 “剩余未排产数量”“订单交付日期”“拼柜系统整柜数据”,最终指定排产日期。下文将通过三个版本的 AI 助手设计,逐步解决上述痛点。

二、AI 助手的三版工程化演进:从 “能用” 到 “好用”

2.1 第一版:纯提示词 + 工具调用(验证可行性)

设计思路

第一版的核心目标是 “验证 LLM 能否理解业务逻辑并调用工具”,采用 “全量提示词 + 知识库 + 工具调用” 的极简架构:通过一次性输入详细规则(含角色、流程、输出规范),让 AI 自主完成 “问题分析→任务拆解→执行→输出” 全流程,且所有写入操作需用户确认后执行(保障可控性)。

核心提示词框架
你是一位「智能业务分析-排产助手」,具备以下能力:
1. 问题分析:识别用户意图,判断是否信息完整,主动追问澄清。
2. 任务拆解:将复杂需求拆成可执行子任务,标注依赖与输入输出。
3. 任务执行:可调用工具获取外部数据/解释专业术语;任何「写系统」操作只输出 ```action 代码块,不真执行。
4. 上下文记忆:结合历史对话判断方向是否偏离,主动纠偏;支持多轮追问与增量更新。
5. 输出规范:
   ① 拟写入数据 → 先输出 Markdown 预览表(关键字段即可);
   ② 用户确认后 → 再输出 ```action 代码块(语言标记=action,含接口调用参数);
   ③ 预览表下方提示"请确认;回复『确认』即输出可执行报文,回复『修改』请指出调整点"。

--- 输出流程(必须严格遵守) ---
Step 1 问题分析→用户意图/完整性/需调用工具;
Step 2 任务拆解→子任务清单(含依赖);
Step 3 任务执行→先预览表,再等用户确认后输出action;
Step 4 验证与纠偏→判断是否符合原意,提示下一步。
方案痛点
  • 灵活性差:提示词需预设所有业务细节(如 “拼柜数据字段”“排产规则”),换一个业务场景需重新编写提示词;

  • 容错率低:单次对话需完成 “拉数据→算排产→写系统” 全流程,数据量大或流程复杂时易遗漏步骤(如忘记核对拼柜数据);

  • 交互僵硬:执行过程不可中断,用户需等待全流程结束才能看到结果,中间出错需重新开始。

2.2 第二版:提示词链 + 状态管理(解决 “执行长” 问题)

设计思路

针对第一版 “不可中断、容错率低” 的问题,第二版引入 “提示词链” 和 “状态管理” 两大工程化手段:

  • 提示词链:将全流程拆分为 “单步提示词”,AI 每完成一个子任务,自动生成 “下一个子任务的提示词”,实现循环迭代;

  • 状态管理:新增executionHistory(执行历史)、globalVars(全局变量)、pendingSubTasks(待执行任务)等字段,记录任务进度、错误原因和中间数据,避免重复踩坑。

核心架构优化
  1. 运行方式:从 “一次性执行” 改为 “单步执行→返回 JSON→外部再次调用”,禁止一次性跑完所有子任务;

  2. 状态控制:通过status字段(running/paused/finished/error)控制流程,如信息不足时status=paused,等待用户补充;

  3. 错误避免:每次生成nextPrompt时,自动摘要最近 3 步执行历史(含错误原因),提醒 AI 避免重复错误。

关键 JSON 输出模板
{
  "status": "running",
  "currentSubTaskId": "st-20251020-001",
  "currentSubTaskDesc": "拉取销售系统未排产订单",
  "result": "Markdown表格(订单ID/未排产数量/交付日期)",
  "nextPrompt": "【历史执行摘要】- st-20251020-001:成功拉取10条未排产订单...请调用拼柜系统,核对每条订单的整柜数据",
  "contextSnapshot": {
    "originalDemand": "用户原始排产需求",
    "completedSubTasks": ["st-20251020-001"],
    "pendingSubTasks": ["st-20251020-002(核对拼柜数据)"],
    "globalVars": {"未排产订单列表": [...], "当前日期": "2025-10-20"},
    "executionHistory": [
      {
        "step": 1,
        "subTaskId": "st-20251020-001",
        "status": "success",
        "resultDigest": "拉取10条未排产订单,交付日期集中在11月",
        "userFeedback": "无",
        "reviseStrategy": "无"
      }
    ]
  }
}
方案优势与残留痛点
  • 优势:支持任务中断(status=paused)、错误追溯(executionHistory)、多系统扩展(新增工具只需补充子任务),业务人员可通过自然语言控制多系统协同;

  • 痛点:用户需等待 “单个子任务执行完成” 才能看到结果,若子任务涉及复杂计算(如 1000 条订单的拼柜核对),等待时间仍较长,交互体验不佳。

2.3 第三版:MD SSE + 提示词链(优化 “交互差” 问题)

设计思路

第三版的核心目标是 “提升用户实时交互体验”,引入MD SSE(Server-Sent Events)实时输出action 暂停机制

  • 实时输出:AI 执行过程中,通过 SSE 实时返回 Markdown 格式的中间结果(如 “正在拉取订单数据→已拉取 50%→已完成”),用户无需等待;

  • action 暂停:仅当涉及 “写系统 / 调接口” 等关键操作时,AI 暂停并提示用户确认,其他内部计算(如数据核对、规则判断)由 AI 自动完成,兼顾效率与可控性。

核心优化点
  1. 输出顺序优化:先返回 “对人友好的正文”(中间结果、预览表),再返回 “机器可读的 agent-json”(状态、nextPrompt),用户先看结果,系统再续跑;

  2. 工具调用策略:区分 “内部计算” 和 “外部 action”—— 内部计算(如数据过滤)AI 自动完成,外部 action(如写排产系统)必须暂停等待用户确认;

  3. 修正指令协议:支持continue(继续)、revise-<子任务ID>(回退修正)、restart(重启)等指令,用户可随时干预流程。

关键交互流程示例
  1. 用户输入需求:“帮我处理 10 月未排产订单,按整柜排产”;

  2. AI 实时输出

  • 正文:“正在拉取销售系统 10 月未排产订单… 已拉取 10 条,订单 ID:ORD001~ORD010。下一步将核对拼柜数据(自动执行)…”;

  • agent-json:status=runningnextPrompt=“已拉取订单,自动调用拼柜系统核对整柜数据”

  1. AI 自动核对拼柜数据后
  • 正文:“拼柜数据核对完成,共 3 条订单需按整柜调整。拟排产计划如下(Markdown 预览表):
订单 ID排产日期数量
ORD00110 月 25 日400PCS
ORD00210 月 26 日350PCS
{
  "url": "/api/production/schedule",
  "method": "POST",
  "body": {"orders": [...]}
}

⏸️ 请执行上方 action 并回传结果”;

  • agent-json:status=pausedactionWaiting=true
  1. 用户确认执行:回复 “确认”;

  2. AI 完成写入:正文 “排产计划已写入系统,执行结果:成功。是否需要生成排产报告?”,agent-json:status=finished

方案价值
  • 业务增效:业务人员无需懂技术,通过自然语言即可完成 “多系统协同 + 复杂排产”,原本 2 小时的工作缩短至 10 分钟;

  • 自主可控:关键操作可暂停确认,执行过程可追溯(executionHistory),错误可回退修正,符合企业数据安全要求;

  • 技术复用:IT 人员只需提供 “原子化工具”(如拉订单接口、拼柜查询接口),AI Agent 可基于工具灵活组合业务流,适配不同场景(如后续扩展 “采购订单处理”“库存预警”)。

三、企业级落地的核心工程化经验

  1. 分层设计原则:将 AI Agent 拆分为 “业务层(提示词链 / 状态管理)”“工具层(原子化接口)”“交互层(SSE 实时输出)”,IT 人员负责工具层,业务人员负责业务层,解耦分工;

  2. 可控性优先:所有涉及 “数据写入”“接口调用” 的操作,必须经过 “预览→确认→执行” 三步,且执行历史不可篡改,满足企业审计需求;

  3. 渐进式落地:从单一场景(如排产)入手,验证三版方案后,再扩展到多场景(如财务对账、客户跟进),避免一次性投入过大导致失败。

四、总结与展望

本文通过销售运营排产场景,验证了 AI Agent 在企业级落地的可行性:通过 “提示词链 + 状态管理 + SSE 实时交互” 的工程化手段,解决了 LLM 在企业场景中的 “理解难”“执行长”“交互差” 问题,最终实现 “业务人员用自然语言操作多系统,IT 人员提供原子化工具” 的高效模式。

未来,可进一步探索 “多 Agent 协同”(排产 Agent 与库存 Agent 联动)等方向,让 AI 真正成为企业业务的 “核心助手”,而非简单的问答工具。

附录

V1提示词

你是一位「智能业务分析-排产助手」,具备以下能力:
1. 问题分析:识别用户意图,判断是否信息完整,主动追问澄清。
2. 任务拆解:将复杂需求拆成可执行子任务,标注依赖与输入输出。
3. 任务执行:可调用工具获取外部数据/解释专业术语;任何「写系统」操作只输出 ```action 代码块,不真执行。
4. 上下文记忆:结合历史对话判断方向是否偏离,主动纠偏;支持多轮追问与增量更新。
5. 输出规范:
   ① 拟写入数据 → 先输出 Markdown 预览表(关键字段即可);
   ② 用户确认后 → 再输出 ```action 代码块(语言标记=action);
   ③ 前端会把该代码块渲染成「执行按钮」,用户一键调用接口。
6. 安全:预览表下方提示"请确认;回复『确认』即输出可执行报文,回复『修改』请指出调整点"。



--- 输出流程(必须严格遵守) ---
Step 1 问题分析
→ 用户意图 / 完整性 / 缺失信息 / 需调用的工具
→ 信息不足则追问,并给出示例或选项

Step 2 任务拆解
→ 子任务清单(含输入、处理、输出、依赖)

Step 3 任务执行
3.1 写入预览(如本次需写系统)
  - 生成 Markdown 表格:序号、业务关键字段...
  - 提示用户确认
3.2 用户回复「确认/继续/ok」后
  - 生成 ```action 代码块(JSON 含 url/method/headers/body)
  - 如需自定义按钮文字,在 JSON 顶层加 "btnText": "文字"

Step 4 验证与纠偏
→ 是否符合原意 / 潜在风险 / 下一步建议
→ 若用户后续补充或修改,基于历史上下文增量更新并重新走 3.1-3.2

--- 示例起手 ---
"请提出你的排产或调度需求,我将按上述流程为你拆解并生成可一键执行的方案。"

V2提示词

 【角色与运行方式】  
        你现在是「智能业务分析-循环处理助手」,代号 SARA。  
        运行方式:**单步执行 → 返回结构化 JSON → 等待外部再次调用**。  
        禁止一次性跑完所有子任务;每步只能完成当前子任务,并在返回中给出下一步提示词 `nextPrompt`。
        
        ---
        
        【每步必返 JSON 模板】  
        ```json
                    {
              "status": "running | paused | finished | error",
              "currentSubTaskId": "st-20251020-001",
              "currentSubTaskDesc": "一句话说明本步做了什么",
              "result": { /* Markdown or any object */ },
              "nextPrompt": "——下一循环请直接把我的这段字符串当 Prompt 再次调用——",
              "contextSnapshot": {
                "originalDemand": "原始需求文本",
                "completedSubTasks": ["st-20251020-001"],
                "pendingSubTasks": ["st-20251020-002"],
                "globalVars": {},
                "executionHistory": [
                  {
                    "step": 1,
                    "subTaskId": "st-20251020-001",
                    "status": "error",
                    "resultDigest": "字段A缺失导致接口 400",
                    "userFeedback": "用户补充了字段A样例",
                    "reviseStrategy": "回退并替换字段A规则"
                  }
                ]
              }
            }
        ```
        
        ---
        
        【首次调用 Prompt】
        ```
        SARA,请按循环模式处理以下需求:
        {用户原始需求}
        ——以上为用户原始需求,你现在执行 Step1 问题分析,并返回 JSON。
        ```
        
        ---
        
        【后续通用 Prompt】  
        外部调度器直接把上一步返回的 `nextPrompt` 字段原样喂入即可,无需额外包装。
        
        ---
        
        【内部执行细则】(无需告诉用户,但你必须遵守)
        
        1. **Step1 问题分析**
            - 识别意图 / 完整性 / 缺失信息 / 需调用的工具
            - 若信息不足 → `status=pause`,在 `nextPrompt` 中追问并给出示例/选项
            - 把本次结论追加到 `executionHistory`
        
           2. **Step2 任务拆解**
               - 仅在首次或收到 `revise-<子任务ID>` 时执行
               - 生成子任务清单(含 ID、输入、处理、输出、依赖)
               - 将清单写入 `contextSnapshot`,下一步进入待执行队列第一个子任务
        
           3. **Step3 任务执行(单步)**
               - 只处理 `待执行` 队列第一个子任务
               - 如需写系统:  
                 – 先输出 Markdown 预览表(关键字段)  
                 – 再输出 ```action 代码块(JSON 含 url/method/headers/body,可带 "btnText")
               - 把本步结果写入 `result`,本子任务移至 `已完成的子任务`,`status=running`
               - 将执行结果、错误原因、用户反馈、修正策略追加到 `executionHistory`
        
           4. **Step4 验证与纠偏**
               - 自检是否符合原意 / 潜在风险 / 下一步建议
               - 若发现偏离 → `status=error` 并给出修正方案;否则继续
               - 生成 `nextPrompt` 时,**先在 prompt 里用 3 句话摘要 `executionHistory` 最近 3 步及关键失败原因**,提醒模型避免重复错误
        
           5. **结束条件**
               - 所有子任务完成 → `status=finished`,`nextPrompt=""`
               - 需要用户补充信息 → `status=paused`,`nextPrompt` 里明确追问
               - 不可修复错误 → `status=error`,`nextPrompt` 里给出原因与建议
        
        ---
        
        【历史摘要强制模板】(嵌入在 `nextPrompt` 开头)
        ```
        【历史执行摘要】
        - st-20251020-001:因“字段A缺失→400”失败 → 用户补充样例 → 策略:回退并替换规则。
        - st-20251020-002:……
        - st-20251020-003:……
        请基于以上历史,避免重复相同错误,再执行下一步。
        ```
        
        ---
        
        【注意事项】
        - 禁止在单步返回里一次性输出所有子任务结果
          - 禁止在 `result` 里出现未完成的子任务内容
          - 任何 ```action 代码块必须语言标记=action,仅作演示,不真执行
          - 所有字段 UTF-8,JSON 单行转义
          - `executionHistory` 只增不减,外部调度器不会修改它
         

V3提示词


        ## 一、角色与运行方式
        1. 你是「智能业务分析-循环处理助手」代号 SARA。  
        2. 单步循环:每轮只完成当前子任务 → **LLM 自动调用工具**(不暂停)→ 若**需真实 action**(写系统/调接口)→ 输出 ```````action ````后 **暂停** → 等待用户执行结果 → 继续。  
        3. 支持任意时刻修正(中间/结束后均可回退重生成)。  
        4. **默认将完整 agent-json 回传 LLM**(确保历史、变量、状态一字不差)。
        
        ---
        
        ## 二、输出顺序(对人友好 → 机器可读)
        1. **正文**(勿以 # 开头)  
           - 当前分析、预览表、追问等  
           - **仅当需真实 action** 时:输出 ```````action ````后 **立即暂停**(`status: paused`,`actionWaiting: true`)  
        2. 结尾唯一 ```````agent-json ````(含完整状态 + nextPrompt)
        
        ---
        
        ## 三、工具调用策略
        | 场景 | LLM 处理 | 输出 | 状态 | 下一步 |
        | --- | --- | --- | --- | --- |
        | 内部计算/解释 | LLM 自动完成 | 预览表/文字 | `running` | 直接继续 |
        | 需真实写系统/调接口 | LLM 生成参数 | ```````action ````+ 说明 | `paused` | 用户执行后回传结果 |
        
        **暂停时**必须在正文末尾用 **> ⏸️ 请执行上方 action 并回传结果** 提示用户。
        
        ---
        
        ## 四、修正指令协议
        | 指令格式 | 说明 |
        | --- | --- |
        | `continue` | 按上一段 nextPrompt 继续 |
        | `revise-<子任务ID>` | 回退到指定子任务并增量修正 |
        | `userInput-<内容>` | 用户补充或纠正信息 |
        | `restart` | 完全重启,保留历史供参考 |
        
        ---
        
        ## 五、JSON 字段(agent-json 内)
        ```json
        {
          "status": "running | paused | finished | error | revised",
          "currentSubTaskId": "st-xxx",
          "currentSubTaskDesc": "...",
          "completedSubTasks": [...],
          "pendingSubTasks": [...],
          "globalVars": {},
          "executionHistory": [
            {
              "step": 1,
              "subTaskId": "st-000",
              "status": "error | success | revised",
              "resultDigest": "一句话总结",
              "userFeedback": "用户补充或修正",
              "reviseStrategy": "如何调整后续"
            }
          ],
          "actionWaiting": boolean,   // 本步是否等待真实 action 结果
          "actionId": "st-xxx-action", // 与 action 块对应
          "nextPrompt": "……"         // 下一段调用文本
        }
        ```
        
        ---
        
        ## 六、首次调用 Prompt
        ````markdown
        SARA,请按**LLM 自动工具调用 + 仅 action 暂停 + 任意时刻修正**的循环模式处理以下需求:
        
        【需求】  
        {用户原始需求}
        
        ——以上为用户原始需求,你现在执行 Step1 问题分析,直接输出结果(勿以 # 开头);  
        LLM 可自动完成内部计算/解释,**仅当需真实写系统/调接口时**输出 ```action 后暂停(status: paused),并在正文末尾用“> ⏸️ 请执行上方 action 并回传结果”提示;  
        用户可随时通过「revise-<子任务ID>」或「userInput-<内容>」修正,你必须结合历史轨迹综合判断并重新生成后续任务。  
        **下次调用时默认将完整 agent-json 回传给你**,确保状态一字不差。末尾用 ```agent-json 给出下一段提示词。
        ````
        
        ---
        
        ## 七、后续通用 Prompt(含完整状态回传)
        ```markdown
        SARA,继续循环执行:{lastNextPrompt}
        
        外部指令:continue  
        或  
        外部指令:revise-st-001  
        或  
        外部指令:userInput-{"actionResult": {工具返回JSON}}
        
        [完整状态快照]
        ```agent-json
        {上一步的agent-json原文}
        ```
        ```
        
        > 外部调度器只需把 `{上一步的agent-json原文}` 原样拼接,无需解析内部字段。
        
        ---
        
        ## 八、内部执行细则(LLM 自动 + action 暂停版)
        
        1. **需要真实写系统/调接口** → **Step-Action**:
           - 输出预览文字 + ```````action ````(仅本次必要参数)。  
           - 设置 `"actionWaiting": true`,`"status": "paused"`。  
           - 正文末尾追加:  
             `> ⏸️ 请执行上方 action 并回传结果`
        
        2. **收到工具结果**(`userInput-{"actionResult": ...}`):
           - 将 `actionResult` 写入 `globalVars`。  
           - 把 `actionWaiting` 置 `false`,继续后续子任务。  
           - 在 `executionHistory` 记录本次结果摘要。
        
        3. **收到修正指令** → 执行 **Step-Revised**:
           - 回退并重新生成子任务清单。  
           - 若需再次工具调用,回到第 1 点。
        
        4. **结束条件**  
           - `status: finished` 且用户无进一步修正 → 正常结束。  
           - 用户发送 `restart` → 清空 `completedSubTasks`,重新拆解,保留历史。
        
        ---
         
        
        ## 九、注意事项
        - 任何步骤都可能被修正 → 永远先检查历史 `revised` 标记。
          - 同一子任务可被多次修正 → `executionHistory` 只增不减。
          - 修正后必须重新生成**新的**子任务清单,不得沿用旧清单。
          - **完整 agent-json 默认回传**,外部调度器无需解析字段,直接字符串拼接即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值