package api import ( "context" "fmt" "strconv" "github.com/gin-gonic/gin" "eai_agentplatform/backend/internal/ai" "eai_agentplatform/backend/internal/config" "eai_agentplatform/backend/internal/web" ) // parseID 解析路径中的 uint id,失败返回 false 并已写入错误响应 func parseID(c *gin.Context, name string) (uint, bool) { id, err := strconv.ParseUint(c.Param(name), 10, 64) if err != nil || id == 0 { web.Fail(c, web.NewBadRequest("无效的 "+name)) return 0, false } return uint(id), true } // generateWithDefaultRoute 取通用文本生成路由后调用 LLM(非流式 + 回退链)。 // // 用于请求体里没有 ai_route_id、服务端自行挑路由的场景。路由名沿用代码里既有惯例 // "title_gen"(agent_routes 里指向通用 chat 模型);GetRoute 本身在查不到时会回落到 // ai_config.json 的 default_route,所以这里只可能在配置整体不可用时失败。 // // 存在的意义:取代此前 ai.GenerateWithFallback(nil, …) 的写法。传 nil 会让 // ai.buildRouteChain 直接报错——历史上前者会让调用方必 500。 func generateWithDefaultRoute(ctx context.Context, messages []ai.Message) (string, error) { aiRoute, err := config.GetRoute("title_gen") if err != nil || aiRoute == nil { return "", fmt.Errorf("通用文本生成路由不可用: %w", err) } return ai.GenerateWithFallback(ctx, aiRoute, messages) }