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, 自定义脚本