# agent_demo **Repository Path**: ZuoYL996_com/agent_demo ## Basic Information - **Project Name**: agent_demo - **Description**: 金融智能知识库与风控审核Agent - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 金融智能知识库与风控审核 Agent 轻量级示例工程:**Spring Boot 3 + Spring AI Alibaba(通义千问 + Embedding + 向量库)** 做 RAG 问答;**LangChain4j + DashScope** 做贷款风控 Agent(工具拉取规则与申请统计)。前端为 **Vue 3 + Vite** 三个主入口:文档上传、智能问答、贷款申请(管理员额外可维护风控规则)。 ## 架构 | 层级 | 说明 | |----------|------| | 前端 | `frontend/`,JWT 存 `localStorage`,开发期通过 Vite 代理 `/api` | | 后端 | `backend/`,JWT + RBAC、接口级权限、贷款数据按用户隔离 | | AI 中间件 | Spring AI:`ChatModel` + `EmbeddingModel` + `VectorStore`;LangChain4j:`AiServices` + `@Tool` | | 存储 | 默认 **`local` 配置**:内存 H2、内存向量(SimpleVectorStore)、Caffeine 缓存,无需安装 MySQL/Redis。可选 **`mysql` 配置**:MySQL 业务数据 + Redis Stack 向量与缓存/限流 | ## 环境要求 - JDK 17+(当前工程在 JDK 21 下已验证可编译) - Maven 3.9+,**或直接使用项目内 `backend/mvnw.cmd`(已配置 Maven Wrapper)** - Node 18+(前端) - **默认无需数据库与 Redis**(使用 profile `local`) - 若使用 **`mysql` profile**:本机需 **MySQL 8**(库 `fin_agent`、用户 `fin` / `fin123`)与 **Redis**(建议带 RediSearch 的 Redis Stack,`localhost:6379`) ## 配置 1. **通义千问 API Key**(使用大模型与向量时必填) 环境变量 `DASHSCOPE_API_KEY`,或 `backend/src/main/resources/application.yml` 中 `spring.ai.dashscope.api-key`。 未配置时:`local` 下使用占位值仅保证应用能启动,问答/上传会向量化会按代码提示失败;风控审核走本地兜底规则。 2. **JWT 密钥**:`app.jwt.secret` 建议至少 32 字符(生产环境务必修改)。 3. **运行模式** - **`local`(默认)**:`application-local.yml`,H2 + 内存向量 + Caffeine,不连 Redis。 - **`mysql`**:使用 `application.yml` 中的 MySQL/Redis 与 Redis 向量库。设置环境变量 `SPRING_PROFILES_ACTIVE=mysql`(Windows PowerShell:`$env:SPRING_PROFILES_ACTIVE='mysql'`),并按下方脚本初始化数据库。 ## 启动 ```powershell # 1. 后端(默认 local,开箱即用) cd backend .\mvnw.cmd spring-boot:run # 若本机已装 MySQL + Redis 并要沿用原架构: # $env:SPRING_PROFILES_ACTIVE='mysql' # .\mvnw.cmd spring-boot:run # MySQL 初始化(仅 mysql profile 需要): # mysql -u root -p < sql/bootstrap-mysql-user.sql # mysql -u fin -pfin123 fin_agent < sql/schema.sql # 2. 前端 cd frontend npm install npm run dev ``` **说明**:Spring Boot 已升级为 **3.4.5**,与 `spring-ai-alibaba-starter-dashscope` 1.0.0.2 对齐;Spring AI 使用 **1.0.0** BOM(向量库在 `mysql` 下为 `spring-ai-starter-vector-store-redis`,在 `local` 下为内存 `SimpleVectorStore`)。 浏览器访问 `http://localhost:5173`。 ## 默认账号 应用启动时 **DataInitializer** 会写入(若库中不存在): | 用户 | 密码 | 角色 | |--------|----------|--------| | admin | admin123 | 管理员 | | user | user123 | 普通用户 | ## 接口与权限摘要 - `POST /api/auth/login`:公开 - `POST/DELETE /api/documents/**`:仅 `ADMIN` - `GET /api/documents`:已登录 - `POST /api/chat/ask`:已登录,**限流**(默认每秒 5 次;`local` 为进程内计数,`mysql` 为 Redis) - `POST /api/loans/apply`:已登录,**限流**同上;审核走 Agent - `GET /api/loans/mine`:本人申请;`GET /api/loans/{id}`:本人或管理员 - `/api/risk-rules/**`:仅管理员;规则列表带缓存(`local` 为 Caffeine,`mysql` 为 Redis) ## 说明与限制 - 文档上传仅处理 **`.txt` / `.md`**,切片长度约 800 字;删除文档**未**同步删向量(生产需按 `documentId` 清理索引)。 - 未配置有效 API Key 时:问答返回提示文案;风控走 **本地兜底规则**(如单笔 > 100 万拒绝)。 - LangChain4j 与 Spring AI 版本需与 `pom.xml` 中 BOM 一致;若编译报错,请核对 `AiServices.builder(...).chatModel(...)` 是否与你使用的 LangChain4j 小版本 API 一致。 ## 许可证 示例代码仅供学习与二次开发参考。