chatgpt2api / README.md
tx1538's picture
Update README.md
2d95678 verified
|
Raw
History Blame
14.5 kB
metadata
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 容器。

  1. 登录 HuggingFace
  2. 点击右上角 **"Create Space"**(创建空间)
  3. 填写信息:
    • Space name: 你的项目名称(如 my-chatsam
    • SDK: 选择 Docker(容器运行环境)
    • Hardware: 选择 CPU basic(免费,2核CPU,16GB内存)
  4. 点击 **"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 的访问令牌,用于授权第三方应用访问你的仓库。

  1. 访问 GitHub Token 设置
  2. 点击 **"Generate new token (classic)"**(生成新令牌)
  3. 填写信息:
    • Note: CHATSAM Data Storage(令牌名称)
    • Expiration: No expiration(永不过期,或选择较长时间)
    • Select scopes: 选择 **repo**(完整仓库访问权限)
  4. 点击 **"Generate token"**(生成令牌)
  5. ⚠️ 复制 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.jsonauth_keys.json 文件
  • ✅ 自动推送到 GitHub
  • ✅ 输出配置信息,方便复制到 HuggingFace

参数说明

参数 说明 默认值
--token GitHub Personal Access Token 从环境变量 GITHUB_TOKEN 读取
--repo-name 仓库名称 chatsam-data
--public 创建公开仓库 默认私有

方式 B:手动创建

  1. 在 GitHub 创建一个新的私有仓库(如 my-chatsam-data
  2. 在仓库中创建以下文件:

accounts.json - 存储账号信息

{
  "items": []
}

auth_keys.json - 存储用户认证密钥

{
  "items": []
}
  1. 推送到 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 后:

  1. 回到 Space 主页
  2. 点击右上角 "⋯" → **"Factory reboot"**(工厂重启)
  3. 等待约 5-10 分钟重新构建

4️⃣ 验证数据持久化

  1. 登录你的 Space
  2. 添加一个测试用户
  3. 检查 GitHub 数据仓库是否有新提交
  4. 重启 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 提供的自动化工作流服务。

  1. 进入你的 Fork 仓库
  2. 点击 Settings → Actions → General
  3. 选择 **"Allow all actions and reusable workflows"**(允许所有工作流)
  4. 点击 **"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️⃣ 手动测试

  1. 进入仓库 Actions 页面
  2. 点击 "Keep HuggingFace Space Alive"
  3. 点击 "Run workflow""Run workflow"
  4. 查看运行结果

🔧 需要修改的地方

📋 修改清单

部署前需要修改以下文件:

文件路径 修改内容 是否必需 中文说明
.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 开发。

贡献者

Contributors

社区

学 AI,上 L 站:LinuxDO


📌 Star History

如果这个项目对你有帮助,请给原项目一个 Star!

Star History Chart