# 项目名称:高考招生智能咨询支持系统

代码开源于

https://gitee.com/lcm_ccy/call_for_deepseek_system

# 注意所有resource图片均要去网上自己找,据图需要图放在哪里,看resource文件

## 依赖的开源库

本项目依赖了以下开源库,感谢各位开源大佬的慷慨开源

- openai-cpp <https://github.com/olrea/openai-cpp> //调用API库

- maddy <https://github.com/progsource/maddy> //markdownToHtml

- Lucas98Fernando <https://github.com/Lucas98Fernando/login-screen-html-css-js> //登录页面的设计提供

- chatgpt-web <https://github.com/Chanzhaoyu/chatgpt-web.git> //对话界面设计

- Admin_template <https://gitee.com/yinqi/Light-Year-Admin-Using-Iframe-v4> //管理后台模板

## 简介

本项目是一个使用 C++ 和 Qt框架 开发的桌面聊天应用程序。它集成了多种大语言模型API(如OpenAI、DeepSeek等),允许用户与AI进行交互,特别针对高考招生咨询场景进行了优化。此外,项目还包含用户注册、登录、聊天记录管理以及Markdown格式支持,并提供管理员后台用于API密钥和用户管理。

## 使用说明

1. 启动应用程序后,您将看到初始界面。

2. 如果您是新用户,请点击"注册"按钮并填写信息以创建账户。

3. 如果已有账户,请点击"用户"按钮并使用您的凭据登录。

4. 登录后,您可以开始与 AI 进行聊天。

5. 聊天内容支持 Markdown 语法。应用程序后,您将看到初始选择界面,提供管理员和普通用户两种模式。

2. 普通用户模式:

- 如果您是新用户,请点击"注册"按钮并填写信息以创建账户。

- 如果已有账户,请使用您的凭据登录。

- 登录后,您可以开始与 AI 进行聊天。

- 聊天内容支持 Markdown 语法。

3. 管理员模式:

- 点击"管理员"按钮进入管理后台。

- 管理后台包含仪表盘、API管理、模型管理、提示词管理和用户管理等功能。

- 可以添加/编辑/删除 API 密钥、管理可用模型、配置提示词模板、管理用户账户等。。

## 主要功能

- 用户认证:提供用户注册和登录界面,确保用户数据的安全。

- AI 聊天:集成 Deepseek API,实现与智能 AI 的实时聊天功能。

- Markdown 支持:聊天内容支持 Markdown 格式,可以显示格式化的文本、代码块等。

- 聊天记录:保存和管理用户的聊天记录。

- 界面:使用 Qt 构建图形用户界面,提供友好的用户体验。

- 管理后台:基于 Light Year Admin 模板的管理员界面,用于管理用户、API、模型和提示词。

- 多API密钥支持:支持添加并管理多个不同服务提供商(如OpenAI、DeepSeek等)的API密钥。

## 技术栈

- 编程语言:C++ (C++17 标准)

- 图形用户界面:Qt 5 (Widgets, Core, Gui)

- 网络请求:libcurl

- 加密:OpenSSL (用于 RSA 加密和哈希运算)

- JSON 处理:Nlohmann Json

- Markdown 解析:maddy (一个 Markdown 解析库)

- 构建系统:CMake

- 管理后台模板:Light Year Admin Using Iframe v4

## 项目结构

