Walker-Gideon/walkwise-proxy
GitHub: Walker-Gideon/walkwise-proxy
一个极简的 Express 代理服务器,用于在 WalkWise 前端和 Groq API 之间中转聊天请求,防止 API key 暴露给客户端。
Stars: 0 | Forks: 0
# WalkWise Proxy
一个极简的 Express 服务器,用于将来自 WalkWise 前端的聊天请求代理到 Groq API。它的存在只有一个原因:避免将 Groq API key 暴露给客户端。
## 为什么需要它
WalkWise 聊天机器人需要调用 LLM 提供商 (Groq) 来生成回复。如果直接从浏览器调用 Groq,就需要在客户端代码中暴露 API key,因为任何打包到 Vite 应用中的内容(`VITE_*` 环境变量)对于打开 DevTools 的任何人都是可见的。
该服务器位于前端和 Groq 之间:
```
WalkWise (Vercel) → walkwise-proxy (Render) → Groq API
```
Groq key 仅保存在该服务器的环境变量中。客户端永远看不到它。
## 端点
### `POST /api/chat`
接收一段对话并将其转发给 Groq。
**请求体:**
```
{
"messages": [
{ "role": "user", "content": "Explain recursion simply" },
{ "role": "assistant", "content": "Recursion is..." },
{ "role": "user", "content": "Can you give an example?" }
]
}
```
**响应:** 原始的 Groq chat completion 响应。回复的文本位于:
```
response.choices[0].message.content
```
### `GET /health`
返回 `OK`。用于检查服务器是否存活,并在演示前“预热”免费层实例。
## 本地设置
```
npm install
```
在根目录下创建一个 `.env` 文件:
```
GROQ_API_KEY=your_groq_key_here
PORT=3000
```
运行它:
```
npm start
```
服务器启动于 `http://localhost:3000`。
## 部署 (Render)
1. 将此仓库推送到 GitHub
2. 在 [Render](https://render.com) 上创建一个新的 **Web Service**,并连接该仓库
3. Build command: `npm install`
4. Start command: `npm start`
5. 添加环境变量:`GROQ_API_KEY`
6. 部署
Render 会分配一个公开 URL(例如 `https://walkwise-proxy.onrender.com`)—— 前端调用的就是这个地址。
## 注意事项
- **免费层冷启动**:Render 的免费实例会在不活动一段时间后休眠。空闲后的第一个请求可能需要 20-30 秒。在演示前几分钟访问一下 `/health` 进行预热。
- **CORS**:目前是完全开放的(无限制的 `cors()`)。一旦前端 URL 确定下来,请将其严格限制为已部署的 WalkWise 域名。
- **Model**:目前使用的是 `llama-3.3-70b-versatile`。如有需要,请在 `server.js` 中修改。
## 技术栈
- Express
- node-fetch (原生 `fetch`,Node 18+)
- dotenv
- cors
标签:AI应用集成, API密钥保护, Express, GNU通用公共许可证, MITM代理, Node.js, 自定义脚本