# limt-ai-platform **Repository Path**: eProduct/limt-ai-platform ## Basic Information - **Project Name**: limt-ai-platform - **Description**: limt.cc AI 集成中台:钉钉Stream机器人 / OpenAI通用网关 / 外部API数据聚合 / 后台管理 / 项目门户 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-18 - **Last Updated**: 2026-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # limt-ai-platform limt.cc AI 集成中台,基于 JDK 17 + Spring Boot 3.2 的多模块 Maven 工程。 ## 模块划分 | 模块 | 说明 | 端口 | | --- | --- | --- | | `limt-ai-dingtalk` | 钉钉 Stream 机器人:通过 `app-stream-client` 接收消息,使用钉钉官方 SDK 发送群 / 单聊消息 | 8085 | | `limt-ai-data` | 外部 API 数据聚合:统一 Provider 适配外部数据源,对内提供 REST 接口 | 8084 | | `limt-ai-openai` | OpenAI 通用网关:对接 openai 兼容接口,对内提供 REST 接口 | 8083 | | `limt-ai-admin` | 后台管理:AI 配置管控、消耗监控、第三方接口数据管理(H2 + MyBatis-Plus) | 8086 | | `limt-ai-portal` | 项目门户:项目集合入口,通过 Gitee API 定时(默认半小时)拉取提交生成热力图,展示各模块入口与容器状态 | 8087 | ## 目录结构 ``` limt-ai-platform ├── pom.xml # 父 POM(JDK17、依赖管理、仓库配置、模块聚合) ├── limt-ai-dingtalk/ # 钉钉 Stream 机器人 ├── limt-ai-data/ # 外部 API 数据聚合 ├── limt-ai-openai/ # OpenAI 网关 ├── limt-ai-admin/ # 后台管理 └── limt-ai-portal/ # 项目门户 ``` 根包统一为 `limt.cc.*`,如 `limt.cc.dingtalk`、`limt.cc.openai`。 ## 构建 ```bash mvn clean package -DskipTests ``` ## 启动 ```bash # 1) OpenAI 网关(需配置 OPENAI_API_KEY) OPENAI_API_KEY=sk-xxx java -jar limt-ai-openai/target/limt-ai-openai-*.jar # 2) 数据聚合 java -jar limt-ai-data/target/limt-ai-data-*.jar # 3) 钉钉机器人(开发者后台获取 AppKey/AppSecret,机器人开启 Stream 模式) # 使用 AI 卡片回复(打字机效果)需配置 DINGTALK_CARD_TEMPLATE_ID(钉钉卡片平台「AI 卡片」模板 ID) DINGTALK_APP_KEY=xxx DINGTALK_APP_SECRET=xxx DINGTALK_ROBOT_CODE=xxx \ DINGTALK_CARD_TEMPLATE_ID=xxx java -jar limt-ai-dingtalk/target/limt-ai-dingtalk-*.jar # 4) 后台管理 java -jar limt-ai-admin/target/limt-ai-admin-*.jar # 访问 http://localhost:8086/ 查看管理后台,H2 控制台 http://localhost:8086/h2-console # 5) 项目门户(需配置 Gitee 私人令牌 + 仓库地址,可选容器名) PORTAL_TOKEN=xxx java -jar limt-ai-portal/target/limt-ai-portal-*.jar # 访问 http://localhost:8087/ 查看项目集合入口(提交热力图 / 模块入口 / 容器状态) # 项目列表在 application.yml 的 portal.projects 下配置(owner/repo/modules) ``` ## 接口速览 - OpenAI 网关:`POST /api/v1/chat/completions`、`POST /api/v1/chat`、`POST /api/v1/chat/stream`(SSE 流式)、`GET /api/v1/models` - 数据聚合:`GET /api/v1/data/types`、`GET /api/v1/data/{type}?参数` - 钉钉机器人:收到消息立即投放「思考中...」AI 卡片,OpenAI 回答以打字机效果(标点或 300~400ms 间隔)流式刷新卡片,完成后展示耗时 ms;`/data weather` 触发数据聚合 - 后台管理:`/api/admin/ai-config`、`/api/admin/consumption`、`/api/admin/third-party-apis` - 项目门户:`GET /api/portal/projects`、`GET /api/portal/projects/{name}`、`POST /api/portal/projects/refresh`;页面 `http://localhost:8087/` ## 技术要点 - 钉钉 Stream:`com.dingtalk.open:app-stream-client`(接收消息用 Stream 模式,无需公网 HTTP 回调) - 钉钉 AI 卡片:`POST /v1.0/card/instances/createAndDeliver` 创建并投放「思考中」卡片,`PUT /v1.0/card/streaming` 流式更新实现打字机效果(标点立即刷新 / 350ms 定时刷新),完成时 `isFinalize=true` 并展示耗时 ms - 钉钉发消息:`com.aliyun:dingtalk` SDK(群消息 `orgGroupSend`、单聊 `privateChatSend`)作为卡片未配置时的文本兜底 - 消费监控:`limt-ai-admin` 提供 `POST /api/admin/consumption`,各模块上报用量 - 密钥建议通过环境变量注入,示例见各模块 `application.yml`