Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,31 @@ ROBOFLOW_API_FALLBACK_URLS=
# 2) Create a Read token and set it below
HF_TOKEN=

# Optional OpenRouter defaults
# OPENROUTER_API_KEY=sk-or-v1-xxx
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
# OPENROUTER_IMAGE_MODEL=google/gemini-3-pro-image-preview
# OPENROUTER_SVG_MODEL=google/gemini-3.1-pro-preview

# Optional Bianxie defaults
# BIANXIE_API_KEY=your_bianxie_key
# BIANXIE_BASE_URL=https://api.bianxie.ai/v1
# BIANXIE_IMAGE_MODEL=gemini-3-pro-image-preview
# BIANXIE_SVG_MODEL=gemini-3.1-pro-preview

# Optional Gemini defaults
# GEMINI_API_KEY=your_gemini_key
# GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta
# GEMINI_IMAGE_MODEL=gemini-3-pro-image-preview
# GEMINI_SVG_MODEL=gemini-3.1-pro

# Optional: OpenRouter multimodal retry tuning (step 4 SVG generation)
# OPENROUTER_MULTIMODAL_RETRIES=3
# OPENROUTER_MULTIMODAL_RETRY_DELAY=1.5

# Optional build source overrides (for restricted networks)
# BASE_IMAGE=docker.m.daocloud.io/library/python:3.11-slim
# BASE_IMAGE=python:3.11-slim-bookworm
# DOCKER_PLATFORM=linux/amd64
# PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
# PIP_EXTRA_INDEX_URL=

Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,22 @@ HF_TOKEN=hf_xxx
Optional but recommended:

```bash
# LLM provider defaults (used when CLI flags are omitted)
OPENROUTER_API_KEY=sk-or-v1-xxx
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_IMAGE_MODEL=google/gemini-3-pro-image-preview
OPENROUTER_SVG_MODEL=google/gemini-3.1-pro-preview

BIANXIE_API_KEY=your_bianxie_key
BIANXIE_BASE_URL=https://api.bianxie.ai/v1
BIANXIE_IMAGE_MODEL=gemini-3-pro-image-preview
BIANXIE_SVG_MODEL=gemini-3.1-pro-preview

GEMINI_API_KEY=your_gemini_key
GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta
GEMINI_IMAGE_MODEL=gemini-3-pro-image-preview
GEMINI_SVG_MODEL=gemini-3.1-pro

# SAM3 API backend (Docker default in UI is Roboflow)
ROBOFLOW_API_KEY=your_roboflow_key

Expand Down Expand Up @@ -323,6 +339,8 @@ Optional CLI flags (API):
| **Bianxie** | `api.bianxie.ai/v1` | OpenAI-compatible API |
| **Gemini (Google)** | `generativelanguage.googleapis.com/v1beta` | Official Google Gemini API (`google-genai`) |

Each provider can read `API_KEY`, `BASE_URL`, `IMAGE_MODEL`, and `SVG_MODEL` defaults from `.env`.

Common CLI flags:

- `--provider` (openrouter | bianxie | gemini)
Expand Down
18 changes: 18 additions & 0 deletions README_ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,22 @@ HF_TOKEN=hf_xxx
可选但建议配置:

```bash
# LLM provider 默认值(当未传 CLI 参数时使用)
OPENROUTER_API_KEY=sk-or-v1-xxx
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_IMAGE_MODEL=google/gemini-3-pro-image-preview
OPENROUTER_SVG_MODEL=google/gemini-3.1-pro-preview

BIANXIE_API_KEY=your_bianxie_key
BIANXIE_BASE_URL=https://api.bianxie.ai/v1
BIANXIE_IMAGE_MODEL=gemini-3-pro-image-preview
BIANXIE_SVG_MODEL=gemini-3.1-pro-preview

GEMINI_API_KEY=your_gemini_key
GEMINI_BASE_URL=https://generativelanguage.googleapis.com/v1beta
GEMINI_IMAGE_MODEL=gemini-3-pro-image-preview
GEMINI_SVG_MODEL=gemini-3.1-pro

# SAM3 API(Docker/Web 默认后端为 Roboflow)
ROBOFLOW_API_KEY=your_roboflow_key

Expand Down Expand Up @@ -313,6 +329,8 @@ python autofigure2.py \
| **Bianxie** | `api.bianxie.ai/v1` | 兼容 OpenAI 接口 |
| **Gemini (Google)** | `generativelanguage.googleapis.com/v1beta` | Google 官方 Gemini API(`google-genai`) |

