From 83fd1dddd80602246a62fba0cbea4ed34dabad49 Mon Sep 17 00:00:00 2001 From: cat-shark <1716967236@qq.com> Date: Wed, 5 Aug 2026 23:35:10 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=A7=BB=E9=99=A4=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 136 ------------------------------------------------------ 1 file changed, 136 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 2b7df5b..0000000 --- a/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# lpt-ai - -LPT 学习进度跟踪系统的独立 AI 服务。将 LLM 相关能力从 Java 主服务中剥离,便于独立迭代、增加安全层与沙箱。 - -## 能力 - -| 端点 | 方法 | 说明 | -|------|------|------| -| `/health` | GET | 健康检查,返回 LLM 可用状态 | -| `/ai/tasks` | POST | 提交异步 AI 任务(聚合报告/生成导图/回忆对比) | -| `/ai/tasks/:taskId` | GET | 轮询任务状态和结果 | -| `/fetch-title` | GET | 抓取 URL 页面标题 | -| `/admin` | GET | 管理面板(任务日志、Prompt 调试) | - -## 快速开始 - -```bash -cp .env.example .env -# 编辑 .env,填入 LLM_API_KEY -npm install -npm run dev -``` - -未配置 `LLM_API_KEY` 时服务可启动,但 AI 端点返回 503,由调用方(Java 后端)降级到内置规则。 - -## 异步任务架构 - -由于 LLM 调用耗时长(可达数十秒),所有 AI 任务采用异步模式: - -### 1. 提交任务 - -```bash -curl -X POST http://localhost:5199/ai/tasks \ - -H "Content-Type: application/json" \ - -d '{ - "type": "aggregate-report", - "params": { - "taskName": "Java 并发编程", - "expectation": "理解线程池核心参数", - "fragments": [ - {"content": "corePoolSize 是核心线程数,即使空闲也不回收"}, - {"content": "workQueue 满了之后才会创建超过 core 的线程"} - ] - } - }' -``` - -响应: -```json -{ - "taskId": "550e8400-e29b-41d4-a716-446655440000", - "status": "pending" -} -``` - -### 2. 轮询结果 - -```bash -curl http://localhost:5199/ai/tasks/550e8400-e29b-41d4-a716-446655440000 -``` - -响应(进行中): -```json -{ - "taskId": "550e8400-e29b-41d4-a716-446655440000", - "status": "running", - "progress": 50 -} -``` - -响应(完成): -```json -{ - "taskId": "550e8400-e29b-41d4-a716-446655440000", - "status": "completed", - "result": { - "summary": "本次学习主要掌握了线程池的核心参数配置...", - "keyPoints": ["corePoolSize 核心线程数", "workQueue 工作队列"] - } -} -``` - -### 3. 支持的任务类型 - -| type | 说明 | params 字段 | -|------|------|------------| -| `aggregate-report` | 聚合学习残片为报告 | `taskName`, `expectation`, `fragments[]` | -| `generate-mind-map` | 生成思维导图大纲 | `taskName`, `reports[]`, `applications[]` | -| `compare-recall` | 对比用户回忆与标准导图 | `taskName`, `standardOutline`, `recallOutline` | - -## 架构位置 - -``` -LPT 前端 (Vue) ──► LPT 后端 (Java/Spring Boot) ──► lpt-ai (TS/Fastify) ──► SiliconFlow API -``` - -Java 后端是唯一调用方;本服务不直接暴露给前端,不做鉴权(部署在内网)。 - -## 任务队列机制 - -- 任务提交后进入内存队列,返回 taskId -- 后台异步执行,Java 端通过轮询获取结果 -- 任务超时时间:5 分钟 -- 任务结果保留时间:30 分钟(自动清理) -- 失败重试:无(由 Java 端决定是否重试或降级) - -## 降级策略 - -``` -AI 服务不可用 - ↓ -Java 后端捕获 503/超时 - ↓ -自动切换到内置生成器 - ↓ -- 聚合报告:简单拼接残片 -- 生成导图:按 session 分组 + 规则去重 -- 回忆对比:字符串相似度匹配 -``` - -确保系统在 AI 服务异常时仍可正常工作。 - -## 管理面板 - -访问 `http://localhost:5199/admin` 查看: -- 任务执行日志(状态、耗时、token 消耗) -- Prompt 模板预览与调试 -- 队列状态监控 - -## 后续规划 - -- 输入内容安全过滤(Prompt 注入防护) -- 输出审核 -- 多模型路由(按任务复杂度选择模型) -- 用量与成本监控 -- SSE 流式输出