📌 项目地址chenyme/grok2api | ⭐ 5,815 颗星 | 🔧 Go | 📜 未标注

项目要解决的核心问题

Grok 是 xAI 的 AI 模型,它提供了三种不同的接入方式:Grok Build(OAuth 认证)、Grok Web(SSO 单点登录)和 Grok Console(另一种 SSO 接入)。主流 AI 应用要使用 Grok,需要处理这些异构的认证方式、管理多账号的额度与并发、还要将接口转换成 OpenAI 或 Anthropic 的格式。grok2api 用纯 Go 写了一个网关,帮你把这些事情全做了。

项目的核心价值是:将多种 Grok 认证方式(Device OAuth、OAuth JSON、SSO JSON 等)整合成统一的账号池,对外暴露 /v1/*(OpenAI 风格)和 /v1/messages(Anthropic Messages 兼容)接口,并提供带 UI 的管理后台,让你可以像管理 OpenAI API Key 一样管理 Grok 的使用。

实际用法:10 分钟跑起来

快速开始(Docker Compose)

# 1. 克隆仓库并创建配置文件
git clone https://github.com/chenyme/grok2api.git
cd grok2api
cp config.example.yaml config.yaml

# 2. 生成安全密钥并写入 config.yaml
openssl rand -hex 32    # 用于 jwtSecret
openssl rand -base64 32  # 用于 credentialEncryptionKey

# 3. 编辑 config.yaml,至少修改以下字段:
secrets:
  jwtSecret: "替换为 hex 随机值"
  credentialEncryptionKey: "替换为 Base64 随机密钥"

bootstrapAdmin:
  username: "admin"
  password: "替换为强密码"

# 4. 启动
docker compose pull
docker compose up -d

启动后访问 http://127.0.0.1:8000,你会看到管理后台的登录页面。

管理后台操作流程

  1. 用上面配置的 admin 和密码登录。
  2. 进入 上游账号 页面,添加一个或多个 Grok 账号。你可以选择 Provider:
    Grok Build:使用 Device OAuth 扫码授权,或直接粘贴 OAuth JSON。
    Grok Web:粘贴 SSO JSON 或逐行 SSO Token。
    Grok Console:同 Web 的 SSO 方式。
  3. 添加后,系统会自动同步账号的可用额度、模型列表。在 模型管理 中确认对外暴露的模型名称和启用状态。
  4. 进入 客户端密钥 页面,创建一个新的 API Key(格式为 g2a_ 开头)。
  5. 拿着这个 Key,就可以用 OpenAI SDK 或 Anthropic SDK 调用 Grok 了。

API 调用示例(使用 curl):

# OpenAI 风格聊天完成
curl http://127.0.0.1:8000/v1/chat/completions 
  -H "Authorization: Bearer g2a_你的密钥" 
  -H "Content-Type: application/json" 
  -d '{
    "model": "grok-2",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

# Anthropic Messages 风格
curl http://127.0.0.1:8000/v1/messages 
  -H "x-api-key: g2a_你的密钥" 
  -H "anthropic-version: 2023-06-01" 
  -H "Content-Type: application/json" 
  -d '{
    "model": "grok-2",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

注意事项

  • 首次创建管理员后,建议修改密码并从 config.yaml 中删除 bootstrapAdmin 段。
  • credentialEncryptionKey 一旦设置必须长期保留,更换后所有已保存的 Grok 凭据会无法解密。
  • Docker Compose 将 config.yaml 只读挂载到容器,SQLite 数据和本地媒体保存在 grok2api-data 命名卷中。

和同类工具的区别

很多人用过将 ChatGPT 转为 API 的网关(例如 chatgpt-to-api),grok2api 类似,但有几个决定性差异:

  1. 支持三种 Grok Provider:Grok Build、Web、Console,各自独立路由和额度管理,而不仅限于单一登录方式。
  2. 内置管理后台:Dashboard、账号池、模型开关、密钥管理、请求审计、热加载设置,全部可视化,无需手动编辑配置文件。
  3. 安全机制完善:AES-256-GCM 加密存储凭据,客户端密钥只存哈希,日志脱敏,还有 SSRF 防护和传输上限控制。
  4. 后端持久化支持:可选用 SQLite 或 PostgreSQL,运行时缓存支持 Memory 或 Redis,适合长期运行的生产级部署。

需要注意的事项

  • 法律与协议:README 明确声明“仅供学习与研究交流”,使用前必须阅读并遵守 Grok 的使用条款,不要用于非法或商业违规用途。
  • 账号来源风险:通过 Device OAuth 或 SSO JSON 接入的账号,本质上是借用或自有的 Grok 用户凭据。xAI 可能会封禁被滥用的账号,建议使用个人自用的测试账户。
  • 不支持所有 Grok 功能:例如 Grok Build 虽然支持 Billing 和模型同步,但 Console 只提供“无状态 Responses”,功能和 Web 版不完全一致,需要根据实际 Provider 选择。
  • 配置即逻辑:项目不提供反向代理 TLS 支持,生产环境建议在 Gateway 前面使用 Nginx/Caddy 做 HTTPS 终止。

如果你想将 Grok 的能力嵌入自己的工具链,又不想被认证和额度管理拖慢开发进度,grok2api 是一个开箱即用的选择。

这篇文章对你有帮助吗?

发表回复