Initial commit: NekoAI Cloudflare chat app
This commit is contained in:
134
README.md
Normal file
134
README.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# NekoAI
|
||||
|
||||
一个部署在 Cloudflare 上的极简网页聊天工具:
|
||||
|
||||
- OpenAI 兼容接口
|
||||
- 单访问密钥鉴权
|
||||
- 动态读取 `/v1/models`
|
||||
- 本地浏览器保存聊天记录
|
||||
- 不依赖数据库
|
||||
- 前后端分离:**Pages 前端 + Workers API**
|
||||
|
||||
## 项目结构
|
||||
|
||||
- `src/index.js`:Cloudflare Worker API
|
||||
- `public/`:Cloudflare Pages 前端静态文件
|
||||
- `public/config.js`:前端 API 地址配置
|
||||
- `wrangler.toml`:Workers API 配置
|
||||
- `.dev.vars.example`:本地开发环境变量示例
|
||||
|
||||
## 需要的环境变量
|
||||
|
||||
Workers API 需要:
|
||||
|
||||
- `OPENAI_BASE_URL`:你的 OpenAI 兼容接口地址(不要带 `/v1/models`)
|
||||
- `OPENAI_API_KEY`:上游 API Key
|
||||
- `ACCESS_KEY`:给朋友使用的共享访问密钥
|
||||
- `ALLOWED_ORIGIN`:允许访问 API 的前端站点域名(可选)
|
||||
|
||||
例如:
|
||||
|
||||
```env
|
||||
OPENAI_BASE_URL="https://api.example.com"
|
||||
OPENAI_API_KEY="sk-xxxx"
|
||||
ACCESS_KEY="nekoai-2026"
|
||||
ALLOWED_ORIGIN="https://nekoai.pages.dev"
|
||||
```
|
||||
|
||||
## 本地运行 API
|
||||
|
||||
先安装依赖:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
cp .dev.vars.example .dev.vars
|
||||
```
|
||||
|
||||
然后启动 Worker API:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 部署方式
|
||||
|
||||
### 1. 部署 Workers API
|
||||
|
||||
先登录 Wrangler:
|
||||
|
||||
```bash
|
||||
npx wrangler login
|
||||
```
|
||||
|
||||
设置线上 secrets:
|
||||
|
||||
```bash
|
||||
npx wrangler secret put OPENAI_BASE_URL
|
||||
npx wrangler secret put OPENAI_API_KEY
|
||||
npx wrangler secret put ACCESS_KEY
|
||||
npx wrangler secret put ALLOWED_ORIGIN
|
||||
```
|
||||
|
||||
部署:
|
||||
|
||||
```bash
|
||||
npm run deploy
|
||||
```
|
||||
|
||||
默认 Worker 名称:
|
||||
- `nekoai-api`
|
||||
|
||||
默认地址类似:
|
||||
- `https://nekoai-api.<your-subdomain>.workers.dev`
|
||||
|
||||
### 2. 部署 Pages 前端
|
||||
|
||||
把 `public/` 目录作为静态站点部署到 Cloudflare Pages。
|
||||
|
||||
在正式部署前,修改:
|
||||
|
||||
- `public/config.js`
|
||||
|
||||
把里面的:
|
||||
|
||||
```js
|
||||
window.NEKOAI_CONFIG = {
|
||||
API_BASE_URL: "https://nekoai-api.git.llc"
|
||||
};
|
||||
```
|
||||
|
||||
改成你自己的 Workers API 地址。
|
||||
|
||||
## 当前接口
|
||||
|
||||
### `GET /api/models`
|
||||
- 需要 `Authorization: Bearer <ACCESS_KEY>`
|
||||
- Worker 代理上游 `/v1/models`
|
||||
- 不做 fallback
|
||||
|
||||
### `POST /api/chat`
|
||||
- 需要 `Authorization: Bearer <ACCESS_KEY>`
|
||||
- 代理上游 `/v1/chat/completions`
|
||||
- 支持流式返回
|
||||
|
||||
## 当前实现说明
|
||||
|
||||
这是一个最简可跑版本,特点是:
|
||||
|
||||
- 不接数据库
|
||||
- 不做用户系统
|
||||
- 不做聊天记录云端同步
|
||||
- 模型列表不写死
|
||||
- 上游失败就直接报错
|
||||
- 前端和 API 分离部署
|
||||
|
||||
## 后续可以继续加的东西
|
||||
|
||||
- Markdown 渲染
|
||||
- 代码高亮
|
||||
- 删除会话
|
||||
- 导出会话
|
||||
- IP 限流
|
||||
- 模型过滤
|
||||
- 自定义系统提示词
|
||||
- 自定义域名
|
||||
Reference in New Issue
Block a user