每个 provider 都支持从 `.env` 读取 `API_KEY`、`BASE_URL`、`IMAGE_MODEL`、`SVG_MODEL` 默认值。

常用 CLI 参数:

- `--provider` (openrouter | bianxie | gemini)
Expand Down
42 changes: 30 additions & 12 deletions autofigure2.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,19 +90,36 @@

PROVIDER_CONFIGS = {
"openrouter": {
"base_url": "https://openrouter.ai/api/v1",
"default_image_model": "google/gemini-3-pro-image-preview",
"default_svg_model": "google/gemini-3.1-pro-preview",
"api_key": os.environ.get("OPENROUTER_API_KEY", ""),
"base_url": os.environ.get("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1"),
"default_image_model": os.environ.get(
"OPENROUTER_IMAGE_MODEL", "google/gemini-3-pro-image-preview"
),
"default_svg_model": os.environ.get(
"OPENROUTER_SVG_MODEL", "google/gemini-3.1-pro-preview"
),
},
"bianxie": {
"base_url": "https://api.bianxie.ai/v1",
"default_image_model": "gemini-3-pro-image-preview",
"default_svg_model": "gemini-3.1-pro-preview",
"api_key": os.environ.get("BIANXIE_API_KEY", ""),
"base_url": os.environ.get("BIANXIE_BASE_URL", "https://api.bianxie.ai/v1"),
"default_image_model": os.environ.get(
"BIANXIE_IMAGE_MODEL", "gemini-3-pro-image-preview"
),
"default_svg_model": os.environ.get(
"BIANXIE_SVG_MODEL", "gemini-3.1-pro-preview"
),
},
"gemini": {
"base_url": "https://generativelanguage.googleapis.com/v1beta",
"default_image_model": "gemini-3-pro-image-preview",
"default_svg_model": "gemini-3.1-pro",
"api_key": os.environ.get("GEMINI_API_KEY", ""),
"base_url": os.environ.get(
"GEMINI_BASE_URL", "https://generativelanguage.googleapis.com/v1beta"
),
"default_image_model": os.environ.get(
"GEMINI_IMAGE_MODEL", "gemini-3-pro-image-preview"
),
"default_svg_model": os.environ.get(
"GEMINI_SVG_MODEL", "gemini-3.1-pro"
),
},
}

Expand Down Expand Up @@ -2817,11 +2834,12 @@ def method_to_svg(
Returns:
结果字典
"""
if not api_key:
raise ValueError("必须提供 api_key")

# 获取默认配置
config = PROVIDER_CONFIGS[provider]
if not api_key:
api_key = config.get("api_key") or None
if not api_key:
raise ValueError("必须提供 api_key")
if base_url is None:
base_url = config["base_url"]
if image_gen_model is None:
Expand Down
12 changes: 12 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,18 @@ services:
HF_HOME: /app/.cache/huggingface
HF_TOKEN: ${HF_TOKEN:-}
HUGGINGFACE_HUB_TOKEN: ${HF_TOKEN:-}
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
OPENROUTER_BASE_URL: ${OPENROUTER_BASE_URL:-}
OPENROUTER_IMAGE_MODEL: ${OPENROUTER_IMAGE_MODEL:-}
OPENROUTER_SVG_MODEL: ${OPENROUTER_SVG_MODEL:-}
BIANXIE_API_KEY: ${BIANXIE_API_KEY:-}
BIANXIE_BASE_URL: ${BIANXIE_BASE_URL:-}
BIANXIE_IMAGE_MODEL: ${BIANXIE_IMAGE_MODEL:-}
BIANXIE_SVG_MODEL: ${BIANXIE_SVG_MODEL:-}
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
GEMINI_BASE_URL: ${GEMINI_BASE_URL:-}
GEMINI_IMAGE_MODEL: ${GEMINI_IMAGE_MODEL:-}
GEMINI_SVG_MODEL: ${GEMINI_SVG_MODEL:-}
OPENROUTER_MULTIMODAL_RETRIES: ${OPENROUTER_MULTIMODAL_RETRIES:-3}
OPENROUTER_MULTIMODAL_RETRY_DELAY: ${OPENROUTER_MULTIMODAL_RETRY_DELAY:-1.5}
ROBOFLOW_API_KEY: ${ROBOFLOW_API_KEY:-}
Expand Down