feat(AI服务):lpt-ai 独立服务初始版本
- Fastify + TypeScript,OpenAI 兼容接口对接 SiliconFlow - POST /ai/aggregate-report:残片聚合为学习报告(支持预期对比) - POST /ai/generate-mind-map:生成思维导图缩进大纲(与后端解析格式一致) - Key 从环境变量读取且日志脱敏,未配置时返回 503 由调用方降级 - prompt 模板集中管理,vitest 单元测试
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# lpt-ai
|
||||
|
||||
LPT 学习进度跟踪系统的独立 AI 服务。将 LLM 相关能力从 Java 主服务中剥离,便于独立迭代、增加安全层与沙箱。
|
||||
|
||||
## 能力
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `/health` | GET | 健康检查,返回 LLM 可用状态 |
|
||||
| `/ai/aggregate-report` | POST | 将学习残片聚合为学习报告 |
|
||||
| `/ai/generate-mind-map` | POST | 从报告/残片生成思维导图大纲 |
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# 编辑 .env,填入 LLM_API_KEY
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
未配置 `LLM_API_KEY` 时服务可启动,但 AI 端点返回 503,由调用方(Java 后端)降级到内置规则。
|
||||
|
||||
## 请求示例
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:5199/ai/aggregate-report \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"taskName": "Java 并发编程",
|
||||
"expectation": "理解线程池核心参数",
|
||||
"fragments": [
|
||||
{"content": "corePoolSize 是核心线程数,即使空闲也不回收"},
|
||||
{"content": "workQueue 满了之后才会创建超过 core 的线程"}
|
||||
]
|
||||
}'
|
||||
```
|
||||
|
||||
## 架构位置
|
||||
|
||||
```
|
||||
LPT 前端 (Vue) ──► LPT 后端 (Java/Spring Boot) ──► lpt-ai (TS/Fastify) ──► SiliconFlow API
|
||||
```
|
||||
|
||||
Java 后端是唯一调用方;本服务不直接暴露给前端,不做鉴权(部署在内网)。
|
||||
|
||||
## 后续规划
|
||||
|
||||
- 输入内容安全过滤(Prompt 注入防护)
|
||||
- 输出审核
|
||||
- 多模型路由(按任务复杂度选择模型)
|
||||
- 用量与成本监控
|
||||
- SSE 流式输出
|
||||
Reference in New Issue
Block a user