Adobe Firefly / OpenAI 兼容网关服务。
English README: README_EN.md
当前设计:
- 对外统一入口:
/v1/chat/completions(图像 + 视频) - 图像专用入口:
/v1/images/generations - 支持多账号 Token 池、自动刷新、管理后台、请求日志与任务进度查询
pip install -r requirements.txt
uvicorn app:app --host 0.0.0.0 --port 6001 --reload管理后台:
- 地址:
http://127.0.0.1:6001/ - 默认账号密码:
admin / admin
docker compose up -d --build服务 API Key 配置在 config/config.json 的 api_key 字段。
调用时可使用:
Authorization: Bearer <api_key>X-API-Key: <api_key>
管理后台和管理 API 需要先通过 /api/v1/auth/login 登录并持有会话 Cookie。
当前公开模型如下:
nano-banana(图像,对应上游nano-banana-2)nano-banana2(图像,对应上游nano-banana-3)nano-banana-pro(图像)sora2(视频)sora2-pro(视频)veo31(视频)veo31-ref(视频,参考图模式)veo31-fast(视频)
说明:
nano-banana、nano-banana2、nano-banana-pro现在都统一通过output_resolution选择1K/2K/4K- 旧的
nano-banana-4k、nano-banana2-4k、nano-banana-pro-4k仍保留兼容,但不会继续在/v1/models中单独展示 - 视频模型继续通过请求参数单独传
duration、aspect_ratio、resolution、reference_mode
Nano Banana(nano-banana-2):
- 命名:
model=nano-banana - 分辨率:
output_resolution=1K / 2K / 4K - 比例:
aspect_ratio=1:1 / 16:9 / 9:16 / 4:3 / 3:4 - 示例:
model=nano-banana, output_resolution=2K, aspect_ratio=16:9model=nano-banana, output_resolution=1K, aspect_ratio=1:1model=nano-banana, output_resolution=4K, aspect_ratio=16:9
Nano Banana 2(nano-banana-3):
- 命名:
model=nano-banana2 - 分辨率:
output_resolution=1K / 2K / 4K - 比例:
aspect_ratio=1:1 / 16:9 / 9:16 / 4:3 / 3:4 - 示例:
model=nano-banana2, output_resolution=2K, aspect_ratio=16:9model=nano-banana2, output_resolution=1K, aspect_ratio=1:1model=nano-banana2, output_resolution=4K, aspect_ratio=16:9
Nano Banana Pro:
- 命名:
model=nano-banana-pro - 分辨率:
output_resolution=1K / 2K / 4K - 比例:
aspect_ratio=1:1 / 16:9 / 9:16 / 4:3 / 3:4 - 示例:
model=nano-banana-pro, output_resolution=2K, aspect_ratio=16:9model=nano-banana-pro, output_resolution=1K, aspect_ratio=1:1model=nano-banana-pro, output_resolution=4K, aspect_ratio=16:9
这类模型最终不会直接使用你传入的像素宽高,而是根据 output_resolution + aspect_ratio 自动换算成固定尺寸。
如果没有传 aspect_ratio,但传了 size,服务会先根据 size 自动反推比例,再套用下表。
1K
1:1->1024 x 102416:9->1360 x 7689:16->768 x 13604:3->1152 x 8643:4->864 x 1152
2K
1:1->2048 x 204816:9->2752 x 15369:16->1536 x 27524:3->2048 x 15363:4->1536 x 2048
4K
1:1->4096 x 409616:9->5504 x 30729:16->3072 x 55044:3->4096 x 30723:4->3072 x 4096
Sora2:
- 命名:
model=sora2 - 时长:
duration=4 / 8 / 12 - 比例:
aspect_ratio=16:9 / 9:16
Sora2 Pro:
- 命名:
model=sora2-pro - 时长:
duration=4 / 8 / 12 - 比例:
aspect_ratio=16:9 / 9:16
Veo31:
- 命名:
model=veo31 - 时长:
duration=4 / 6 / 8 - 比例:
aspect_ratio=16:9 / 9:16 - 分辨率:
resolution=720p / 1080p - 参考模式:
reference_mode=frame / image
Veo31 Ref:
- 命名:
model=veo31-ref - 时长:
duration=4 / 6 / 8 - 比例:
aspect_ratio=16:9 / 9:16 - 分辨率:
resolution=720p / 1080p - 固定参考图模式:
reference_mode=image
Veo31 Fast:
- 命名:
model=veo31-fast - 时长:
duration=4 / 6 / 8 - 比例:
aspect_ratio=16:9 / 9:16 - 分辨率:
resolution=720p / 1080p
Veo31 单图/多图语义:
veo31/veo31-fast且reference_mode=frame:帧模式- 1 张图:首帧
- 2 张图:首帧 + 尾帧
veo31-ref,或veo31且reference_mode=image:参考图模式- 1~3 张图:参考图
curl -X GET "http://127.0.0.1:6001/v1/models" \
-H "Authorization: Bearer <service_api_key>"文生图:
curl -X POST "http://127.0.0.1:6001/v1/chat/completions" \
-H "Authorization: Bearer <service_api_key>" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"output_resolution": "2K",
"aspect_ratio": "16:9",
"messages": [{"role":"user","content":"a cinematic mountain sunrise"}]
}'图生图:
curl -X POST "http://127.0.0.1:6001/v1/chat/completions" \
-H "Authorization: Bearer <service_api_key>" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"output_resolution": "4K",
"aspect_ratio": "16:9",
"messages": [{
"role":"user",
"content":[
{"type":"text","text":"turn this photo into watercolor style"},
{"type":"image_url","image_url":{"url":"https://example.com/input.jpg"}}
]
}]
}'文生视频:
curl -X POST "http://127.0.0.1:6001/v1/chat/completions" \
-H "Authorization: Bearer <service_api_key>" \
-H "Content-Type: application/json" \
-d '{
"model": "sora2",
"duration": 4,
"aspect_ratio": "16:9",
"messages": [{"role":"user","content":"a drone shot over snowy forest"}]
}'图生视频:
curl -X POST "http://127.0.0.1:6001/v1/chat/completions" \
-H "Authorization: Bearer <service_api_key>" \
-H "Content-Type: application/json" \
-d '{
"model": "veo31",
"duration": 6,
"aspect_ratio": "9:16",
"resolution": "720p",
"reference_mode": "image",
"messages": [{
"role":"user",
"content":[
{"type":"text","text":"animate this character walking forward"},
{"type":"image_url","image_url":{"url":"https://example.com/character.png"}}
]
}]
}'curl -X POST "http://127.0.0.1:6001/v1/images/generations" \
-H "Authorization: Bearer <service_api_key>" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"output_resolution": "4K",
"aspect_ratio": "16:9",
"prompt": "futuristic city skyline at dusk"
}'项目自带浏览器插件目录:browser-cookie-exporter/
推荐流程:
- 在 Chrome / Edge 打开
chrome://extensions - 开启开发者模式
- 加载
browser-cookie-exporter/ - 登录 Adobe Firefly
- 用插件导出 Cookie JSON
- 在后台
Token 管理页面导入
支持:
- 粘贴 JSON 内容
- 直接上传
.json文件 - 批量导入多个账号
- 生成媒体文件:
data/generated/ - 请求日志:
data/request_logs.jsonl - Token 池:
config/tokens.json - 服务配置:
config/config.json - 刷新配置:
config/refresh_profile.json