📌 项目地址: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,你会看到管理后台的登录页面。
管理后台操作流程
- 用上面配置的
admin和密码登录。 - 进入 上游账号 页面,添加一个或多个 Grok 账号。你可以选择 Provider:
– Grok Build:使用 Device OAuth 扫码授权,或直接粘贴 OAuth JSON。
– Grok Web:粘贴 SSO JSON 或逐行 SSO Token。
– Grok Console:同 Web 的 SSO 方式。 - 添加后,系统会自动同步账号的可用额度、模型列表。在 模型管理 中确认对外暴露的模型名称和启用状态。
- 进入 客户端密钥 页面,创建一个新的 API Key(格式为
g2a_开头)。 - 拿着这个 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 类似,但有几个决定性差异:
- 支持三种 Grok Provider:Grok Build、Web、Console,各自独立路由和额度管理,而不仅限于单一登录方式。
- 内置管理后台:Dashboard、账号池、模型开关、密钥管理、请求审计、热加载设置,全部可视化,无需手动编辑配置文件。
- 安全机制完善:AES-256-GCM 加密存储凭据,客户端密钥只存哈希,日志脱敏,还有 SSRF 防护和传输上限控制。
- 后端持久化支持:可选用 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 是一个开箱即用的选择。
这篇文章对你有帮助吗?