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. 在项目根目录下运行:
docker-compose up -d --build

服务将在 http://localhost:7890 启动。

使用预构建镜像部署 (GitHub Packages)

如果不想自己构建,可以直接拉取 GitHub Container Registry 上的镜像:

# 拉取镜像
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. 构建镜像:
docker build -t api-proxy .
  1. 运行容器:
docker run -d -p 7890:7890 --name api-proxy api-proxy

从源码运行

  1. 确保已安装 Go 环境 (推荐 1.21+)。
  2. 运行:
go run main.go

或者编译后运行:

go build -o api-proxy main.go
./api-proxy

默认端口为 7890。你可以通过命令行参数指定端口:

./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)

请进入 站点管理 -> 缓存配置,添加以下规则:

配置项 推荐设置 说明
边缘缓存过期时间
(Edge Cache TTL)
优先遵循源站缓存策略
(如果存在),否则不缓存
由于你在这个站点下还有其他服务,请选择此项。本代理服务会自动发送 Cache-Control: no-cacheCDN 看到后就不会缓存 API 响应,而你站点下的其他静态资源则可以正常缓存。
浏览器缓存过期时间
(Browser Cache TTL)
优先遵循源站 同上,让客户端遵循源站的指令。
查询字符串 保留 (或 遵循源站) 某些 AI API 使用 URL 参数传递版本号或签名,不可忽略。

2. 回源配置 (Origin) - 解决超时问题的关键

ESA 默认的连接超时时间较短(通常 30秒而 AI 模型(特别是推理模型)可能需要 60秒+ 才能生成第一个字。

请进入 站点管理 -> 回源规则 (Origin Rules) -> 新建规则

  1. 规则名称: 任意填写,如 proxy-timeout
  2. 匹配条件:
    • 如果只是代理服务,可以选择 所有传入请求
    • 如果同站点有其他业务,建议选择 主机名 (Host) 等于您的代理域名 (例如 api.example.com)。
  3. 修改配置 (寻找以下选项并修改):
    • 回源超时时间 (Origin Timeout): 修改为 300 秒 (或者最大值)。
      • 重要: 这是防止 Origin Time-out 错误的核心设置。
  4. 保存并发布。

提示: 如果不改这个AI 思考超过 30秒时ESA 会认为源站挂了,直接切断连接。

3. 开发模式 (Debug)

如果配置后仍然有问题,可以暂时开启 “开发模式”。这会强制所有请求绕过缓存节点直接回源,用于排查是否是缓存规则导致的问题。


注意事项

  • 本项目仅作为 API 请求的转发代理,请确保你拥有对应服务的有效 API Key。
  • 代理会透传你的 Authorization 头API Key
  • 首页 (/) 提供了一个简单的状态页面,列出所有可用路由。
  • 隐私: 本服务会自动过滤 X-Forwarded-ForHost 头,保护你的源站 IP。日志中会尝试解析 Ali-Cdn-Real-Ip 以记录真实访问者 IP。
Description
No description provided
Readme 42 KiB
Languages
Go 96.6%
Dockerfile 3.4%