Spaces:
Paused
title: CHATSAM - ChatGPT2API 数据持久化版本
emoji: 🎨
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
CHATSAM - ChatGPT2API
一键部署到 HuggingFace Spaces,支持数据持久化 + 防止休眠
📖 项目说明 • 🚀 一键部署 • 📦 数据持久化 • ⚡ 防止休眠 • 🔧 配置修改
📖 项目说明
项目来源
本项目基于 basketikun/chatgpt2api 进行二次开发和优化。
原项目功能:
- ChatGPT 官网图片生成、图片编辑能力的逆向封装
- OpenAI 兼容图片 API / 代理
- 在线画图、号池管理、多种账号导入方式
- Docker 自托管部署能力
本项目新增功能:
- ✅ 数据持久化 - 支持 Git 仓库存储,防止数据丢失
- ✅ 防止休眠 - GitHub Actions 自动保活,24小时在线
- ✅ 一键部署 - 完整部署文档,快速部署到 HuggingFace
- ✅ 普通用户额度显示 - 修复普通用户不显示剩余额度的问题
致谢
感谢以下项目和开发者:
| 项目/开发者 | 贡献 |
|---|---|
| basketikun | 原项目作者,核心功能开发 |
| chatgpt2api Contributors | 所有贡献者 |
| LinuxDO | 社区支持 |
如果这个项目对你有帮助,请给原项目 basketikun/chatgpt2api 一个 ⭐ Star!
🚀 一键部署到 HuggingFace
步骤 1:创建 HuggingFace Space
HuggingFace Spaces 是 HuggingFace 提供的免费托管平台,可以运行 Docker 容器。
- 登录 HuggingFace
- 点击右上角 **"Create Space"**(创建空间)
- 填写信息:
- Space name: 你的项目名称(如
my-chatsam) - SDK: 选择 Docker(容器运行环境)
- Hardware: 选择 CPU basic(免费,2核CPU,16GB内存)
- Space name: 你的项目名称(如
- 点击 **"Create Space"**(创建空间)
步骤 2:克隆此项目并推送
克隆 是从 GitHub 下载项目代码到本地。
# 克隆此项目(从 GitHub 下载代码)
git clone https://github.com/chanzsam/CHATSAM-Public.git
cd CHATSAM-Public
# 添加 HuggingFace 远程仓库(连接到你的 HF Space)
git remote add hf https://huggingface.co/spaces/<你的HF用户名>/<你的Space名称>
# 推送到 HuggingFace(上传代码到 HF)
git push hf main
步骤 3:配置管理员密码
Secrets 是 HuggingFace 提供的加密存储,用于保存敏感信息(如密码、Token)。
在 Space 的 Settings → Variables and secrets 中添加:
| Secret 名称 | Secret 值 | 中文说明 |
|---|---|---|
CHATGPT2API_AUTH_KEY |
你的管理员密码 |
管理员登录密码,建议使用强密码 |
📦 数据持久化(防止数据丢失)
为什么需要数据持久化?
HuggingFace Spaces 使用 **临时存储 (Ephemeral Storage)**:
| 问题 | 原因 | 结果 |
|---|---|---|
| 48小时无访问 | 容器休眠 | 数据丢失 |
| 推送新代码 | 容器重建 | 数据丢失 |
| 资源限制重启 | 内存超限 | 数据丢失 |
解决方案:使用 Git 仓库存储后端,数据永久保存!
配置步骤
0️⃣ 创建 GitHub Personal Access Token(必需)
Personal Access Token (PAT) 是 GitHub 的访问令牌,用于授权第三方应用访问你的仓库。
- 访问 GitHub Token 设置
- 点击 **"Generate new token (classic)"**(生成新令牌)
- 填写信息:
- Note:
CHATSAM Data Storage(令牌名称) - Expiration:
No expiration(永不过期,或选择较长时间) - Select scopes: 选择 **
repo**(完整仓库访问权限)
- Note:
- 点击 **"Generate token"**(生成令牌)
- ⚠️ 复制 Token(只显示一次,请妥善保存)
1️⃣ 创建 GitHub 数据存储仓库
数据仓库 是专门用于存储项目数据的 GitHub 仓库,建议设置为私有。
方式 A:使用一键脚本(推荐)
# 克隆项目
git clone https://github.com/chanzsam/CHATSAM-Public.git
cd CHATSAM-Public
# 安装依赖
pip install requests
# 运行一键脚本
python scripts/create_data_repo.py --token ghp_xxxxxxxxxxxx --repo-name my-chatsam-data
脚本功能:
- ✅ 自动创建私有仓库
- ✅ 自动创建
accounts.json和auth_keys.json文件 - ✅ 自动推送到 GitHub
- ✅ 输出配置信息,方便复制到 HuggingFace
参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
--token |
GitHub Personal Access Token | 从环境变量 GITHUB_TOKEN 读取 |
--repo-name |
仓库名称 | chatsam-data |
--public |
创建公开仓库 | 默认私有 |
方式 B:手动创建
- 在 GitHub 创建一个新的私有仓库(如
my-chatsam-data) - 在仓库中创建以下文件:
accounts.json - 存储账号信息
{
"items": []
}
auth_keys.json - 存储用户认证密钥
{
"items": []
}
- 推送到 GitHub
2️⃣ 配置 HuggingFace Secrets
在 Space 的 Settings → Variables and secrets 中添加:
| Secret 名称 | Secret 值 | 中文说明 |
|---|---|---|
STORAGE_BACKEND |
git |
存储后端类型,使用 Git 存储 |
GIT_REPO_URL |
https://github.com/<你的用户名>/<数据仓库名>.git |
数据仓库地址 |
GIT_TOKEN |
ghp_xxxxxxxxxxxx |
GitHub 访问令牌 |
3️⃣ 重启 Space
添加 Secrets 后:
- 回到 Space 主页
- 点击右上角 "⋯" → **"Factory reboot"**(工厂重启)
- 等待约 5-10 分钟重新构建
4️⃣ 验证数据持久化
- 登录你的 Space
- 添加一个测试用户
- 检查 GitHub 数据仓库是否有新提交
- 重启 Space,验证数据是否保留
⚡ 防止休眠(24小时在线)
为什么需要防止休眠?
HuggingFace Spaces 免费 48 小时无访问会自动休眠:
| 问题 | 影响 |
|---|---|
| 休眠后冷启动 | 需要 1-3 分钟 |
| 用户体验不佳 | 等待时间长 |
解决方案:使用 GitHub Actions 每 12 小时自动访问!
配置步骤
1️⃣ Fork 此项目到你的 GitHub
Fork 是复制别人的 GitHub 项目到你的账号下。
访问 https://github.com/chanzsam/CHATSAM-Public 并点击 "Fork"
2️⃣ 启用 GitHub Actions
GitHub Actions 是 GitHub 提供的自动化工作流服务。
- 进入你的 Fork 仓库
- 点击 Settings → Actions → General
- 选择 **"Allow all actions and reusable workflows"**(允许所有工作流)
- 点击 **"Save"**(保存)
3️⃣ 修改保活 Workflow
Workflow 是 GitHub Actions 的自动化任务配置文件。
编辑 .github/workflows/keep-alive.yml:
name: Keep HuggingFace Space Alive # 工作流名称
on:
schedule:
- cron: '0 */12 * * *' # 每12小时执行一次
workflow_dispatch: # 支持手动触发
jobs:
keep-alive:
runs-on: ubuntu-latest # 运行环境
steps:
- name: Ping HuggingFace Space # 步骤名称
run: |
# ⚠️ 请修改为你的 Space 地址
curl -s https://huggingface.co/spaces/<你的HF用户名>/<你的Space名称>
curl -s https://<你的HF用户名>-<你的Space名称>.hf.space
- name: Log status # 记录日志
run: echo "Keep-alive ping sent at $(date)"
需要修改的地方:
<你的HF用户名>→ 你的 HuggingFace 用户名<你的Space名称>→ 你的 Space 名称
4️⃣ 推送修改
git add .github/workflows/keep-alive.yml
git commit -m "update: keep-alive workflow URL"
git push
5️⃣ 手动测试
- 进入仓库 Actions 页面
- 点击 "Keep HuggingFace Space Alive"
- 点击 "Run workflow" → "Run workflow"
- 查看运行结果
🔧 需要修改的地方
📋 修改清单
部署前需要修改以下文件:
| 文件路径 | 修改内容 | 是否必需 | 中文说明 |
|---|---|---|---|
.github/workflows/keep-alive.yml |
修改 HF Space 地址 | ✅ 必需 | 保活工作流配置 |
config.json |
修改管理员密码 | ✅ 必需 | 项目配置文件 |
| HF Secrets | 配置存储后端 | 推荐 | HuggingFace 加密存储 |
1️⃣ .github/workflows/keep-alive.yml
文件位置: .github/workflows/keep-alive.yml
文件说明: GitHub Actions 保活工作流配置文件,用于定时访问 HuggingFace Space 防止休眠。
需要修改:
# 第 15-16 行,修改为你的 Space 地址
curl -s https://huggingface.co/spaces/<YOUR_HF_USERNAME>/<YOUR_SPACE_NAME>
curl -s https://<YOUR_HF_USERNAME>-<YOUR_SPACE_NAME>.hf.space
示例:
如果你的 HF 用户名是 myuser,Space 名称是 my-chatsam:
curl -s https://huggingface.co/spaces/myuser/my-chatsam
curl -s https://myuser-my-chatsam.hf.space
2️⃣ config.json
文件位置: config.json
文件说明: 项目主配置文件,包含管理员密码、代理设置、备份配置等。
需要修改:
{
"auth-key": "YOUR_SECRET_KEY_HERE" // ← 修改为你的管理员密码
}
或者使用 Secrets(推荐):
在 HF Space Settings 中添加 CHATGPT2API_AUTH_KEY,会覆盖 config.json 中的设置。
完整配置说明:
| 配置项 | 默认值 | 中文说明 |
|---|---|---|
auth-key |
YOUR_SECRET_KEY_HERE |
管理员登录密码 |
refresh_account_interval_minute |
60 |
账号刷新间隔(分钟) |
image_retention_days |
15 |
图片保留天数 |
image_poll_timeout_secs |
120 |
图片生成超时时间(秒) |
auto_remove_rate_limited_accounts |
false |
自动移除限速账号 |
auto_remove_invalid_accounts |
true |
自动移除无效账号 |
proxy |
"" |
代理服务器地址 |
base_url |
"" |
API 基础地址 |
3️⃣ HuggingFace Secrets
位置: Space Settings → Variables and secrets
说明: HuggingFace 提供的加密存储,用于保存敏感信息。
需要添加:
| Secret 名称 | 值示例 | 中文说明 |
|---|---|---|
CHATGPT2API_AUTH_KEY |
MyStrongPassword123! |
管理员登录密码 |
STORAGE_BACKEND |
git |
存储后端类型 |
GIT_REPO_URL |
https://github.com/myuser/my-data.git |
数据仓库地址 |
GIT_TOKEN |
ghp_xxxxxxxxxxxx |
GitHub 访问令牌 |
✨ 功能特性
API 兼容能力
| API 接口 | 中文说明 |
|---|---|
POST /v1/images/generations |
图片生成接口 |
POST /v1/images/edits |
图片编辑接口 |
POST /v1/chat/completions |
图片场景对话接口 |
POST /v1/responses |
图片场景响应接口 |
GET /v1/models |
获取可用模型列表 |
在线画图功能
| 功能 | 中文说明 |
|---|---|
| 内置在线画图工作台 | 提供可视化界面 |
支持 gpt-image-2 等模型 |
多种图片生成模型 |
| 编辑模式支持参考图上传 | 可上传图片进行编辑 |
| 本地保存图片会话历史 | 记录生成历史 |
号池管理功能
| 功能 | 中文说明 |
|---|---|
| 自动刷新账号邮箱、类型、额度 | 自动更新账号信息 |
| 轮询可用账号执行图片生成 | 自动选择可用账号 |
| 自动剔除无效 Token | 自动清理无效账号 |
| 支持多种导入方式 | 支持批量导入账号 |
数据持久化
| 存储类型 | 中文说明 |
|---|---|
| Git 仓库存储 | 数据保存到 GitHub |
| PostgreSQL 存储 | 数据保存到数据库 |
| SQLite 存储 | 数据保存到本地文件 |
📋 部署清单
| 配置项 | 中文说明 | 是否必需 | 配置方式 |
|---|---|---|---|
CHATGPT2API_AUTH_KEY |
管理员密码 | ✅ 必需 | HF Secrets |
STORAGE_BACKEND |
存储后端类型 | 推荐 | HF Secrets |
GIT_REPO_URL |
Git 数据仓库地址 | 推荐 | HF Secrets |
GIT_TOKEN |
GitHub 访问令牌 | 推荐 | HF Secrets |
keep-alive.yml |
保活 URL | ✅ 必需 | 修改文件 |
🔧 本地开发
Docker 运行
Docker 是容器化运行环境,可以在本地模拟 HuggingFace Spaces。
docker compose up -d
访问:http://localhost:7860
本地开发
# 后端(Python 服务)
uv sync # 安装依赖
uv run main.py # 启动服务
# 前端(Web 界面)
cd web
bun install # 安装依赖
bun run dev # 启动开发服务器
📸 项目截图
⚠️ 截图待补充,你可以访问 原项目 查看更多截图。
界面预览
| 功能 | 中文说明 |
|---|---|
| 文生图界面 | 输入提示词生成图片 |
| 编辑图界面 | 上传图片进行编辑 |
| 号池管理 | 管理账号和额度 |
| 用户管理 | 创建普通用户账号 |
⚠️ 免责声明
本项目涉及对 ChatGPT 官网相关能力的逆向研究,仅供个人学习、技术研究与非商业性技术交流使用。
- 严禁用于任何商业用途
- 严禁用于违反 OpenAI 服务条款的行为
- 严禁用于生成违法内容
- 使用者应自行承担全部风险
📄 License
MIT License(MIT 开源许可证)
🙏 致谢
原项目
本项目基于 basketikun/chatgpt2api 开发。
贡献者
社区
学 AI,上 L 站:LinuxDO
📌 Star History
如果这个项目对你有帮助,请给原项目一个 Star!