agy2api

skill
Security Audit
Warn
Health Pass
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 5267 GitHub stars
Code Warn
  • network request — Outbound network request in frontend/package-lock.json
  • network request — Outbound network request in frontend/package.json
  • network request — Outbound network request in frontend/src/api.js
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

将 Antigravity 转换为 OpenAI 、GEMINI 和 Claude API 接口

README.md

AGY2API

将 Google Antigravity 转换为 OpenAI、Gemini 和 Claude API 兼容接口

Python 3.12+
License: CNC-1.0
Docker

English | 中文 | 日本語

⚠️ 重要变更:GeminiCLI 端点已被谷歌抛弃,本项目已完全移除 GeminiCLI 相关代码,仅保留 Antigravity 模式。

🚀 快速部署


安装指南

Termux 环境

初始安装

curl -o termux-install.sh "https://raw.githubusercontent.com/su-kaka/agy2api/refs/heads/master/termux-install.sh" && chmod +x termux-install.sh && ./termux-install.sh

重启服务

cd agy2api
bash termux-start.sh

Windows 环境

初始安装

iex (iwr "https://raw.githubusercontent.com/su-kaka/agy2api/refs/heads/master/install.ps1" -UseBasicParsing).Content

重启服务
双击执行 start.bat

Linux 环境

初始安装

curl -o install.sh "https://raw.githubusercontent.com/su-kaka/agy2api/refs/heads/master/install.sh" && chmod +x install.sh && ./install.sh

重启服务

cd agy2api
bash start.sh

macOS 环境

初始安装

curl -o darwin-install.sh "https://raw.githubusercontent.com/su-kaka/agy2api/refs/heads/master/darwin-install.sh" && chmod +x darwin-install.sh && ./darwin-install.sh

重启服务

cd agy2api
bash start.sh

Docker 环境

Docker 运行命令

docker run -d --name agy2api --network host -e API_PASSWORD=api_pwd -e PANEL_PASSWORD=panel_pwd -e PORT=7861 -v $(pwd)/data/creds:/app/creds ghcr.io/su-kaka/agy2api:latest

Docker Compose 运行命令

  1. 使用仓库中的 docker-compose.yml,或参考以下内容:
    version: '3.8'
    
    services:
      agy2api:
        image: ghcr.io/su-kaka/agy2api:latest
        container_name: agy2api
        restart: unless-stopped
        network_mode: host
        environment:
          # 密码配置(分离密码)
          - API_PASSWORD=your_api_password
          - PANEL_PASSWORD=your_panel_password
          - PORT=7861
        volumes:
          - ./data/creds:/app/creds
    
  2. 启动服务:
    docker-compose up -d
    

核心功能

🔄 API 端点和格式支持

Antigravity 多端点多格式支持

  • OpenAI 格式端点:/v1/chat/completions 和 /v1/models
  • Gemini 原生端点:/v1/models/{model}:generateContent 和 streamGenerateContent
  • Claude 格式端点:/v1/messages
  • 支持所有 Antigravity 模型(Claude、Gemini 等)
  • 自动模型名称映射和思维模式检测
  • 多种认证方式:Bearer 头部、x-api-key、x-goog-api-key、URL 参数 key

📊 智能凭证管理系统

  • 多个 Google OAuth 凭证自动轮换(随机负载均衡)
  • 模型级冷却(429 错误自动设置对应模型的 CD)
  • 自动故障检测和凭证禁用
  • 凭证使用统计和配额/额度查询
  • 批量操作(启用、禁用、删除)
  • 按邮箱一键去重
  • 自动获取 Google 账户邮箱地址

🌊 流式传输和响应处理

  • 真正的实时流式响应(SSE)
  • 流式抗截断功能(防止回答被截断,通过"抗截断/"前缀启用)
  • 思维链(Thinking)内容分离
  • 非流式请求可选使用流式 API 收集完整响应(更稳定)

🎛️ Web 管理控制台

基于 React + Vite + Tailwind 编译的现代化前端界面:

  • Antigravity OAuth 认证流程(支持回调 URL 快捷方式)
  • 凭证文件上传(JSON/ZIP)、下载、详情查看
  • 凭证导出(规范 JSON:refresh_token/email/tier/project_id)
  • 系统配置管理(环境变量锁定提示、热更新)
  • 批量凭证操作和状态筛选、批量导入(缺失字段自动获取)
  • 移动端自适应

支持的模型

模型列表从 Antigravity API 动态获取,支持所有 Antigravity 模型:

  • Claude 系列:claude-sonnet-4-5、claude-opus-4-5 等
  • Gemini 系列:gemini-2.5-flash、gemini-3-flash-preview 等

特殊功能变体:

  • 抗截断模式:在模型名称前添加 抗截断/ 前缀
    • 例:抗截断/gemini-2.5-pro
    • 通过合成工具调用绕过截断限制,确保完整回答(流式和非流式均有效)
  • 图像生成模型支持分辨率(-2k、-4k)和比例(-16x9、-9x16 等)后缀

配置说明

  1. 访问 http://127.0.0.1:7861(默认端口,可通过 PORT 环境变量修改)
  2. 完成 Antigravity OAuth 认证流程(默认密码:pwd,可通过环境变量修改)
  3. 配置客户端:

