Skip to content

AsisYu/ChatMock-v2

Repository files navigation

ChatMock-v2

让 Codex 在你喜爱的聊天应用和编程工具中运行

中文 | English

PyPI Python License Stars Last Commit Issues


v2 说明: ChatMock-v2 是 RayBytes/ChatMock 的增强 fork,增加了 API Token 认证、多账户池管理等企业级特性。


ChatMock安装

Homebrew

brew tap RayBytes/chatmock
brew install chatmock

pipx / pip

pipx install chatmock

GUI

releases 下载 (macOS 和 Windows)

Docker

参见 DOCKER.md

ChatMock-v2安装

使用多号池请git本仓库,而不是通过brew和pipx。

git本仓库

git clone https://github.com/AsisYu/ChatMock-v2.git
pip install -r requirements.txt
python chatmock.py login
python chatmock.py serve

快速开始

# 1. 使用 ChatGPT 账号登录
chatmock.py login

# 2. 启动服务器
chatmock.py serve

服务器默认运行在 http://127.0.0.1:8000。将 http://127.0.0.1:8000/v1 作为 OpenAI 兼容应用的基础 URL。


多账户池

ChatMock-v2 支持多个 ChatGPT 账户,并在触发速率限制时自动切换。

添加账户

# 添加第一个账户
chatmock.py login

# 添加更多账户(再次运行 login)
chatmock.py login

每次登录都会提示你确认将账户添加到池中。

管理账户

# 列出所有账户
chatmock.py account list

# 显示账户详情
chatmock.py account show <account-id>

# 设置账户优先级 (1=最高, 10=最低)
chatmock.py account priority <account-id> 1

# 重命名账户
chatmock.py account rename <account-id> "work-account"

# 重置错误状态的账户(从 error 恢复到 active)
chatmock.py account reset <account-id>

# 移除账户
chatmock.py account remove <account-id>

账户状态说明

状态 图标 说明
active 正常可用
ready 冷却结束,等待使用
cooldown 速率限制冷却中
error 认证失败或连续请求失败,需手动重置

恢复 error 状态账户

# 查看哪些账户有错误
chatmock.py pool status

# 重置单个账户
chatmock.py account reset <account-id>

池状态

# 查看池状态
chatmock.py pool status

# 以 JSON 格式查看
chatmock.py pool status --json

API 端点

池管理 API (默认仅限本地访问):

端点 方法 描述
/v1/pool/status GET 获取池状态
/v1/pool/accounts GET 列出所有账户
/v1/pool/accounts/<id> GET 获取账户详情
/v1/pool/accounts/<id> DELETE 移除账户
/v1/pool/accounts/<id> PATCH 更新别名/优先级
/v1/pool/reload POST 从磁盘重新加载池
/v1/pool/config GET/PATCH 查看/更新配置

反向代理安全配置

如果在 nginx/traefik 后运行,请设置 API token:

export CHATMOCK_POOL_API_TOKEN="your-secret-token"

然后在请求中包含 token:

curl -H "Authorization: Bearer your-secret-token" http://your-server/v1/pool/status

工作原理

  • 自动切换: 当账户触发速率限制时,进入冷却期,使用下一个可用账户
  • 加权选择: 优先级更高且剩余配额更多的账户会被优先选择
  • 冷却恢复: 速率限制重置后,账户自动变为可用
  • 线程安全: 支持并发请求

使用示例

Python
from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8000/v1",
    api_key="anything"  # 不检查
)

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "hello"}]
)
print(response.choices[0].message.content)
cURL
curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4",
    "messages": [{"role": "user", "content": "hello"}]
  }'

支持的模型

  • gpt-5.5
  • gpt-5.4
  • gpt-5.4-mini
  • gpt-5.2
  • gpt-5.1
  • gpt-5
  • gpt-5.3-codex
  • gpt-5.3-codex-spark
  • gpt-5.2-codex
  • gpt-5-codex
  • gpt-5.1-codex
  • gpt-5.1-codex-max
  • gpt-5.1-codex-mini
  • codex-mini

