refactor(config): 精简 image_gen 配置为 OpenAI 兼容同步 API

- 移除 yuntts 异步字段: aspect_ratio / x_channel / poll_max_wait / poll_interval
- 改用标准 OpenAI Images API 字段: width / height / quality
- 默认 base_url 改为 api.suchuang.vip/v1
- 模型默认值: gpt-image-2-token(此模型在 suchuang 上需换 gpt-image-1)
This commit is contained in:
2026-05-25 13:17:57 +08:00
parent 8c027d9b52
commit d8bfb81c4d
3 changed files with 22 additions and 32 deletions
+5 -7
View File
@@ -19,12 +19,10 @@ GEN2D_LLM_MODEL=gpt-4o
GEN2D_LLM_TEMPERATURE=0.7 GEN2D_LLM_TEMPERATURE=0.7
GEN2D_LLM_MAX_TOKENS=2048 GEN2D_LLM_MAX_TOKENS=2048
# 文生图模型(GPT Image 2 异步 API,如 yuntts 等兼容服务) # 文生图模型(OpenAI 兼容 Images API)
GEN2D_IMAGE_BASE_URL=https://www.yuntts.com/api/v1 GEN2D_IMAGE_BASE_URL=https://api.suchuang.vip/v1
GEN2D_IMAGE_API_KEY= GEN2D_IMAGE_API_KEY=
GEN2D_IMAGE_MODEL=gpt-image-2 GEN2D_IMAGE_MODEL=gpt-image-2-token
GEN2D_IMAGE_WIDTH=1024
GEN2D_IMAGE_HEIGHT=1024
GEN2D_IMAGE_QUALITY=low GEN2D_IMAGE_QUALITY=low
GEN2D_IMAGE_ASPECT_RATIO=1:1
GEN2D_IMAGE_X_CHANNEL=default
GEN2D_IMAGE_POLL_MAX_WAIT=120
GEN2D_IMAGE_POLL_INTERVAL=3
+13 -19
View File
@@ -43,16 +43,14 @@ type LLMConfig struct {
MaxTokens int `mapstructure:"max_tokens"` MaxTokens int `mapstructure:"max_tokens"`
} }
// ImageGenConfig GPT Image 2 异步生图模型配置。 // ImageGenConfig OpenAI 兼容文生图模型配置。
type ImageGenConfig struct { type ImageGenConfig struct {
BaseURL string `mapstructure:"base_url"` BaseURL string `mapstructure:"base_url"`
APIKey string `mapstructure:"api_key"` APIKey string `mapstructure:"api_key"`
Model string `mapstructure:"model"` Model string `mapstructure:"model"`
Quality string `mapstructure:"quality"` Width int `mapstructure:"width"`
AspectRatio string `mapstructure:"aspect_ratio"` Height int `mapstructure:"height"`
XChannel string `mapstructure:"x_channel"` Quality string `mapstructure:"quality"`
PollMaxWait int `mapstructure:"poll_max_wait"`
PollInterval int `mapstructure:"poll_interval"`
} }
// Load 从 YAML 配置文件和环境变量加载配置。 // Load 从 YAML 配置文件和环境变量加载配置。
@@ -103,14 +101,12 @@ func setDefaults(v *viper.Viper) {
v.SetDefault("llm.temperature", 0.7) v.SetDefault("llm.temperature", 0.7)
v.SetDefault("llm.max_tokens", 2048) v.SetDefault("llm.max_tokens", 2048)
v.SetDefault("image_gen.base_url", "https://www.yuntts.com/api/v1") v.SetDefault("image_gen.base_url", "https://api.suchuang.vip/v1")
v.SetDefault("image_gen.api_key", "") v.SetDefault("image_gen.api_key", "")
v.SetDefault("image_gen.model", "gpt-image-2") v.SetDefault("image_gen.model", "gpt-image-2-token")
v.SetDefault("image_gen.width", 1024)
v.SetDefault("image_gen.height", 1024)
v.SetDefault("image_gen.quality", "low") v.SetDefault("image_gen.quality", "low")
v.SetDefault("image_gen.aspect_ratio", "1:1")
v.SetDefault("image_gen.x_channel", "default")
v.SetDefault("image_gen.poll_max_wait", 120)
v.SetDefault("image_gen.poll_interval", 3)
} }
func bindEnvVars(v *viper.Viper) { func bindEnvVars(v *viper.Viper) {
@@ -130,9 +126,7 @@ func bindEnvVars(v *viper.Viper) {
v.BindEnv("image_gen.base_url", "GEN2D_IMAGE_BASE_URL") v.BindEnv("image_gen.base_url", "GEN2D_IMAGE_BASE_URL")
v.BindEnv("image_gen.api_key", "GEN2D_IMAGE_API_KEY") v.BindEnv("image_gen.api_key", "GEN2D_IMAGE_API_KEY")
v.BindEnv("image_gen.model", "GEN2D_IMAGE_MODEL") v.BindEnv("image_gen.model", "GEN2D_IMAGE_MODEL")
v.BindEnv("image_gen.width", "GEN2D_IMAGE_WIDTH")
v.BindEnv("image_gen.height", "GEN2D_IMAGE_HEIGHT")
v.BindEnv("image_gen.quality", "GEN2D_IMAGE_QUALITY") v.BindEnv("image_gen.quality", "GEN2D_IMAGE_QUALITY")
v.BindEnv("image_gen.aspect_ratio", "GEN2D_IMAGE_ASPECT_RATIO")
v.BindEnv("image_gen.x_channel", "GEN2D_IMAGE_X_CHANNEL")
v.BindEnv("image_gen.poll_max_wait", "GEN2D_IMAGE_POLL_MAX_WAIT")
v.BindEnv("image_gen.poll_interval", "GEN2D_IMAGE_POLL_INTERVAL")
} }
+4 -6
View File
@@ -21,11 +21,9 @@ llm:
max_tokens: 2048 max_tokens: 2048
image_gen: image_gen:
base_url: "https://www.yuntts.com/api/v1" base_url: "https://api.suchuang.vip/v1"
api_key: "" api_key: ""
model: "gpt-image-2" model: "gpt-image-2-token"
width: 1024
height: 1024
quality: "low" quality: "low"
aspect_ratio: "1:1"
x_channel: "default"
poll_max_wait: 120
poll_interval: 3