OpenAI 兼容客户端:

  • 端点地址:http://127.0.0.1:7861/v1
  • API 密钥:pwd(默认值,可通过 API_PASSWORD 环境变量修改)

Gemini 原生客户端:

  • 端点地址:http://127.0.0.1:7861
  • 认证方式:Authorization: Bearer 密钥、x-goog-api-key: 密钥 或 URL 参数 ?key=密钥

Claude 客户端:

  • 端点地址:http://127.0.0.1:7861/v1/messages
  • 认证方式:x-api-key: 密钥 或 Authorization: Bearer 密钥

💾 数据存储

存储后端

后端 说明 启用方式
SQLite(默认) 本地文件存储,开箱即用 无需配置,数据存储在 creds/credentials.db
PostgreSQL 云端分布式存储,多实例部署 设置 POSTGRESQL_URI 环境变量

凭证数据结构

凭证使用结构化字段存储(不再使用 JSON blob):
access_token、refresh_token、client_id、client_secret、project_id、expiry

首次启动时自动从旧版 credential_data JSON 格式迁移,无需手动操作。

环境变量配置

基础配置

  • PORT: 服务端口(默认:7861)
  • HOST: 服务器监听地址(默认:0.0.0.0)

密码配置

  • API_PASSWORD: 聊天 API 访问密码(默认:pwd)
  • PANEL_PASSWORD: 控制面板访问密码(默认:pwd)

存储配置

  • CREDENTIALS_DIR: 凭证数据库目录(默认:./creds)
  • POSTGRESQL_URI: PostgreSQL 连接字符串(设置后启用 PostgreSQL 模式)

网络和代理配置

  • PROXY: HTTP/HTTPS 代理地址(格式:http://host:port)
  • OAUTH_PROXY_URL: OAuth 认证代理端点
  • GOOGLEAPIS_PROXY_URL: Google APIs 代理端点
  • ANTIGRAVITY_API_URL: Antigravity API 端点

性能和稳定性配置

  • RETRY_429_ENABLED: 启用错误自动重试(默认:true)
  • RETRY_429_MAX_RETRIES: 最大重试次数(默认:5)
  • RETRY_429_INTERVAL: 重试间隔,秒(默认:1)
  • ANTI_TRUNCATION_MAX_ATTEMPTS: 抗截断最大重试次数(默认:3)

自动化配置

  • AUTO_BAN: 启用凭证自动封禁(默认:false)
  • AUTO_BAN_ERROR_CODES: 触发自动封禁的错误码(默认:403)

兼容性配置

  • COMPATIBILITY_MODE: 启用兼容性模式,将 system 消息转为 user 消息(默认:false)
  • RETURN_THOUGHTS_TO_FRONTEND: 返回思维链到前端(默认:true)
  • ANTIGRAVITY_STREAM2NOSTREAM: 非流式请求使用流式 API 收集完整响应(默认:true)
  • ANTIGRAVITY_SWITCH_CREDENTIAL: 重试时切换凭证(默认:false)

日志配置

  • LOG_LEVEL: 日志级别(DEBUG/INFO/WARNING/ERROR,默认:INFO)
  • ENABLE_LOG: 完全静默,不打印任何日志(设为 0 启用静默,默认:1)

API 使用示例

OpenAI 格式

curl -X POST "http://127.0.0.1:7861/v1/chat/completions" \
  -H "Authorization: Bearer your_api_password" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "messages": [
      {"role": "user", "content": "Hello"}
    ],
    "stream": true
  }'

Gemini 原生格式

curl -X POST "http://127.0.0.1:7861/v1/models/gemini-2.5-flash:generateContent?key=your_api_password" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "Hello"}]}
    ]
  }'

Claude 格式

curl -X POST "http://127.0.0.1:7861/v1/messages" \
  -H "x-api-key: your_api_password" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'

图像生成(Gemini 原生 SDK)

from io import BytesIO
from PIL import Image
from google.genai import Client
from google.genai.types import HttpOptions
from google.genai import types

client = Client(
    api_key="pwd",
    http_options=HttpOptions(base_url="http://127.0.0.1:7861"),
)

prompt = "画一只猫"

response = client.models.generate_content(
    model="gemini-3.1-flash-image",
    contents=[prompt],
    config=types.GenerateContentConfig(
        image_config=types.ImageConfig(
            aspect_ratio="16:9",
        )
    )
)
for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("generated_image.png")

🛠️ 前端开发

控制面板前端源码位于 frontend/ 目录(React + Vite + Tailwind CSS):

cd frontend
npm install
npm run dev     # 开发模式,端口 3000,代理后端 API
npm run build    # 构建到 front/dist/(生产模式使用)

后端直接托管 front/dist/ 下编译后的静态文件,无需 Node.js 运行时。

💬 交流群

欢迎加入 QQ 群交流讨论!

QQ 群号:1083250744

QQ 群二维码

许可证与免责声明

本项目仅供学习研究使用,禁止商业用途和倒卖。

⚠️ 许可证声明

本项目使用 CNC-1.0 许可证(反商业许可证)。

Reviews (0)

No results found