功能特性

  • 工具/函数调用
  • 视觉/图像输入
  • 思考摘要(通过 think 标签)
  • 可配置的思考强度
  • 支持模型的快速模式
  • 网页搜索工具
  • OpenAI 兼容的 /v1/responses (HTTP + WebSocket)
  • Ollama 兼容端点
  • 推理强度作为独立模型暴露(可选)
  • 可选的 API Token 认证

v2 认证方式

ChatMock-v2 提供两层认证机制:

1. 代理 API 认证(保护 /v1/chat/completions 等代理端点)

默认不启用认证(适合本地开发)。启用后客户端必须携带 Token:

# 通过环境变量启用
export CHATMOCK_API_TOKEN="your-secret-token"
chatmock.py serve

# 或通过 CLI 参数
chatmock.py serve --api-token "your-secret-token"

启用后,客户端请求必须携带 Token:

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8000/v1",
    api_key="your-secret-token"  # 必须与配置的 Token 匹配
)
curl -H "Authorization: Bearer your-secret-token" \
  http://127.0.0.1:8000/v1/chat/completions \
  -d '{"model": "gpt-5.5", "messages": [{"role": "user", "content": "hello"}]}'

行为说明

  • 未设置 CHATMOCK_API_TOKEN:所有请求直接通过(向后兼容)
  • 设置了 CHATMOCK_API_TOKEN:要求 Authorization: Bearer <token> 匹配
  • 检测到反向代理头但未设置 Token:打印安全警告但仍然放行

2. 池管理 API 认证(保护 /v1/pool/* 管理端点)

export CHATMOCK_POOL_API_TOKEN="your-pool-secret-token"

行为说明

  • 设置了 CHATMOCK_POOL_API_TOKEN:要求 Bearer Token 匹配
  • 未设置 Token 且检测到反向代理头:拒绝访问(防止未授权管理操作)
  • 未设置 Token 且本地直连:允许 localhost 访问

配置

所有标志放在 chatmock serve 之后。也可以设置为环境变量。

标志 环境变量 选项 默认值 描述
--reasoning-effort CHATGPT_LOCAL_REASONING_EFFORT none, minimal, low, medium, high, xhigh medium 模型思考强度
--reasoning-summary CHATGPT_LOCAL_REASONING_SUMMARY auto, concise, detailed, none auto 思考摘要详细程度
--reasoning-compat CHATGPT_LOCAL_REASONING_COMPAT legacy, o3, think-tags think-tags 推理内容返回格式
--fast-mode CHATGPT_LOCAL_FAST_MODE true/false false 支持模型的优先处理
--enable-web-search CHATGPT_LOCAL_ENABLE_WEB_SEARCH true/false false 允许模型搜索网页
--expose-reasoning-models CHATGPT_LOCAL_EXPOSE_REASONING_MODELS true/false false 将每个推理级别列为独立模型
--api-token CHATMOCK_API_TOKEN 字符串 API 认证 Token
请求中的网页搜索
{
  "model": "gpt-5.4",
  "messages": [{"role": "user", "content": "latest news on ..."}],
  "responses_tools": [{"type": "web_search"}],
  "responses_tool_choice": "auto"
}
请求中的快速模式
{
  "model": "gpt-5.4",
  "input": "summarize this",
  "fast_mode": true
}

注意事项

请负责任地使用,风险自负。本项目与 OpenAI 无关。


Star 历史

Star History Chart

About

通过您的 ChatGPT 订阅,以编程方式访问 OpenAI 模型。基于ChatMock修改的反代仓库,实现多号池、安全认证功能。Access OpenAI models programmatically via your ChatGPT subscription. This reverse proxy repository—modified from ChatMock—implements multi-account pooling and secure authentication features.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages