feat(inference): 集成 GPT Image 2 异步文生图 API
- 新增 GptImage2Config 配置(yuntts 等 GPT Image 2 兼容服务) - 新增 gptimage.go 异步客户端:提交任务 → 轮询状态 → 下载图片 - GenerateImages 优先级调整为:GPT Image 2 > OpenAI 兼容 ImageGen > Mock - 支持环境变量 GEN2D_GPT_IMAGE2_* 系列配置
This commit is contained in:
Regular → Executable
+31
-6
@@ -9,11 +9,12 @@ import (
|
||||
|
||||
// Config 应用全局配置。
|
||||
type Config struct {
|
||||
Server ServerConfig `mapstructure:"server"`
|
||||
Database DatabaseConfig `mapstructure:"database"`
|
||||
JWT JWTConfig `mapstructure:"jwt"`
|
||||
LLM LLMConfig `mapstructure:"llm"`
|
||||
ImageGen ImageGenConfig `mapstructure:"image_gen"`
|
||||
Server ServerConfig `mapstructure:"server"`
|
||||
Database DatabaseConfig `mapstructure:"database"`
|
||||
JWT JWTConfig `mapstructure:"jwt"`
|
||||
LLM LLMConfig `mapstructure:"llm"`
|
||||
ImageGen ImageGenConfig `mapstructure:"image_gen"`
|
||||
GptImage2 GptImage2Config `mapstructure:"gpt_image2"`
|
||||
}
|
||||
|
||||
// ServerConfig HTTP 服务配置。
|
||||
@@ -43,7 +44,7 @@ type LLMConfig struct {
|
||||
MaxTokens int `mapstructure:"max_tokens"`
|
||||
}
|
||||
|
||||
// ImageGenConfig 文生图模型配置。
|
||||
// ImageGenConfig 文生图模型配置(OpenAI 兼容同步 API)。
|
||||
type ImageGenConfig struct {
|
||||
BaseURL string `mapstructure:"base_url"`
|
||||
APIKey string `mapstructure:"api_key"`
|
||||
@@ -55,6 +56,16 @@ type ImageGenConfig struct {
|
||||
CFGScale float64 `mapstructure:"cfg_scale"`
|
||||
}
|
||||
|
||||
// GptImage2Config GPT Image 2 异步生图模型配置(yuntts 等兼容服务)。
|
||||
type GptImage2Config struct {
|
||||
BaseURL string `mapstructure:"base_url"`
|
||||
APIKey string `mapstructure:"api_key"`
|
||||
AspectRatio string `mapstructure:"aspect_ratio"`
|
||||
XChannel string `mapstructure:"x_channel"`
|
||||
PollMaxWait int `mapstructure:"poll_max_wait"` // 轮询最大等待秒数, 默认 120
|
||||
PollInterval int `mapstructure:"poll_interval"` // 轮询间隔秒数, 默认 3
|
||||
}
|
||||
|
||||
// Load 从 YAML 配置文件和环境变量加载配置。
|
||||
// 优先级:环境变量 > YAML 文件 > 默认值。
|
||||
func Load() *Config {
|
||||
@@ -111,6 +122,13 @@ func setDefaults(v *viper.Viper) {
|
||||
v.SetDefault("image_gen.num_images", 1)
|
||||
v.SetDefault("image_gen.steps", 30)
|
||||
v.SetDefault("image_gen.cfg_scale", 7.0)
|
||||
|
||||
v.SetDefault("gpt_image2.base_url", "https://www.yuntts.com/api/v1")
|
||||
v.SetDefault("gpt_image2.api_key", "")
|
||||
v.SetDefault("gpt_image2.aspect_ratio", "1:1")
|
||||
v.SetDefault("gpt_image2.x_channel", "default")
|
||||
v.SetDefault("gpt_image2.poll_max_wait", 120)
|
||||
v.SetDefault("gpt_image2.poll_interval", 3)
|
||||
}
|
||||
|
||||
func bindEnvVars(v *viper.Viper) {
|
||||
@@ -135,4 +153,11 @@ func bindEnvVars(v *viper.Viper) {
|
||||
v.BindEnv("image_gen.num_images", "GEN2D_IMAGE_NUM_IMAGES")
|
||||
v.BindEnv("image_gen.steps", "GEN2D_IMAGE_STEPS")
|
||||
v.BindEnv("image_gen.cfg_scale", "GEN2D_IMAGE_CFG_SCALE")
|
||||
|
||||
v.BindEnv("gpt_image2.base_url", "GEN2D_GPT_IMAGE2_BASE_URL")
|
||||
v.BindEnv("gpt_image2.api_key", "GEN2D_GPT_IMAGE2_API_KEY")
|
||||
v.BindEnv("gpt_image2.aspect_ratio", "GEN2D_GPT_IMAGE2_ASPECT_RATIO")
|
||||
v.BindEnv("gpt_image2.x_channel", "GEN2D_GPT_IMAGE2_X_CHANNEL")
|
||||
v.BindEnv("gpt_image2.poll_max_wait", "GEN2D_GPT_IMAGE2_POLL_MAX_WAIT")
|
||||
v.BindEnv("gpt_image2.poll_interval", "GEN2D_GPT_IMAGE2_POLL_INTERVAL")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user