Agent与原有的ERP/HR等业务系统如何交互?

0%
分享
复制链接

核心问题就是“怎样让一个不确定性的 LLM 或者说大模型,安全地操作一个确定性的企业业务系统?”

Agent 在与企业业务系统交互的过程中是切切实实的会产生副作用,并且是对业务系统或者业务流程有影响的副作用,可能牵一发而动全身,直接调 api 的话,一旦 Agent 参数拼错、状态过期,最后产生了业务系统中的错误操作,那就是生产事故

所以不能只是简单的让 Agent 直接调 api,而是需要把中间过程拆成几个边界明确的层

markdown
用户自然语言
    ↓
LLM / Agent
    │  负责:理解意图、选择能力、生成参数
    ↓
技能声明
    │  声明:这个能力是什么、何时调用、需要什么参数、风险和权限
    ↓
cli
    │  负责:确定性的参数组装、命令执行、HTTP 路由
    ↓
Scenario
    │
    ├── Preview
    ├── Frozen Payload
    │
    ↓
人工 Confirm
    │
    ↓
Reentry Validate
    │
    ↓
Replay
    │
    ↓
原有业务 Service
    ↓
数据库 / HR / ERP / OA 等业务系统

简单来说就是 LLM 负责决策,确定性程序负责执行,服务端负责最终安全边界

那我们是不是可以将其分成三个模块

模块理解 主要职责
Agent 能力说明书 告诉 Agent 有什么工具、适合什么意图、参数是什么、权限/风险是什么
Agent 到业务系统之间的确定性 cli 执行器 把 Tool Call 转成明确的 Cobra 命令和 HTTP 请求
真正的业务与安全边界 参数/权限/状态校验、Preview、冻结、重入检查、最终调用已有业务 Service

❓为什么要多一层 CLI?
A:CLI 实际承担的是 Agent 与业务接口之间的确定性适配层。Agent 只负责选工具和生成结构化参数,而 CLI 负责把参数规范化成稳定的命令和请求协议,这样的话就可以把 Agent 的不确定性限制在 Tool Calling 之前(尽量把模型的不确定性限制在“工具选择和参数生成”这一层,Tool Call 之后通过参数校验、实体消歧、权限控制和确定性执行链路,把后续行为收敛成可验证的程序逻辑),而且在后端接口有变动的时候或者多个 Agent 接入时,也不需要把业务细节都暴露给模型

主要链路#

Preview → Frozen Payload → Confirm → Reentry → Replay

Preview#

举个例子
用户说“把张三的财务权限收回来”
而模型根据意图找到对应 Skill,然后根据姓名“张三”调用工具
问题来了,如果公司可能有多个张三,这个时候不可能让模型直接猜是谁,而是会列出候选列表,并且算出“如果执行,会发生什么”,