# 用友 OpenAPI 集成 AI：怎样调用、怎样限权、怎样写回

> Source: https://netray.co/zh/yonyou-openapi-integration-ai
> Language: zh
> Publisher: Netray (netray.co)

用友的开放接口适合让 AI 以受控方式读取并在审批后写回业务数据。关键是：用专用应用账号并最小授权，读取优先，写入走草稿加人工确认，所有调用有日志，并处理好令牌过期、限流和失败重试。具体接口以所用产品和版本的官方文档为准。

当企业不方便直接连数据库，或者用的是云上的 YonBIP、YonSuite，AI 与用友系统对接就要走开放接口。这条路径比直连数据库更规范，数据权限和业务校验由用友一侧执行，但也更受限于接口覆盖的范围和调用规则。

用友不同产品线的开放方式并不完全相同：U8、U8 Cloud、NC Cloud 与 YonBIP 在接口形态、鉴权方式和文档位置上都有差别。下面讲的是做 AI 集成时通用的工程原则，具体字段和地址请以你所用产品和版本的官方开放平台文档为准，我们不在这里罗列未经核实的接口名。

## 为什么走接口而不是直连数据库

直连数据库简单直接，适合内网的只读问数，但绕过了应用层的校验。一旦涉及写入，直接改库会跳过审批流、凭证生成和库存联动，数据很容易不一致，也可能影响用友的技术支持。因此凡是要写回的场景，应使用开放接口或官方提供的导入方式。

云上产品的数据库通常不对客户开放，接口就是唯一正规入口。这时候 AI 层本质上是一个调用接口的应用，它需要像其他集成一样被登记、授权和监控。

## 鉴权、令牌与最小授权

常见做法是在开放平台为这次集成创建独立的应用，获得应用凭证，再用凭证换取有时效的访问令牌后调用接口。凭证应存放在密钥管理系统或受保护的配置中，不要写进代码仓库或提示词里，更不能让模型看到。令牌过期要自动刷新，刷新失败要报警而不是静默重试。

授权上遵循最小权限：只开通 AI 场景需要的接口和数据范围。用于问数的应用只给查询类权限；确实要写回的应用单独建立，并映射到一个业务角色明确的账号，让系统里的操作记录能看出是哪个集成发起的。

- 每个集成一个应用，不与其他系统共用凭证
- 凭证放进密钥管理，定期轮换，禁止进入模型上下文
- 查询与写入使用不同的应用与账号
- 按组织、账簿或业务单元限定数据范围

## 限流、分页与失败处理

开放接口一般有调用频率和单次返回量的限制。AI 场景下，一个问题可能触发多次调用，如果没有控制，几个人同时提问就可能触发限流。要做的是请求队列、结果缓存和分页读取，对基础档案这类变化少的数据缓存，对库存这类变化快的数据设置合理的有效期，并在回答里注明数据的取数时间。

失败处理要明确区分三类：可以重试的临时错误，需要人处理的业务校验失败，以及不该重试的权限错误。对于写入类调用必须保证幂等，同一份草稿重复提交不能生成两张单据，通常的做法是带业务唯一键，并在提交前先查询是否已存在。

## 写回：草稿、确认、再提交

让 AI 直接创建正式单据风险很高。更稳妥的流程是：模型根据用户请求整理出单据草稿，如采购申请的物料、数量、需求日期，展示给有权限的人，人确认后再通过接口提交，提交结果和单据号回显给用户。审批流仍由用友系统自己执行，AI 不替代审批。

每一次调用都记录：谁提出的请求，模型生成了什么，确认人是谁，实际提交的数据，以及接口返回。这些日志既是审计需要，也是日后排查为什么生成了某张单据的依据。

## 部署位置与适用边界

即使系统在云上，也可以把模型和集成层部署在企业自己的环境里，由它去调用用友的接口，这样企业自有的文档、历史对话和中间数据不需要交给第三方模型服务。需要注意的是，经接口取回的业务数据最终会在你的 AI 层处理，这一层要按企业的数据安全要求管理访问和留存。

如果你的需求只是在用友系统里用它自带的智能功能，比如产品内置的助手，那么直接使用即可，不必自建集成。自建的价值在于要同时接入多个系统、使用企业自己的文档和规则，或者对数据位置有严格要求。

## FAQ

### 用友各产品的开放接口是同一套吗？

不是。U8、U8 Cloud、NC Cloud、YonBIP 的接口形态、鉴权与文档各不相同，请以所用产品与版本的官方开放平台文档为准。

### AI 可以直接通过接口生成正式凭证或订单吗？

技术上多半可以，但不建议。推荐先生成草稿，经有权限的人确认后再提交，并保留完整日志。

### 访问令牌过期了怎么办？

集成层应自动刷新令牌，刷新失败时报警并停止后续调用，避免在无效状态下反复请求。

### 接口被限流，AI 回答变慢怎么处理？

使用请求队列、分页、对低频变化数据做缓存，并在回答中标明取数时间。必要时与用友确认调用额度。

### 数据库只读问数和接口集成要选哪一个？

本地部署的 U8 做只读问数，直连只读视图更简单；云产品或需要写回时，用接口。两者也可以并存。
