RajNamann/ai-nexus
GitHub: RajNamann/ai-nexus
AI Nexus 是一个轻量级多供应商AI聊天机器人Web应用,通过统一界面简化与不同AI模型的交互过程。
Stars: 0 | Forks: 0
# AI Nexus 中心
AI Nexus 是一个支持多供应商的AI聊天机器人Web应用。它为用户提供一个简洁统一的聊天界面,允许用户选择AI供应商、选择模型、调整生成设置,并利用本地聊天历史记录继续对话。
该项目有意设计为轻量级。它使用Node.js后端,无需任何外部npm依赖,前端则采用原生HTML、CSS和JavaScript。
## 功能特性
- 支持多个AI供应商的统一聊天界面
- 从用户界面选择供应商和模型
- 可输入自定义模型ID以适应更新或未支持的模型名称
- 调节响应创造力的温度控制
- 可编辑的系统提示
- 浏览器内保存聊天历史记录
- 从侧边栏重新打开先前的对话
- 删除单个聊天记录或清除全部聊天历史
- 暗色渐变UI主题
- 后端API密钥处理,确保密钥不暴露在前端代码中
- 本地Ollama支持,适用于希望本地运行模型的用户
## 支持的供应商
AI Nexus 目前包含以下适配器:
- OpenAI
- Anthropic
- Google Gemini
- Mistral
- Groq
- OpenRouter
- Ollama
云端供应商需要API密钥。Ollama可在本地运行,前提是用户机器上已安装并启动了Ollama。
## 项目结构
```
.
+-- public
| +-- app.js # Frontend chat logic and local chat history
| +-- index.html # Main application markup
| +-- styles.css # Dark gradient UI styling
+-- .env.example # Environment variable template
+-- package.json # Project metadata and scripts
+-- README.md # Project documentation
+-- server.js # Node.js server and AI provider adapters
```
## 环境要求
- Node.js 18 或更新版本
- 你希望使用的任何云端AI供应商的API密钥
- 可选:本地安装Ollama以使用本地模型
## 设置步骤
1. 克隆或打开项目文件夹。
2. 根据 `.env.example` 创建 `.env` 文件。
```
copy .env.example .env
```
在 macOS 或 Linux 上:
```
cp .env.example .env
```
3. 添加你希望使用的API密钥。
```
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key
MISTRAL_API_KEY=your_mistral_key
GROQ_API_KEY=your_groq_key
OPENROUTER_API_KEY=your_openrouter_key
```
你无需添加所有密钥。只添加你计划使用的供应商密钥即可。
4. 启动应用。
```
npm start
```
5. 在浏览器中打开应用。
```
http://localhost:3000
```
## 环境变量
| 变量名 | 用途 |
| ---------------------- | -------------------------------------------------------- |
| `PORT` | 可选服务器端口,默认为 `3000`。 |
| `OPENAI_API_KEY` | 启用 OpenAI 模型。 |
| `ANTHROPIC_API_KEY` | 启用 Anthropic Claude 模型。 |
| `GEMINI_API_KEY` | 启用 Google Gemini 模型。 |
| `MISTRAL_API_KEY` | 启用 Mistral 模型。 |
| `GROQ_API_KEY` | 启用 Groq 托管的模型。 |
| `OPENROUTER_API_KEY` | 启用 OpenRouter 模型。 |
| `OLLAMA_BASE_URL` | 可选 Ollama 服务器URL,默认为 `http://localhost:11434`。 |
## 使用方法
1. 从侧边栏选择一个供应商。
2. 从模型下拉菜单中选择一个模型。
3. 可选输入自定义模型ID。
4. 根据需要调整温度。
5. 如果需要改变助手行为,编辑系统提示。
6. 输入消息并按回车键或点击发送。
应用会将对话发送到所选供应商,并在聊天窗口中显示助手的响应。
## 温度
温度控制模型响应的创造性或可预测性。
- 较低值如 `0.2` 使响应更集中和一致。
- 中等值如 `0.7` 适合一般对话。
- 较高值如 `1.0` 或更高使响应更具创造性但可预测性降低。
## 聊天历史
AI Nexus 使用 `localStorage` 在浏览器中存储聊天历史。
当前行为:
- 消息发送后,对话会自动保存。
- 先前的聊天记录出现在“聊天历史”部分。
- 点击历史记录项可恢复对话。
- 恢复的聊天包含消息、供应商、模型、温度和系统提示。
- 最多存储 30 条最近聊天记录。
- 用户可以删除单条聊天记录或清除全部历史。
重要提示:聊天历史记录仅存储在本地浏览器中。它不会跨设备同步,也不会存储在服务器上。
## API 设计
前端与两个后端端点通信:
### `GET /api/providers`
返回可用的供应商、模型列表以及每个供应商是否已配置。
### `POST /api/chat`
向所选供应商发送聊天请求。
请求体示例:
```
{
"provider": "openai",
"model": "gpt-4o-mini",
"temperature": 0.7,
"messages": [
{
"role": "system",
"content": "You are a helpful AI assistant."
},
{
"role": "user",
"content": "Explain AI Nexus in simple words."
}
]
}
```
响应示例:
```
{
"reply": "AI Nexus is a single chat app that lets you use different AI models from one place."
}
```
## 添加新供应商
可以在 `server.js` 中的 `providers` 对象内添加新供应商。
每个供应商需要:
- `name`:显示给用户的名称
- `envKey`:API密钥的环境变量名
- `models`:默认模型ID列表
- `chat()`:向供应商发送消息并返回文本的函数
示例结构:
```
customProvider: {
name: "Custom Provider",
envKey: "CUSTOM_PROVIDER_API_KEY",
models: ["custom-model-name"],
async chat({ model, messages, temperature }) {
// Send request to provider here.
return "Assistant response text";
}
}
```
如果供应商支持 OpenAI 聊天完成格式,可以复用现有的 `openAiCompatibleChat()` 辅助函数。
## 使用 Ollama 的本地AI
AI Nexus 默认包含一个 Ollama 供应商。
使用方法:
1. 安装 Ollama。
2. 拉取一个模型,例如:
```
ollama pull llama3.1
```
3. 确保 Ollama 正在运行。
4. 在 AI Nexus 内选择 Ollama。
如果你的 Ollama 服务器运行在另一个URL,请更新:
```
OLLAMA_BASE_URL=http://localhost:11434
```
## 安全说明
- API密钥应仅存储在 `.env` 文件中。
- 不要将API密钥放在 `public/app.js`、`index.html` 或任何前端文件中。
- 不要将 `.env` 文件提交到公开仓库。
- 当前项目不包含用户账户、身份验证或服务器端对话存储。
## 测试
项目当前使用简单的语法和冒烟检查。
运行 JavaScript 语法检查:
```
node --check server.js
node --check public/app.js
```
启动应用:
```
npm start
```
然后打开:
```
http://localhost:3000
```
你也可以验证供应商端点:
```
http://localhost:3000/api/providers
```
## 当前限制
- 无用户登录系统
- 无数据库
- 聊天历史仅限浏览器
- 尚无流式响应
- 尚无文件上传支持
- 尚无网络搜索或检索模式
- 随着供应商发布新模型,供应商模型列表可能需要更新
## 未来可能的改进
- 流式AI响应
- 网络搜索模式
- 用户账户
- 服务器端聊天历史
- 将聊天导出为 Markdown 或 PDF
- 重命名聊天记录
- 搜索聊天历史
- 文件上传与文档分析
- 语音输入
- 图像生成支持
## 致谢
由 Naman Raj Srivastava 开发。
标签:AI模型管理, AI聊天界面, API集成, GNU通用公共许可证, MITM代理, Node.js, Syscall, Web开发, 人工智能, 可观测性, 后端开发, 多供应商AI, 多模态安全, 数据可视化, 暗色主题, 本地AI, 模型选择, 温度控制, 用户模式Hook绕过, 用户界面, 系统提示, 聊天历史, 软件开发, 轻量级应用