```text

.

├── CMakeLists.txt # CMake 构建配置文件

├── CMakePresets.json # CMake 预设文件

├── README.md # 项目说明文件

├── resources.qrc # Qt 资源文件

├── build/ # 构建输出目录

├── include/ # 头文件目录

│ ├── AdminGUI.hpp # 管理员界面类

│ ├── Call_for_deepseek.hpp # 调用 DeepSeek API 相关

│ ├── initWindow.hpp # 初始窗口类

│ ├── LoginWindow.hpp # 登录窗口类

│ ├── RegisterWindow.hpp # 注册窗口类

│ ├── UserChatWindow.hpp # 用户聊天窗口类

│ ├── UsersRegister.hpp # 用户注册逻辑类

│ ├── maddy/ # maddy Markdown 解析库

│ ├── openai/ # OpenAI C++ 库

│ │ └── openai.hpp

│ └── tools/ # 工具类目录

│ ├── Hash.hpp # 哈希算法工具

│ ├── Logger.hpp # 日志工具

│ ├── markdownTohtml.hpp # maddy 封装工具

│ └── ReadAndWeite.hpp # 文件读写工具

├── openai/ # OpenAI C++ 库源码 (拷贝)

│ └── openai-cpp/

├── opensource/ # 可能包含一些开源组件或参考项目

│ ├── ChatGPT-Web/ # ChatGPT Web 版本参考

│ ├── Light-Year-Admin-Using-Iframe-v4/ # 管理后台模板

│ ├── login-screen-html-css-js/ # 登录页面模板

│ └── maddy/ # maddy Markdown 解析库源码 (拷贝)

├── resource/ # 资源文件目录 (图片、配置文件等)

│ ├── api_key.json # 主API密钥文件

│ ├── api_key1.json # 附加API密钥文件1

│ ├── api_key2.json # 附加API密钥文件2

│ ├── History/ # 存放聊天记录

│ └── user/ # 用户数据目录

├── src/ # 源文件目录

│ ├── AdminGUI.cpp # 管理员界面实现

│ ├── initWindow.cpp # 初始窗口实现

│ ├── LoginWindow.cpp # 登录窗口实现

│ ├── main.cpp # 程序入口

│ ├── MarkdownConverter.cpp # Markdown 转换实现

│ ├── markdownTohtml.cpp # Markdown到HTML转换实现

│ ├── RegisterWindow.cpp # 注册窗口实现

│ ├── RSA.cpp # RSA 加密实现

│ ├── UserChatWindow.cpp # 用户聊天窗口实现

│ └── UserRegister.cpp # 用户注册逻辑实现

└── ...

```

## 构建与运行

### 依赖项

- Ubuntu 22.04

- CMake (== 3.28.0)

- C++ 编译器 (支持 C++17)

- Qt 5 (Widgets, Core, Gui)

- libcurl

- OpenSSL

### 构建步骤

1. 感谢我

2. 创建构建目录并进入

```bash

mkdir build

cd build

```

3. 运行 CMake 配置

```bash

cmake ..

```

4. 编译项目

```bash

make

```

5. 运行程序

可执行文件通常位于 build 目录下。

```bash

./cpp

```

## 使用说明

1. 启动应用程序后,您将看到初始界面。

2. 如果您是新用户,请点击“注册”按钮并填写信息以创建账户。

3. 如果已有账户,请点击“用户”按钮并使用您的凭据登录。

4. 登录后,您可以开始与 AI 进行聊天。

5. 聊天内容支持 Markdown 语法。

## 注意事项

- API 密钥:确保在管理后台中正确配置了您的 API 密钥,系统支持多个API密钥文件(自动命名为 api_key1.jsonapi_key2.json 等)。

- 网络连接:程序需要稳定的网络连接才能与 API 服务通信。

- 依赖库安装:请确保所有必要的依赖库已正确安装在您的系统上。

```bash

sudo apt-get update

sudo apt-get install build-essential cmake qtcreator qt5-default libcurl4-openssl-dev libssl-dev

```

## TODO

- RSA算法实现

- AI记忆功能实现

- AI上下文处理

- 实现用户权限分级管理

- 优化图形化界面

- 错误处理(try catch)

- 提供更多预设提示词模板

- 优化界面响应性能

## 贡献

欢迎对此项目进行贡献!如果您有任何建议或发现任何问题,请随时创建 Issue 或提交 Pull Request。

## 许可证

本项目采用 GNU General Public License v3.0 进行许可。

您应该已经随本项目收到了一份 GNU General Public License v3.0 的副本。如果没有,请参阅 <https://www.gnu.org/licenses/gpl-3.0.html>。

---

本文档最后更新于 2025年6月6日