# chatgpt-vue3-light-mvp
💭 一个可二次开发 Chat Bot 对话 Web 端原型模板, 基于 Vue3、Vite 5、TypeScript、Naive UI 、UnoCSS 等主流技术构建, 🧤简单集成大模型 API, 采用单轮 AI 问答对话模式, 每次提问独立响应, 无需上下文, 支持打字机效果流式输出, 集成 markdown-it, highlight.js 语法高亮预览, 💼 易于定制和快速搭建 Chat 类大语言模型产品
__[🌈 Live Demo 在线体验](https://pdsuwwz.github.io/chatgpt-vue3-light-mvp)__
## 🎉 特性
* 🛠️ **核心技术栈**:__Vite 5 + Vue 3 + TypeScript + ESLint (v9)__
* 🎨 **UI 框架**:__Naive UI 2.x__
* 🪄 **解放双手**:内置 **Unplugin Auto Import**,支持组件按需自动导入,提升开发效率
* 🌟 **图标支持**:内置 **UnoCSS + Iconify**,实现原子化样式内联和图标按需自动导入
* 💬 **AI 对话**:支持单轮对话,用户输入即得 AI 独立响应回复,无需上下文
* 📝 **Markdown 预览**:支持多种编程语言代码高亮,集成 `markdown-it` 和 `highlight.js`
* 🧪 **模拟开发模式**:提供本地模拟开发模式,无需真实 API 即可开始开发
* 🔑 **环境变量管理**:通过 `.env` 文件管理 API 密钥,支持不同大模型的配置
* 🌍 **大语言模型 API**:兼容 Spark 星火认知大模型、SiliconFlow、Ollama 等,允许自由扩展
* 🚀 **灵活扩展**:轻量级模块化 MVP 设计,纯前端开发,项目结构清晰,快速搭建 AI 对话原型
## 前置条件
* Vue 3.x
* Node >= 18.12.x
* Pnpm 9.x
* **VS Code 插件 `dbaeumer.vscode-eslint` >= v3.0.5 (pre-release)**
## 运行效果
![image](https://github.com/user-attachments/assets/6a066e66-1501-4816-880f-df37db658934)
![image](https://github.com/user-attachments/assets/71515bdc-1831-4421-b8df-127577d8a24d)
https://github.com/user-attachments/assets/42e8254f-d1bc-42e0-88dd-90279d040ae0
## 安装和运行
* 安装依赖
```bash
pnpm i
```
* 本地开发
```bash
pnpm dev
```
本地运行后,可以通过访问 `http://localhost:2048` 来查看应用。
## 🔑 配置 API 密钥
在运行项目之前,需要设置大语言模型的 API 密钥:
1. 执行以下命令,自动创建环境变量模板文件 `.env` 文件:
```sh
cp .env.template .env
```
2. 编辑 `.env` 文件,填入你的 API 密钥
```sh
VITE_SPARK_KEY=你的_星火_API_Key # 需要用冒号拼接key和secret,格式如 `key123456:secret123456`
VITE_SILICONFLOW_KEY=你的_SiliconFlow_API_Key # 通常以 `sk-` 开头,如 `sk-xxxxxx`
```
## 🌍 模拟/真实 API 模式切换
本项目提供了一个模拟开发模式,用于在本地开发环境或 Github 等部署环境中模拟调用大模型相关策略,无需调用真实 API 接口。该模式在 [src/config/env.ts](src/config/env.ts) 文件中定义,由以下代码控制:
```ts
// src/config/env.ts
const isDev = import.meta.env.DEV
/**
* TODO: 若是本地开发环境、Github 部署环境,则模拟大模型相关策略,不调接口
*/
export const isMockDevelopment = isDev
|| process.env.VITE_ROUTER_MODE === 'hash'
// 打开此行,则会调用真实的大模型接口(需提前配置好 Key)
// export const isMockDevelopment = false
```
### 默认配置
默认情况下,在开发环境或使用 `hash` 路由模式时, `isMockDevelopment` 会被设置为 `true`, 这意味着应用将使用模拟数据而不是真实的大模型 API 接口。
### 切换至真实 API
如果想在所有环境中使用真实的 API,你有两个选择:
1. **取消注释**:将最后一行的代码注释取消,设置 `isMockDevelopment = false`
2. **修改逻辑**:全局搜索 `isMockDevelopment`, 并修改相应的 if 判断逻辑,使其默认使用真实接口
**请注意,无论选择哪种方式,都需要确保项目已经正确配置了 `.env` API 密钥**
### 接口函数修改
请求的函数同样需要修改,找到([src/store/business/index.ts](https://github.com/pdsuwwz/chatgpt-vue3-light-mvp/blob/4887f64a1167051647e54bf8cc23e484ead77b4a/src/store/business/index.ts#L39))的 [`createAssistantWriterStylized`](https://github.com/pdsuwwz/chatgpt-vue3-light-mvp/blob/4887f64a1167051647e54bf8cc23e484ead77b4a/src/store/business/index.ts#L39) 函数,可以发现默认会调用 `spark` 模型接口
改成你需要的模型接口调用即可:
![image](https://github.com/user-attachments/assets/16557cbc-701c-4082-bb62-4fc29c74edd0)
---
## 🦙 接入大语言模型 API
### 国内在线大模型
**1. Spark 星火认知大模型**:
- **注册**:访问 [星火大模型 API](https://xinghuo.xfyun.cn/sparkapi) 进行注册并登录
- **获取 API 密钥**:访问 [控制台](https://console.xfyun.cn/services/bm4) 获取 `APIKey` 和 `APISecret`
![image](https://github.com/user-attachments/assets/8761d59d-b4c3-41d5-9c58-14a5b0f4389c)
- **接口说明**:[spark HTTP 调用文档](https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E)
![image](https://github.com/user-attachments/assets/71334353-b6c1-4778-ae21-95e98860d2b1)
- **配置到本仓库**:将创建的 `APIKey` 和 `APISecret` 密钥用冒号 `:` 拼接填入到 `.env` 文件中的 `VITE_SPARK_KEY` 环境变量
**2. SiliconFlow 大模型**:
- **注册**:访问 [SiliconFlow 官网](https://siliconflow.cn/zh-cn/siliconcloud) 进行注册登录并创建 API 密钥
- **创建 API 密钥**:访问 [账户管理 - API 密钥](https://cloud.siliconflow.cn/account/ak) 创建新 API 密钥
![image](https://github.com/user-attachments/assets/31e1ef13-869a-4695-a7c0-054d2c3e877f)
- **接口说明**:[官方 Chat Completions 在线调试](https://docs.siliconflow.cn/reference/chat-completions-3)
- **配置到本仓库**:将创建的 API 密钥填入 `.env` 文件中的 `VITE_SILICONFLOW_KEY` 环境变量
- **SiliconFlow现已支持的大模型**:[模型列表](https://siliconflow.cn/zh-cn/models)
![image](https://github.com/user-attachments/assets/f320f495-cb17-48ff-99c4-aaedbf87fc84)
### 使用本地 Ollama 大模型
**Ollama3 大模型**:
- **安装**:Ollama3 不需要 API 密钥,只需要在本地安装并运行 Ollama 即可。请参考 Ollama 官方文档进行安装:[Ollama GitHub](https://github.com/ollama/ollama)
- **运行**:运行 Ollama3 服务,直接执行 `ollama run llama3`, 运行后确保其在 `http://localhost:11434` 运行
![image](https://github.com/user-attachments/assets/f3955060-a22d-4db8-b162-7393c10403f6)
- **查看运行状态**:执行 `ollama list`命令可查看当前正在运行的 Ollama 模型
![image](https://github.com/user-attachments/assets/8c6cf637-fd5b-45b5-93c2-f58927b7110c)
---
## 🔌 大模型响应处理
由于不同大模型的响应结果结构有所差异,本项目封装了一个 `model` 字段,用于控制响应结果的转换和字段提取。
### 🧠 已支持的模型
- **(默认类型)模拟数据模型**:`standard`
- **Spark 星火大模型**:`spark`
- **llama 3 大模型**:`ollama3`
- **SiliconFlow 硅基流动大模型**:`siliconflow`
### 🔬 主要实现
- **LLMTypes**: 定义了支持的大模型列表及其对应的 modelName,[详见代码](src/components/MarkdownPreview/transform/index.ts#L39)
- **TransformStreamModelTypes**: 基于 LLMTypes 推导出来的定义的模型名称类型,[详见代码](src/components/MarkdownPreview/transform/index.ts#L58)
- **transformStreamValue**: 包含了针对各种模型的响应结果转换函数,[详见代码](src/components/MarkdownPreview/transform/index.ts#L63)
- **MarkdownPreview 组件**: 接收 `model` props 属性,根据不同模型类型处理流式响应,[详见代码](src/components/MarkdownPreview/index.vue#L15)
### 📚 使用示例
在使用 [`MarkdownPreview`](src/components/MarkdownPreview/index.vue) 组件时,通过设置 `model` 属�
徐浪老师
- 粉丝: 8498
- 资源: 1万+
最新资源
- 汽车损坏识别检测数据集,使用yolov5格式标注,6696张图片,可识别11种损坏类型 识别率在89.7%
- 汽车损坏识别检测数据集,使用yolov7格式标注,6696张图片,可识别11种损坏类型 识别率在89.7%
- 汽车损坏识别检测数据集,使用PASICAL VOC XML格式标注,6696张图片,可识别11种损坏类型 识别率在89.7%
- 大数据分析专业课设-基于Python的城市交通拥堵分析.py
- 汽车损坏识别检测数据集,使用COCO JSON格式标注,6696张图片,可识别11种损坏类型 识别率在89.7%
- 不同颜色圆圈体检测71-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- java音像店租赁管理系统的设计与实现源代码.zip
- 一种FPC弯折贴胶联合机sw18可编辑全套技术资料100%好用.zip
- 六自由度机械臂建模仿真(matlab程序),有控制面板,代码可流畅运行 1、机器人运动学正逆解、动力学建模仿真与轨迹规划,雅克比矩阵求解 2、蒙特卡洛采样画出末端执行器工作空间 3、基于时间最优的改进
- java银行帐目管理系统源代码.zip
- 不同颜色塔形物体检测61-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 西门子1200程序设计案例 三种液体博途PLC博图多种液体HMI仿真液体混合 、包含内容:①三种液体博途PLC与HMI仿真工程(博途V14或以上) 一份;②三种液体配套有IO点表+PLC接线图+主电路
- java游戏设计打飞机程序源代码.zip
- 基于ssm的高校物资采购管理系统源码(java毕业设计完整源码+LW).zip
- 02 基于STM32设计的工地环境实时监测与控制系统.pdf
- 01 基于STM32单片机矿井矿工作业安全监测设计.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