# deep-qa **Repository Path**: noogel/deep-qa ## Basic Information - **Project Name**: deep-qa - **Description**: fust demo deep-qa - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-26 - **Last Updated**: 2025-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Deep QA - 基于Fust框架的智能问答应用 基于知乎开源的Fust微服务框架和DeepSeek API的智能问答系统,支持自然语言对话功能。 ## 项目概述 Deep QA是一个高性能、可扩展的智能问答应用,基于知乎开源的Fust微服务框架开发。该应用可以连接DeepSeek API,提供自然语言对话能力。 ## 功能特点 - 支持与AI助手进行实时对话 - 配置连接DeepSeek官方API - 支持多种大语言模型(deepseek-chat、deepseek-coder等) - 可调整模型参数(温度、上下文窗口大小等) - 多会话管理 - 高性能gRPC和HTTP双协议支持 ## 技术栈 ### 框架 - [Fust微服务框架](https://zhihu.github.io/fust/guide/) - 知乎开源的基于Spring Boot的微服务开发框架 - Spring Boot 3.x ### 前端 - HTML5 + CSS3 + JavaScript - Tailwind CSS (样式框架) - FontAwesome (图标库) - Thymeleaf (模板引擎) ### 后端 - Fust Boot (微服务框架核心) - Armeria (高性能HTTP/gRPC服务器) - MySQL + MyBatis (数据持久化) - Redis (缓存) ## 项目架构 ``` deep-qa/ ├── docs/ # 文档和原型 │ ├── prototype.html # 前端原型 │ └── sql/ # 数据库脚本 │ └── schema.sql # 数据库表结构 ├── deep-qa-api/ # HTTP API模块 │ └── src/ │ ├── main/java/com/deepqa/api/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ └── dto/ # 数据传输对象 │ └── main/resources/ │ ├── static/ # 静态资源 │ ├── templates/ # Thymeleaf模板 │ └── application.properties # 应用配置 ├── deep-qa-business/ # 业务逻辑模块 │ └── src/ │ └── main/java/com/deepqa/business/ │ ├── client/ # 外部服务客户端 │ ├── dao/ # 数据访问对象 │ ├── model/ # 数据模型 │ └── service/ # 业务服务 │ └── impl/ # 服务实现 ├── proto/ # Protocol Buffers定义 │ ├── buf.yaml # Buf模块配置 │ └── hello.proto # 示例服务Proto定义 ├── build.sh # 构建脚本 ├── run.sh # 运行脚本 ├── dev-env.sh # 开发环境配置脚本 ├── test-env.sh # 测试环境配置脚本 ├── prod-env.sh # 生产环境配置脚本 ├── pom.xml # Maven项目配置 └── README.md # 项目说明 ``` ## 数据库结构 ### DeepSeek API配置表 (t_config) 存储用户的DeepSeek API连接配置信息: - 服务器地址 - API密钥 - 模型名称 - 上下文窗口大小 - 温度参数 - Top P参数 ### 对话历史表 (t_chat_history) 存储用户与AI助手的对话历史: - 用户ID - 会话ID - 角色(user/assistant) - 消息内容 - 图片信息 ### 用户表 (t_user) 存储应用用户信息: - 用户名 - 密码 - 邮箱 - 头像 ## API接口 ### HTTP接口 - `POST /api/chat/send` - 发送消息 - `GET /api/chat/history/{sessionId}` - 获取聊天历史 - `GET /api/chat/sessions` - 获取会话列表 - `POST /api/chat/sessions` - 创建新会话 - `DELETE /api/chat/sessions/{sessionId}` - 删除会话 ### gRPC接口 - `HelloService.Hello` - 示例gRPC接口 ## 环境准备 ### 环境要求 - JDK 17+ - Maven 3.8+ - MySQL 5.7+ - Redis 6.0+ - DeepSeek API密钥 ### 安装Fust框架 由于Fust框架尚未发布到Maven中央仓库,需要先将其发布到本地Maven仓库: ```bash # 克隆FUST仓库 git clone https://github.com/zhihu/fust.git cd fust # 发布到本地Maven仓库 ./gradlew publishToMavenLocal ``` ### 安装Buf工具 用于生成Protocol Buffers代码的Buf工具: ```bash # macOS使用Homebrew安装 brew install bufbuild/buf/buf # 验证安装 buf --version ``` ## 项目构建 ### 生成Proto代码 首先生成Protocol Buffers代码: ```bash # 更新Buf模块依赖 cd proto buf mod update cd .. # 生成Protocol Buffers代码 buf generate --template buf.gen.yaml ``` ### 构建项目 使用Maven构建项目: ```bash # 编译Maven项目 mvn clean package # 运行构建脚本 bash build.sh ``` ## 运行项目 ### 环境配置 项目使用Fust框架的JSON配置文件管理数据库连接。系统会根据`ENV_NAME`环境变量或`env.name`系统属性自动选择对应的配置文件。 #### 开发环境(默认) ```bash # 使用开发环境配置 source ./dev-env.sh # 然后运行HTTP服务 bash run.sh deep-qa-api/target ``` #### 测试环境 ```bash # 使用测试环境配置 source ./test-env.sh # 然后运行HTTP服务 bash run.sh deep-qa-api/target ``` #### 生产环境 ```bash # 设置生产环境数据库密码(敏感信息不要硬编码) export DB_USER="production_username" export DB_PASSWORD="production_password" # 使用生产环境配置 source ./prod-env.sh # 然后运行HTTP服务 bash run.sh deep-qa-api/target ``` ### 访问服务 #### HTTP服务 - API访问地址: - 示例:`curl -X GET "http://localhost:8080/v1/hello?name=FUST"` #### gRPC服务 - 服务地址: grpc://localhost:8888 - 文档路径: - 调试接口: - 示例: ```bash curl 'http://localhost:8888/hello.HelloService/Hello' \ -H 'content-type: application/json; charset=utf-8' \ --data-raw $'{"name":"FUST"}' ``` ## 最佳实践 ### 环境管理 - 使用Fust的`Env`类统一环境判断 - 在应用启动早期调用`Env.init()`初始化环境信息 - 在日志中包含环境信息,便于问题排查 ### 配置管理 - 为配置项提供合理的默认值 - 按功能或模块将配置项分组到不同命名空间 - 为关键配置项添加变更监听器 ### 开发计划 - [ ] 用户认证与权限管理 - [ ] 支持上传图片进行多模态对话 - [ ] 历史对话记忆优化 - [ ] 支持更多大模型接入 - [ ] 移动端App开发 - [ ] 多语言支持 ## 贡献指南 欢迎提交Issues和Pull Requests来帮助改进项目。请确保遵循项目的代码风格和提交信息规范。