feat(pipeline): PromptOptimizer 集成到生成管线,新增优化 API

- PipelineInput 新增 Tags/UserNote 字段
- 管线重构为: START → PromptOptimizer → AssetGenerator → QualitySupervisor → FormatAdapter
- promptOptimizerNode: 有标签调用 PromptAgent,无标签补技术参数,合并风格与重试信息
- PromptBuilder 移除,提示词构建逻辑并入 PromptOptimizer
- 新增 POST /api/v1/prompt/optimize 接口
- main.go 注入 LLM/ImageGen 配置,注册 prompt 路由
- inference.go 新增 InitImageGenConfig 注入
This commit is contained in:
2026-05-24 20:45:18 +08:00
parent 788cd021ef
commit 9ca1e65221
7 changed files with 281 additions and 96 deletions
+42
View File
@@ -0,0 +1,42 @@
package handler
import (
"net/http"
"gen2d/internal/model"
"gen2d/internal/service"
"github.com/gin-gonic/gin"
)
// PromptOptimizeRequest 提示词优化请求。
type PromptOptimizeRequest struct {
Tags []string `json:"tags" binding:"required,min=1"` // 用户选择的标签
AssetType string `json:"assetType" binding:"required"` // 素材类型
Prompt string `json:"prompt"` // 用户原始提示词
UserNote string `json:"userNote"` // 用户额外描述
}
// PromptOptimize 提示词优化接口,接收用户标签并调用 LLM 生成规范提示词。
func PromptOptimize(c *gin.Context) {
var req PromptOptimizeRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, model.Fail(http.StatusBadRequest, "参数错误: "+err.Error()))
return
}
in := service.PromptAgentInput{
Tags: req.Tags,
AssetType: req.AssetType,
Prompt: req.Prompt,
UserNote: req.UserNote,
}
output, err := service.RunPromptAgent(c.Request.Context(), in)
if err != nil {
c.JSON(http.StatusInternalServerError, model.Fail(http.StatusInternalServerError, "提示词优化失败: "+err.Error()))
return
}
c.JSON(http.StatusOK, model.OK(output))
}