Files
api-proxy/README.md

147 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI API Proxy
这是一个轻量级的 API 代理服务,旨在统一和简化对各种 AI 服务 API 的访问。它使用 Go 语言编写,支持 Docker 部署。
## 功能特性
- **多平台支持**: 代理了众多流行的 AI 和聊天服务 API。
- **简单路由**: 通过 URL 前缀将请求路由 to 相应的官方 API 端点。
- **Web 界面**: 提供一个简单的 HTML 首页,列出所有支持的 API 路由。
- **隐私保护**: 过滤掉某些可能泄露信息的请求头(如 host, referer, cf- 等)。
- **轻量级**: 基于 Go 语言,编译后体积小,运行资源占用低。
## 支持的 API 映射
该代理将以下本地路径映射到对应的官方 API 地址:
| 路由前缀 | 目标 API 地址 |
| :--- | :--- |
| `/discord` | `https://discord.com/api` |
| `/telegram` | `https://api.telegram.org` |
| `/openai` | `https://api.openai.com` |
| `/claude` | `https://api.anthropic.com` |
| `/gemini` | `https://generativelanguage.googleapis.com` |
| `/meta` | `https://www.meta.ai/api` |
| `/groq` | `https://api.groq.com/openai` |
| `/xai` | `https://api.x.ai` |
| `/cohere` | `https://api.cohere.ai` |
| `/huggingface` | `https://api-inference.huggingface.co` |
| `/together` | `https://api.together.xyz` |
| `/novita` | `https://api.novita.ai` |
| `/portkey` | `https://api.portkey.ai` |
| `/fireworks` | `https://api.fireworks.ai` |
| `/openrouter` | `https://openrouter.ai/api` |
| `/cerebras` | `https://api.cerebras.ai` |
## 快速开始
### 使用 Docker Compose (推荐)
1. 确保已安装 Docker 和 Docker Compose。
2. 克隆本仓库或下载文件。
3. 在项目根目录下运行:
```bash
docker-compose up -d --build
```
服务将在 `http://localhost:7890` 启动。
### 使用预构建镜像部署 (GitHub Packages)
如果不想自己构建,可以直接拉取 GitHub Container Registry 上的镜像:
```bash
# 拉取镜像
docker pull ghcr.io/handsomezhuzhu/api-proxy:latest
# 运行容器
docker run -d -p 7890:7890 --name api-proxy ghcr.io/handsomezhuzhu/api-proxy:latest
```
### 使用 Docker
1. 构建镜像:
```bash
docker build -t api-proxy .
```
2. 运行容器:
```bash
docker run -d -p 7890:7890 --name api-proxy api-proxy
```
### 从源码运行
1. 确保已安装 Go 环境 (推荐 1.21+)。
2. 运行:
```bash
go run main.go
```
或者编译后运行:
```bash
go build -o api-proxy main.go
./api-proxy
```
默认端口为 `7890`。你可以通过命令行参数指定端口:
```bash
./api-proxy 8080
```
## 使用示例
假设你的服务运行在 `http://localhost:7890`
**访问 OpenAI API:**
你可以将原本发往 `https://api.openai.com/v1/chat/completions` 的请求改为发往:
`http://localhost:7890/openai/v1/chat/completions`
**访问 Claude (Anthropic) API:**
将请求发往:
`http://localhost:7890/claude/v1/messages`
## 阿里云 ESA (边缘安全加速) 配置指南
如果你使用了阿里 ESA 加速本服务,**必须**在 ESA 控制台中进行以下设置,否则会出现 `Origin Time-out` (源站超时) 或 AI 回复卡顿(打字机效果失效)的问题。
### 1. 缓存配置 (Cache)
请进入 **站点管理** -> **缓存配置**,添加以下规则:
| 配置项 | 推荐设置 | 说明 |
| :--- | :--- | :--- |
| **边缘缓存过期时间** <br> (Edge Cache TTL) | **优先遵循源站缓存策略** <br> (如果存在),否则不缓存 | **由于你在这个站点下还有其他服务**,请选择此项。本代理服务会自动发送 `Cache-Control: no-cache`CDN 看到后就不会缓存 API 响应,而你站点下的其他静态资源则可以正常缓存。 |
| **浏览器缓存过期时间** <br> (Browser Cache TTL) | **优先遵循源站** | 同上,让客户端遵循源站的指令。 |
| **查询字符串** | **保留** (或 遵循源站) | 某些 AI API 使用 URL 参数传递版本号或签名,不可忽略。 |
### 2. 回源配置 (Origin) - 解决超时问题的关键
ESA 默认的连接超时时间较短(通常 30秒而 AI 模型(特别是推理模型)可能需要 60秒+ 才能生成第一个字。
请进入 **站点管理** -> **回源配置**
* **读超时时间 (Read Timeout)**: 修改为 **120秒****300秒**
* *说明*: 如果不改这个AI 思考超过 30秒时ESA 会认为源站挂了,直接切断连接并报 `Origin Time-out`
### 3. 开发模式 (Debug)
如果配置后仍然有问题,可以暂时开启 **“开发模式”**。这会强制所有请求绕过缓存节点直接回源,用于排查是否是缓存规则导致的问题。
---
## 注意事项
- 本项目仅作为 API 请求的转发代理,请确保你拥有对应服务的有效 API Key。
- 代理会透传你的 Authorization 头API Key
- 首页 (`/`) 提供了一个简单的状态页面,列出所有可用路由。
- **隐私**: 本服务会自动过滤 `X-Forwarded-For``Host` 头,保护你的源站 IP。日志中会尝试解析 `Ali-Cdn-Real-Ip` 以记录真实访问者 IP。