Files
gangyan/.harness/architecture.md

207 lines
8.0 KiB
Markdown
Raw Normal View History

# 系统架构与运行配置
## 服务拓扑
```
Vue前端(:3000/metalinfo)
│ proxy /chat_web_backend
Java后端(:8099/chat_web_backend) ──→ Python RAG(:7861)
│ │
├── MySQL(:33306/chat_gpt_yj) ├── Milvus(:19530)
├── Redis(:6379) ├── Embedding API(10.102.24.75:3000)
└── 科协SSO(kxsso.cast.org.cn) └── LLM API(10.102.24.75:3000 + DeepSeek/阿里云)
```
---
## Java 后端 `chat_web_backend/`
### 运行配置Profile: yj
| 配置项 | 值 |
|--------|-----|
| 主类 | `com.inspur.llm.ChatApplication` |
| 端口 | 8099上下文 `/chat_web_backend` |
| 数据库 | `jdbc:mysql://127.0.0.1:33306/chat_gpt_yj`root / 1234567890 |
| 连接池 | Druid初始5最小10最大20 |
| Redis | `127.0.0.1:6379`无密码database 0 |
| LangChain | `http://localhost:7861` |
| 默认 LLM | deepseek-v3 |
| 前端地址 | `http://localhost:3000` |
| SSO | 科协 `https://kxsso.cast.org.cn/` |
| 文件上传限制 | 50MB |
### 包结构 `com.inspur.llm.chat`
- **`base/`** — 框架层
- `config/` `security/` `filter/` `interceptor/` `aspect/` — Spring 配置与安全
- `util/` `constant/` `enums/` `exception/` — 工具与异常
- `mybatis/` — MyBatis-Plus 配置
- `xss/` — XSS 防护过滤器
- **`gpt/`** — 业务层
- `controller/`
- `app/` — 前端公开接口ChatController、LoginController、UserController
- `gpt/` — 核心业务15个ChatController、ChatMessageController、FileController、KnowledgeBaseController、AgentController、AssistantController、MetallurgyChatController、OutlinesController、SmartChatController、ConfigController、CommonController、FileNoteController、FileTranslateController、AssistantTypeController、UserController
- `writterassitant/` — 文档撰写DocController、WriterAssistantController
- `personal/` — 个人知识库ChatPersonalController
- `sys/` — 系统管理SysLogController、SysUserController
- `service/` — 业务服务接口IChatService、IGptService、IDocService、IKnowledgeBaseConfigService、IUploadFileService、IOutlinesService、TranslateFileService 等)
- `mapper/` — MyBatis 数据访问
- `pojo/` — entity / dto / vo / command
### 配置文件
| 文件 | 用途 |
|------|------|
| `application.yml` | 公共配置mybatis-plus、xss、tomcat |
| `application-yj.yml` | **当前在用**:本机 MySQL/Redis/LangChain |
| `application-dev.yml` | 开发环境(历史) |
| `application-test.yml` | 测试环境 |
| `application-prod.yml` | 生产环境ENC 加密) |
---
## Python RAG `langchain-chat/`
### 模型配置configs/model_config.py
| 配置项 | 值 |
|--------|-----|
| Embedding | `bge-m3-api``http://10.102.24.75:3000/v1` |
| 默认 LLM | deepseek-v3 |
| LLM 列表 | deepseek-v3、deepseek-r1、deepseek-chat、qwen-max、Qwen2-72B-Instruct |
| LLM 设备 | cuda |
| Embedding 设备 | cpu |
| 历史长度 | 20 |
| 温度 | 0.7 |
**LLM API 来源:**
- 内网网关:`http://10.102.24.75:3000/v1` — deepseek-v3、deepseek-r1、Qwen2-72B-Instruct、bge-m3
- 阿里云:`https://dashscope.aliyuncs.com/compatible-mode/v1` — qwen-max
- DeepSeek 官方:`https://api.deepseek.com/v1` — deepseek-chat、deepseek-reasoner
### 知识库配置configs/kb_config.py
| 配置项 | 值 |
|--------|-----|
| 向量库类型 | Milvus |
| Milvus 地址 | `127.0.0.1:19530` |
| 默认知识库 | `t_policy_total_bge_new_v2` |
| MySQL | `127.0.0.1:33306/chat_gpt_yj`root/1234567890 |
| 文本切分 | ChineseRecursiveTextSplitterchunk_size=250overlap=50 |
| 向量检索 Top K | 5 |
| 搜索引擎 | duckduckgo |
| PDF 转换服务 | `http://127.0.0.1:6006/convert/` |
**知识库分类:**
| 知识库 | Collection 名 | 说明 |
|--------|---------------|------|
| 政策库 | t_policy_total_bge_new_v2 | 默认主库 |
| 报告库 | gydemo_report_v2 | 冶金行业报告 |
| 期刊论文库 | t_journal_article_bge_v1 | 学术期刊 |
| 冶金新闻库 | yj_news_bge_v1_recover | 2024年及之前 |
| 冶金中文期刊库 | yj_ch_journal_bge_v1_recover | - |
| 冶金外文期刊库 | yj_for_journal_bge_v1_recover | - |
| 冶金OA期刊库 | yj_oa_journal_bge_v2_recover | - |
| 冶金政策库 | yj_policys_bge_v1_recover | - |
| 钢铁行业动态库 | steel_kb_token_chunk | - |
> 注意:当前所有知识库常量都被统一指向 `DEFAULT_KNOWLEDGE_BASE = t_policy_total_bge_new_v2`,注释中保留了原始 collection 名。
### 服务配置configs/server_config.py
| 服务 | Host | Port |
|------|------|------|
| API Server | 0.0.0.0 | 7861 |
| WebUI | 0.0.0.0 | 8501 |
| FastChat OpenAI API | 0.0.0.0 | 20000 |
| FastChat Controller | 0.0.0.0 | 20101 |
### 源码结构
- `server/api.py` — 主 API 路由
- `server/llm_api.py` — LLM 调用
- `server/utils.py` — 工具函数
- `server/knowledge_base/` — 知识库 CRUD、文件转换、向量化
- `server/custom/` — 定制功能(章节速览、文章综述、摘要检索、论文翻译)
- `server/model_workers/` — 各模型 WorkerOpenAI、智谱、百川等
- `server/reranker/` — 重排序
- `configs/` — 所有配置文件
---
## Vue 前端 `chat_web_front/`
### 运行配置(.env
| 配置项 | 值 |
|--------|-----|
| 前端上下文 | `/metalinfo` |
| 后端代理 | `/chat_web_backend``http://localhost:8099` |
| 端口 | 3000 |
| 路由模式 | Hash |
### 页面路由
| 路径 | 页面 | 说明 |
|------|------|------|
| `/chat` | 智能对话 | 主对话页(默认首页) |
| `/writing` | 文档撰写 | 文档列表 |
| `/writing/edit` | 文档编辑 | 大纲→正文撰写 |
| `/knowledgeBase` | 知识库 | 个人知识库管理 |
| `/knowledgeBase/fileList` | 文件列表 | 知识库内文件 |
| `/knowledgeBase/fileDetail` | 文件详情 | 文件阅读/对话 |
| `/applications` | 应用广场 | 工具集合 |
| `/translate` | 翻译 | 文档翻译 |
| `/login` | 登录 | 科协SSO/本地登录 |
### 前端 API 分组src/api/index.ts
| 分组 | 核心接口 | 对应后端 |
|------|----------|----------|
| 对话 | fetchChatAPI、fetchConversationId、fetchChatAPIProcess流式、LiteratureChat | app/ChatController + gpt/ChatController |
| 文档撰写 | createOutLine、sessionFlow、expandKnow、docSave、getDoc | WriterAssistantController + DocController + OutlinesController |
| 知识库 | getKnowledgeBaseList、uploadFile、getFileContent、streamDocumentOverview、streamChapterOverview | KnowledgeBaseController + FileController |
| 翻译 | fileTranslate、translateString、checkTextLanguage | FileTranslateController |
| 智慧场景 | fetchSmartPrompt、searchPrompt | SmartChatController + AssistantController |
| 用户 | fetchSession、updateUser、fetchCASLogin | UserController + LoginController |
### 源码结构
- `src/views/` — 页面组件chat、writing、reading、applications、translate、login
- `src/components/` — 通用组件Message、AIbox、AIcreate、AIrewrite、KnowledgeBox、WritingGuide、Literatures、Translate 等)
- `src/api/index.ts` — 所有 API 请求
- `src/store/index.ts` — Pinia 状态管理
- `src/router/` — 路由与权限守卫
- `src/utils/` — 工具函数request 封装、copy
- `src/locales/` — 多语言(中/英/韩/俄/越/繁)
- `src/config/properties.ts` — 前端配置
---
## Docker 基础设施
### MySQL
- Compose 文件:`mysql/docker-compose.yml`
- 容器:`mysql-server`,镜像 `mysql:8.4.4`
- 端口33306 → 3306
- 数据卷:`mysql/mysql-8.4.4/mysql_bind`
- 初始库:`chat_LLM`(实际使用 `chat_gpt_yj`
### Milvus
- Compose 文件:`milvus/docker-compose.yml`
- 容器:`milvus-standalone`,镜像 `milvusdb/milvus:v2.6.4`
- 端口19530(gRPC)、9091(健康检查)
- 依赖etcd(v3.5.18) + MinIO(2024-12-18)
- 数据卷:`milvus/volumes/`
### Redis
- 非 Docker 部署(宿主机直接运行或 `docker start redis-server`
- 端口6379无密码