AIFlowy 作为一款基于 Java/Spring Boot 的企业级 AI 应用开发平台,与现有 Spring Boot 项目的集成主要通过"API 对接 + 单点登录 + 共享数据库"三种方式实现。核心思路是将 AIFlowy 视为一个独立的 AI 能力中台或微服务。
🏛️ 架构定位:独立的 AI 中台
建议将 AIFlowy 部署为一个独立的服务,与您现有的业务系统解耦。它自带用户、权限、日志等完整的后台管理能力,可作为统一的 AI 能力底座。
-
AIFlowy 服务:负责 Bot、工作流、RAG 知识库、大模型管理等所有 AI 相关功能。
-
现有业务系统:通过标准的 HTTP API 调用 AIFlowy 的能力。
🔌 方式一:API 对接 (推荐)
这是最常见且侵入性最小的集成方式。AIFlowy 发布的应用(如 Bot)可生成标准的 HTTP 接口和访问密钥,供外部系统调用。
1. 在 AIFlowy 中创建并发布应用
-
创建 Bot/应用:在 AIFlowy 控制台配置好模型、提示词、知识库和工具,搭建好业务流程。
-
发布为 API:发布应用后,系统会生成唯一的 API 地址和 Access Key/Secret,这是与您现有系统对接的凭证。
2. 在 Spring Boot 项目中调用 API
在您的业务系统中,通过 RestTemplate或 WebClient调用 AIFlowy 的接口。为便于管理,建议封装一个统一的 AIFlowyClient服务。
java
@Service
public class AIFlowyClient {
private final WebClient webClient;
// 通过构造函数注入 WebClient
public AIFlowyClient(WebClient.Builder webClientBuilder) {
this.webClient = webClientBuilder
.baseUrl("https://aiflowy.yourcompany.com") // AIFlowy 服务地址
.defaultHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN") // 使用 Access Key
.build();
}
public String chat(String botId, String userId, String message) {
Map<String, Object> request = Map.of(
"botId", botId,
"userId", userId,
"message", message
);
// 假设 AIFlowy 的聊天接口为 POST /openapi/v1/chat
return webClient.post()
.uri("/openapi/v1/chat")
.bodyValue(request)
.retrieve()
.bodyToMono(String.class)
.block(); // 实际项目中建议使用非阻塞方式
}
}
3. 业务系统集成
在您的业务接口中,注入 AIFlowyClient并调用其方法,将 AIFlowy 的返回结果整合到您的业务流程中。
java
@RestController
@RequestMapping("/order")
public class OrderController {
private final AIFlowyClient aiFlowyClient;
public OrderController(AIFlowyClient aiFlowyClient) {
this.aiFlowyClient = aiFlowyClient;
}
@PostMapping("/ask")
public String askAboutOrder(@RequestBody OrderAskRequest req) {
String userQuestion = "订单" + req.getOrderId() + "的发货时间是什么时候?";
// 调用 AIFlowy 获取 AI 回答
return aiFlowyClient.chat("order-bot", req.getUserId(), userQuestion);
}
}
4. 处理流式响应 (可选)
如果 AIFlowy 支持流式输出(SSE/WS),您可以在后端使用 WebClient接收流数据,再通过 SseEmitter或 WebSocket推送给前端,实现打字机效果。
🔑 方式二:单点登录 (SSO) 集成
若希望用户能在业务系统和 AIFlowy 控制台之间无缝切换,避免重复登录,可配置单点登录。
-
统一认证中心:将您现有的用户体系(如 LDAP/AD 或自研 SSO)作为唯一认证中心。
-
配置 AIFlowy:修改 AIFlowy 的认证配置,使其信任您的认证中心(如配置 JWT 验证或 OAuth2 客户端)。
-
共享用户体系:确保两个系统的用户 ID 能对应起来,以便 AIFlowy 在记录审计日志或进行权限控制时,能关联到正确的内部用户。
🗄️ 方式三:共享数据库 (深度定制)
此方式适用于需要将 AIFlowy 的某些数据(如知识库、对话记录)与现有系统数据统一管理或进行联合查询的场景。
-
共享业务数据库:将 AIFlowy 需要访问的业务表(如工单表)权限开放给它。
-
使用数据库账号隔离:为 AIFlowy 创建专用的数据库账号,并授予其最小必要权限,确保数据安全。
-
跨库查询:在 AIFlowy 的自定义工作流或插件中,通过数据源配置直接访问共享数据库。
注意:此方案耦合度较高,仅在确有强需求时考虑,并务必做好权限和网络隔离。
🚀 部署与网络建议
-
网络隔离:推荐将 AIFlowy 部署在内网,通过 API 网关或防火墙严格控制对外的访问入口。
-
独立数据库:为 AIFlowy 配置独立的数据库实例,避免与核心业务库相互影响。
-
内网域名:为 AIFlowy 配置内网域名或负载均衡地址,便于后续迁移和扩展。
💡 集成方案速查
| 集成方式 | 核心思路 | 适用场景 | 耦合度 |
|---|---|---|---|
| API 对接 | 将 AIFlowy 视为独立的 AI 微服务,通过 HTTP 接口调用。 | 绝大多数场景,如智能客服、知识问答、报告生成。 | 低 |
| **单点登录 (SSO)** | 统一用户认证体系,实现两个系统间的无缝跳转。 | 需要在业务后台和 AIFlowy 控制台间频繁切换的用户。 | 中 |
| 共享数据库 | 让 AIFlowy 直接访问业务数据库,进行联合查询或数据写入。 | 需要将 AIFlowy 数据(如对话记录)与业务数据统一管理。 | 高 |