Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatNow2Api

将 ChatNow 网页流式接口转换为 OpenAI、Anthropic 和 Gemini 兼容 API。当前上游已确认支持文本消息、文本增量流、temperaturetop_p、最大输出 Token 数和停止序列。多模态及 Token 用量不做猜测,相关请求会返回明确错误,响应中不伪造 Token 数据。OpenAI Responses 为兼容客户端会接收但忽略 reasoning 请求元数据,不生成推理内容。

工具调用由网关模拟:工具目录作为普通文本交给模型选择,只有模型返回带固定标记且通过校验的 JSON 时,才转换为各协议的标准工具事件。网关不执行工具、不生成工具结果、不改写模型返回的名称和参数。工具请求需要缓冲完整上游文本后再开始返回工具事件;为避免 ChatNow 丢弃原生工具内容块,选择阶段会将完整对话包装为普通文本,普通请求和 tool_choice=none 不受影响。

安装与配置

要求 Python 3.11+。

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp config.example.toml config.toml

编辑 config.toml[models.mapping] 已包含当前网页展示的 18 个模型,可自行增删;upstream.model 指定省略 model 时使用的默认模型。敏感值可用环境变量覆盖:CHATNOW_AUTHORIZATIONCHATNOW_FIREBASE_APPCHECKCHATNOW_API_KEYCHATNOW_COOKIECHATNOW_THREAD_IDCHATNOW_USER_IDCHATNOW_OWNER_IDCHATNOW_USER_NAMECHATNOW2API_KEYS。可用 CHATNOW2API_CONFIG 指定其他配置文件。

ChatNow 上游必须配置 Authorizationx-firebase-appcheckuser_idowner_iduser_name。默认 generate_thread_id = true,每次请求生成独立 UUIDv7,避免复用网页线程造成并发串扰和超时;关闭后必须配置固定 thread_id

对外接口默认不鉴权。启用 API Key 鉴权:

[api_auth]
enabled = true
keys = ["请替换为自定义密钥"]

生产环境建议保持 keys = [],通过 CHATNOW2API_KEYS=key1,key2 注入。

启动命令

python -m app

默认监听 http://127.0.0.1:8000

接口列表

  • GET /models:按默认协议返回模型
  • GET /v1/models:OpenAI 模型
  • GET /v1beta/models:Gemini 模型
  • POST /responses:按默认协议处理
  • POST /v1/responses:OpenAI Responses
  • POST /v1/chat/completions:OpenAI Chat Completions
  • POST /v1/messages:Anthropic Messages
  • POST /v1beta/models/{model}:generateContent:Gemini 非流式
  • POST /v1beta/models/{model}:streamGenerateContent:Gemini 流式,?alt=sse 返回 SSE
  • Gemini 接口同时提供 /v1 版本路径

调用示例

curl http://127.0.0.1:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"claude-fable-5","messages":[{"role":"user","content":"你好"}]}'
curl -N 'http://127.0.0.1:8000/v1beta/models/claude-fable-5:streamGenerateContent?alt=sse' \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"role":"user","parts":[{"text":"你好"}]}]}'

启用对外鉴权后,OpenAI 使用 Authorization: Bearer <key>,Anthropic 使用 x-api-key,Gemini 使用 x-goog-api-key 或查询参数 key

测试命令

pip install -r requirements-dev.txt
pytest -q

常见错误

  • 配置文件不存在/格式错误:检查 config.tomlCHATNOW2API_CONFIG
  • 上游鉴权失败:Authorization 或 App Check 可能已过期,请更新配置或对应环境变量。
  • 模型不存在:检查 [models.mapping]
  • 协议未启用:检查 enabled_protocols
  • unsupported_parameter:该能力没有出现在现有上游资料中,服务不会盲目透传。
  • invalid_upstream_response:强制工具选择时,上游没有返回合法选择记录,或名称、参数格式不合法。
  • 端口已被占用:启动输出会给出 PID、进程名、查询和结束命令;也可修改 server.port

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages