|
30 | 30 | ## ✨ 功能亮点 |
31 | 31 |
|
32 | 32 | ### 核心 AI 能力 |
33 | | -- 🤖 **广泛的模型支持**: 原生支持 Gemini 系列 (`2.5 Pro`, `Flash`)、Imagen 系列 (`3`, `4`) 图像生成模型以及文本转语音 (TTS) 模型。这是一个真正意义上的多模态AI应用平台。 |
| 33 | +- 🤖 **广泛的模型支持**: 原生支持 Gemini 系列 (`2.5 Pro`, `Flash`, `Flash Lite`)、Imagen 系列 (`3.0`, `4.0`) 图像生成模型以及文本转语音 (TTS) 模型。这是一个真正意义上的多模态AI应用平台。 |
| 34 | +- 🛠️ **强大的工具集**: 无缝集成 Google 的强大工具,增强模型能力: |
| 35 | + - 🌐 **网页搜索**: 允许模型访问实时信息以回答时事问题,并提供引用来源。 |
| 36 | + - 💻 **代码执行器**: 让模型能够执行代码来解决计算问题、分析数据。 |
| 37 | + - 🔗 **URL 上下文**: 允许模型读取和理解您提供的 URL 内容。 |
34 | 38 | - ⚙️ **高级AI参数控制**: 精确调整 `Temperature` 和 `Top-P` 参数,以控制AI回复的创造性与确定性。您还可以为任意对话设置自定义的**系统指令 (System Prompt)**,从而塑造AI的性格和行为模式。 |
35 | | -- 🤔 **展示“思考过程”**: 洞察模型(如 Gemini Flash)在生成回答前的中间思考步骤。此功能非常适合用于调试和理解AI的推理过程,您甚至可以配置“思考预算”来平衡质量与速度。 |
| 39 | +- 🤔 **展示“思考过程”**: 洞察模型(如 Gemini 2.5 Flash/Pro)在生成回答前的中间思考步骤。此功能非常适合用于调试和理解AI的推理过程,您甚至可以配置“思考预算”来平衡质量与速度。 |
36 | 40 | - 🎙️ **语音转文本 (STT)**: 使用强大的 Gemini 模型将您的语音实时转录为文字输入,准确率远超浏览器标准API。您甚至可以在设置中选择不同的 Gemini 模型用于转录。 |
37 | 41 | - 🔊 **文本转语音 (TTS)**: 将模型的文本回答一键转换为流畅的语音,并提供多种高质量音色供您选择,实现“听”AI的功能。 |
38 | | -- 🌐 **Google 搜索增强**: 让模型能够联网搜索最新信息,以回答有关时事、新闻或其训练数据范围之外的主题。所有联网回答都会附带引用来源,方便您核实信息。 |
39 | 42 | - 🎨 **画布助手 (Canvas Assistant)**: 一个特别设计的系统指令,能将AI变为一名前端开发助手,生成丰富、可交互的 HTML/SVG 网页内容,例如使用 ECharts 创建图表、使用 Graphviz 生成流程图等。 |
40 | 43 |
|
41 | 44 | ### 高级文件处理 |
42 | | -- 📎 **丰富的文件支持**: 轻松上传和处理多种文件类型,包括**图片**、**音频**、**PDF文档**以及各类**代码和文本文件**。 |
| 45 | +- 📎 **丰富的文件支持**: 轻松上传和处理多种文件类型,包括**图片**、**视频**、**音频**、**PDF文档**以及各类**代码和文本文件**。 |
43 | 46 | - 🖐️ **多样化的上传方式**: 提供了极致便利的文件上传体验,支持**拖拽**、从剪贴板**粘贴**、使用**文件选择器**,甚至可以直接调用**摄像头拍照**或使用**麦克风录音**。 |
44 | 47 | - ✍️ **即时创建文本文件**: 无需离开应用,即可在应用内快速创建和编辑文本文件,并将其作为上下文提交给模型。 |
45 | 48 | - 🆔 **通过文件ID引用**: 对于高级用户,您可以直接引用已上传到 Gemini API 的文件(使用其 `files/...` ID),无需重复上传,节省时间和带宽。 |
|
48 | 51 |
|
49 | 52 | ### 强化的聊天体验 |
50 | 53 | - 📚 **持久化聊天历史**: 所有对话都会自动保存在您的浏览器本地存储 (`localStorage`) 中,确保了数据隐私,并允许您随时回顾过往的交流。 |
| 54 | +- 📂 **对话分组**: 将您的聊天会话整理到可折叠的群组中,便于管理和查找。 |
51 | 55 | - 🎭 **场景管理**: 创建、保存、导入和导出“聊天模板”。这使得您可以快速设定复杂的对话背景(如编程问题、角色扮演),极大提升了沟通效率。 |
52 | 56 | - ✏️ **完全的消息控制**: 您可以**编辑**、**删除**或**重试**任何一条消息。智能编辑功能(编辑用户提示)会自动从该点截断并重新提交对话,从而正确地维持上下文。 |
53 | | -- 🖼️ **导出消息**: 将模型的精彩回答保存为高质量的**PNG图片**(便于分享)或一个包含所有格式的**独立HTML文件**。 |
| 57 | +- 📥 **导出对话与消息**: 将整个对话导出为 **PNG 图片**、**HTML 文件** 或 **TXT 文件**。您还可以将单条模型回复单独导出为 PNG 或 HTML。 |
54 | 58 | - ⌨️ **键盘快捷键**: 专为效率爱好者设计,提供新建对话、切换模型、打开日志等多种快捷键,让操作行云流水。 |
55 | 59 | - 🛠️ **日志查看器与调试工具**: 内置的日志查看器让高级用户可以洞察应用的内部行为、API调用详情以及API密钥的使用情况(当提供多个密钥时)。 |
56 | 60 |
|
57 | 61 | ## 🚀 快速开始 |
58 | 62 |
|
59 | | -### 1. 在线使用 (推荐) |
60 | | -本应用旨在浏览器中直接使用,无需任何安装配置。 |
| 63 | +本应用旨在浏览器中直接使用,无需任何后端或安装配置。 |
61 | 64 |
|
62 | 65 | 1. **打开应用**: 访问 **[all-model-chat.pages.dev](https://all-model-chat.pages.dev/)**。 |
63 | | -2. **打开设置**: 点击右上角的齿轮图标 (⚙️)。 |
| 66 | +2. **打开设置**: 点击页面右上角的齿轮图标 (⚙️)。 |
64 | 67 | 3. **启用自定义配置**: 在“API 配置”部分,打开“使用自定义 API 配置”的开关。 |
65 | | -4. **输入您的 API 密钥**: 将您的 Google Gemini API 密钥粘贴到文本框中。您可以从 **[Google AI Studio](https://aistudio.google.com/app/apikey)** 获取密钥。支持每行输入一个,以使用多个密钥。 |
| 68 | +4. **输入您的 API 密钥**: 将您的 Google Gemini API 密钥粘贴到文本框中。您可以从 **[Google AI Studio](https://aistudio.google.com/app/apikey)** 获取密钥。支持每行输入一个,以使用多个密钥轮换。 |
66 | 69 | 5. **保存并开始聊天**: 点击“保存”。您的密钥将安全地存储在您浏览器的 `localStorage` 中,绝不会发送到任何其他地方。 |
67 | 70 |
|
68 | | -### 2. 本地开发 (可选) |
69 | | -如果您希望在本地运行此应用以进行开发: |
70 | | - |
71 | | -1. **克隆仓库**: |
72 | | - ```bash |
73 | | - git clone https://github.com/yeahhe365/All-Model-Chat.git |
74 | | - cd All-Model-Chat |
75 | | - ``` |
76 | | - |
77 | | -2. **安装依赖**: |
78 | | - ```bash |
79 | | - npm install |
80 | | - ``` |
81 | | - |
82 | | -3. **配置 API 密钥**: |
83 | | - 在项目根目录创建一个 `.env` 文件,并添加您的密钥: |
84 | | - ``` |
85 | | - VITE_API_KEY="YOUR_GEMINI_API_KEY" |
86 | | - ``` |
87 | | - *注意: 应用会优先使用在UI设置中输入的密钥,而不是 `.env` 文件中的。* |
88 | | - |
89 | | -4. **运行开发服务器**: |
90 | | - ```bash |
91 | | - npm run dev |
92 | | - ``` |
93 | | - 在浏览器中打开 `http://localhost:5173` (或终端中显示的地址)。 |
94 | | - |
95 | 71 | ## 🛠️ 技术栈 |
96 | 72 |
|
97 | 73 | * **框架**: React 19 & TypeScript |
98 | 74 | * **AI SDK**: `@google/genai` |
99 | 75 | * **样式**: Tailwind CSS (通过 CDN) & CSS 变量(用于主题化) |
100 | | -* **Markdown 与渲染**: `react-markdown`, `remark-gfm`, `remark-math`, `rehype-highlight`, `rehype-katex`, `highlight.js`, `DOMPurify` |
| 76 | +* **Markdown 与渲染**: `react-markdown`, `remark-gfm`, `remark-math`, `rehype-highlight`, `rehype-katex`, `highlight.js`, `DOMPurify`, `mermaid`, `viz.js` |
101 | 77 | * **图片导出**: `html2canvas` |
102 | 78 | * **模块加载**: 现代 ES 模块 & Import Maps (通过 `esm.sh`) |
103 | 79 | * **图标**: Lucide React |
|
107 | 83 |
|
108 | 84 | ``` |
109 | 85 | All-Model-Chat/ |
110 | | -├── public/ # 静态资源 (图标, manifest.json, sw.js) |
| 86 | +├── public/ # 静态资源 (manifest.json, sw.js) |
111 | 87 | ├── src/ |
112 | 88 | │ ├── components/ # React UI 组件 (头部, 聊天输入, 模态框等) |
113 | | -│ │ ├── chat/ # 聊天输入子组件 (文件预览, 摄像头捕获) |
114 | | -│ │ ├── message/ # 消息渲染子组件 (代码块, 搜索增强响应) |
115 | | -│ │ └── settings/ # 设置面板模块 (API配置, 外观) |
116 | | -│ ├── constants/ # 应用全局常量 (app, 主题, 文件, 指令默认值) |
| 89 | +│ │ ├── chat/ # 聊天输入子组件 |
| 90 | +│ │ ├── layout/ # 布局组件 |
| 91 | +│ │ ├── message/ # 消息渲染子组件 (代码块, 图表) |
| 92 | +│ │ ├── modals/ # 应用级模态框 |
| 93 | +│ │ ├── shared/ # 可复用的通用组件 |
| 94 | +│ │ └── settings/ # 设置面板模块 |
| 95 | +│ ├── constants/ # 应用全局常量 (app, 主题, 文件, 模型) |
117 | 96 | │ ├── hooks/ # ✨ 应用核心逻辑所在地 |
118 | 97 | │ │ ├── useChat.ts # 组织所有功能的主 Hook |
119 | 98 | │ │ ├── useAppSettings.ts # 管理全局设置、主题和语言 |
120 | | -│ │ ├── useChatHistory.ts # 处理聊天会话的加载与保存 |
121 | | -│ │ ├── useFileHandling.ts# 所有文件上传和拖拽的逻辑 |
122 | | -│ │ └── useMessageHandler.ts# 封装发送消息和相关操作 (编辑, 删除) |
| 99 | +│ │ └── ... (其他自定义 Hooks) |
123 | 100 | │ ├── services/ # 外部服务封装 |
| 101 | +│ │ ├── api/ # 模块化的 API 调用函数 |
124 | 102 | │ │ ├── geminiService.ts# 封装所有对 Google GenAI API 的调用 |
125 | 103 | │ │ └── logService.ts # 为日志查看器提供应用内日志服务 |
126 | | -│ ├── utils/ # 工具函数 (翻译, 格式化等) |
| 104 | +│ ├── utils/ # 工具函数 |
| 105 | +│ │ ├── translations/ # 语言翻译文件 |
| 106 | +│ │ └── ... (API, 领域, UI 相关的工具函数) |
127 | 107 | │ ├── App.tsx # 应用根组件 |
128 | 108 | │ ├── index.tsx # React 应用入口文件 |
129 | 109 | │ └── types.ts # 核心 TypeScript 类型定义 |
130 | 110 | │ |
131 | | -├── index.html # 主 HTML 文件,包含 import maps |
132 | | -└── ... (其他配置文件: vite.config.ts, tsconfig.json 等) |
| 111 | +├── index.html # 主 HTML 文件,包含 import maps 和核心样式 |
| 112 | +└── README.md |
133 | 113 | ``` |
134 | 114 |
|
135 | 115 | ## 🤝 参与贡献 |
|
0 commit comments