package dto import ( "gitea.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" ) // CreateModelReq 添加模型配置 type CreateModelReq struct { g.Meta `path:"/createModel" method:"post" tags:"模型管理" summary:"创建模型配置" dc:"添加新的模型配置"` ModelName string `p:"modelName" json:"modelName" v:"required#modelName不能为空" dc:"模型名称(唯一标识)"` ModelType int `p:"modelType" json:"modelType" v:"required#modelType不能为空" dc:"模型类型:1-文本生成 2-图像生成 3-语音 4-视频 5-多模态"` BaseURL string `p:"baseUrl" json:"baseUrl" v:"required#baseUrl不能为空" dc:"模型服务基础地址(如 gateway(s)://host:port)"` HttpMethod string `p:"httpMethod" json:"httpMethod" dc:"请求方式:GET/POST(默认POST)"` HeadMsg string `p:"headMsg" json:"headMsg" dc:"请求头绑定(支持多个,逗号分隔),示例:Authorization:Bearer xxx,Content-Type:application/json"` IsPrivate *int `p:"isPrivate" json:"isPrivate" v:"in:0,1#私有化参数只能为0或1" dc:"是否私有化:0-私有(默认) 1-公共"` Enabled *int `p:"enabled" json:"enabled" v:"in:0,1#启用参数只能为0或1" dc:"是否启用:0-禁用,1-启用(默认1)"` IsChatModel *int `p:"isChatModel" json:"isChatModel" v:"in:0,1#对话模型参数只能为0或1" dc:"是否为对话模型:0-否,1-是(默认0)"` IsOwner *int `p:"isOwner" json:"isOwner" v:"in:0,1#是否为所有者参数只能为0或1" dc:"是否为所有者:0-否,1-是(默认0)"` OperatorName string `p:"operatorName" json:"operatorName" v:"required#operatorName不能为空" dc:"运营商名称"` TokenConfig any `p:"tokenConfig" json:"tokenConfig" dc:"token计算配置"` ApiKey string `p:"apiKey" json:"apiKey" dc:"调用凭证/密钥,用于模型认证"` Form any `p:"form" json:"form" dc:"动态表单配置(JSON),用于前端渲染配置项"` RequestMapping any `p:"requestMapping" json:"requestMapping" dc:"请求映射"` ResponseMapping any `p:"responseMapping" json:"responseMapping" dc:"返回映射"` ResponseBody any `p:"responseBody" json:"responseBody" dc:"返回主体"` ResponseTokenField string `p:"responseTokenField" json:"responseTokenField" dc:"响应中消耗token的字段映射"` MaxConcurrency int `p:"maxConcurrency" json:"maxConcurrency" dc:"最大并发数(默认10)"` QueueLimit int `p:"queueLimit" json:"queueLimit" dc:"排队队列上限(默认1000)"` TimeoutSeconds int `p:"timeoutSeconds" json:"timeoutSeconds" dc:"请求超时时间(秒,默认600)"` ExpectedSeconds int `p:"expectedSeconds" json:"expectedSeconds" dc:"模型预计执行时间(秒,默认600)"` RetryTimes int `p:"retryTimes" json:"retryTimes" dc:"失败重试次数(默认3)"` RetryQueueMaxSeconds int `p:"retryQueueMaxSeconds" json:"retryQueueMaxSeconds" dc:"失败重试最大排队时间(秒,默认600)"` AutoCleanSeconds int `p:"autoCleanSeconds" json:"autoCleanSeconds" dc:"任务完成后自动清理时间(秒,默认86400)"` Remark string `p:"remark" json:"remark" dc:"备注说明"` } type CreateModelRes struct { ID int64 `json:"id,string" dc:"配置ID"` } type UpdateModelReq struct { g.Meta `path:"/updateModel" method:"put" tags:"模型管理" summary:"更新模型配置" dc:"更新指定ID的模型配置"` ID int64 `p:"id" json:"id" v:"required#id不能为空" dc:"配置ID"` ModelName string `p:"modelName" json:"modelName" dc:"模型名称(唯一标识)"` ModelType int `p:"modelType" json:"modelType" dc:"模型类型ID列表(逗号分隔)(可选更新)"` BaseURL string `p:"baseUrl" json:"baseUrl" dc:"模型服务基础地址"` HttpMethod string `p:"httpMethod" json:"httpMethod" dc:"请求方式:GET/POST(可选更新)"` HeadMsg string `p:"headMsg" json:"headMsg" dc:"请求头绑定(可选更新)"` ApiKey string `p:"apiKey" json:"apiKey" dc:"调用凭证/密钥,用于模型认证(可选更新)"` Form any `p:"form" json:"form" dc:"动态表单配置(JSON)(可选更新)"` RequestMapping any `p:"requestMapping" json:"requestMapping" dc:"请求参数映射(可选更新)"` ResponseMapping any `p:"responseMapping" json:"responseMapping" dc:"返回参数映射(可选更新)"` ResponseBody any `p:"responseBody" json:"responseBody" dc:"返回主体(可选更新)"` ResponseTokenField string `p:"responseTokenField" json:"responseTokenField" dc:"响应中消耗token的字段映射"` Enabled *int `p:"enabled" json:"enabled" dc:"是否启用:0-禁用,1-启用(可选更新)"` IsPrivate *int `p:"isPrivate" json:"isPrivate" v:"in:0,1#私有化参数只能为0或1" dc:"是否私有化:0-私有(默认) 1-公共"` IsChatModel *int `p:"isChatModel" json:"isChatModel" v:"in:0,1#对话模型参数只能为0或1" dc:"是否为对话模型:0-否,1-是(默认0)"` IsOwner *int `p:"isOwner" json:"isOwner" v:"in:0,1#是否为所有者参数只能为0或1" dc:"是否为所有者:0-否,1-是(默认0)"` OperatorName string `p:"operatorName" json:"operatorName" v:"required#operatorName不能为空" dc:"运营商名称"` TokenConfig any `p:"tokenConfig" json:"tokenConfig" dc:"token计算配置"` MaxConcurrency int `p:"maxConcurrency" json:"maxConcurrency" dc:"最大并发数(可选更新)"` QueueLimit int `p:"queueLimit" json:"queueLimit" dc:"排队队列上限(可选更新)"` TimeoutSeconds int `p:"timeoutSeconds" json:"timeoutSeconds" dc:"请求超时时间(秒)(可选更新)"` ExpectedSeconds int `p:"expectedSeconds" json:"expectedSeconds" dc:"模型预计执行时间(秒)(可选更新)"` RetryTimes int `p:"retryTimes" json:"retryTimes" dc:"失败重试次数(可选更新)"` RetryQueueMaxSeconds int `p:"retryQueueMaxSeconds" json:"retryQueueMaxSeconds" dc:"失败重试最大排队时间(秒)(可选更新)"` AutoCleanSeconds int `p:"autoCleanSeconds" json:"autoCleanSeconds" dc:"自动清理间隔(秒)(可选更新)"` Remark string `p:"remark" json:"remark" dc:"备注说明(可选更新)"` } type UpdateModelRes struct { ID int64 `json:"id,string" dc:"配置ID"` } // DeleteModelReq 删除模型配置 type DeleteModelReq struct { g.Meta `path:"/deleteModel" method:"delete" tags:"模型管理" summary:"删除模型配置" dc:"删除指定ID的模型配置"` ID int64 `p:"id" json:"id,string" v:"required#id不能为空" dc:"配置ID"` } type DeleteModelRes struct { ID int64 `json:"id,string" dc:"配置ID"` } // GetModelReq 获取模型配置详情 type GetModelReq struct { g.Meta `path:"/getModel" method:"get" tags:"模型管理" summary:"获取模型配置" dc:"根据模型ID获取配置详情"` ID int64 `p:"id" json:"id,string" v:"required#id不能为空" dc:"配置ID"` Creator string `p:"creator" json:"creator" dc:"创建人"` } type GetModelRes struct { Model any `json:"model" dc:"模型配置详情"` } // ListModelReq 配置列表 type ListModelReq struct { g.Meta `path:"/listModel" method:"get" tags:"模型管理" summary:"模型配置列表" dc:"分页获取模型配置列表"` Page *beans.Page `json:"page"` ModelName string `p:"modelName" json:"modelName" dc:"模型名称(模糊查询,可选)"` ModelType int `p:"modelType" json:"modelType" dc:"模型类型"` Enabled *int `p:"enabled" json:"enabled" dc:"是否启用:0-禁用,1-启用"` IsPrivate *int `p:"isPrivate" json:"isPrivate" dc:"是否私有化 0-私有 1-公共"` IsOwner *int `p:"isOwner" json:"isOwner" dc:"是否为所有者 0-否 1-是"` Creator string `p:"creator" json:"creator" dc:"创建人"` } type ListModelRes struct { List any `json:"list" dc:"列表数据"` Total int `json:"total" dc:"总数"` } // AutoTuneReq 动态调参(由上层定时任务每小时触发一次) type AutoTuneReq struct { g.Meta `path:"/autoTune" method:"post" tags:"模型管理" summary:"动态调参" dc:"按 model_name 维度统计指定时间窗口内执行耗时(P90),动态生成运行时 max_concurrency/queue_limit(不超过配置上限),写入 Redis 供 Worker/CreateTask 使用;windowSeconds 不传默认 3600"` WindowSeconds int `p:"windowSeconds" json:"windowSeconds" dc:"统计窗口秒数;不传/<=0 默认 3600(1小时)"` } type AutoTuneRes struct { List any `json:"list" dc:"调参结果列表"` } type ModelTypeModelItem struct { ID int64 `json:"id" dc:"模型主键ID"` Name string `json:"name" dc:"模型名称"` Form any `json:"form" dc:"动态表单配置(JSON数组),用于前端渲染"` } // ListModelTypeReq 模型类型列表(分页) type ListTypeReq struct { g.Meta `path:"/listType" method:"get" tags:"模型类型列表" summary:"模型类型列表" dc:"分页获取模型类型列表"` } type TypeItem struct { Type map[int]string `json:"type" dc:"模型类型ID到名称的映射"` } type UpdateChatModelReq struct { g.Meta `path:"/updateChatModel" method:"post" tags:"模型管理" summary:"更新聊天模型" dc:"更新指定模型的聊天模型"` Id int64 `p:"id" json:"id" v:"required#model不能为空" dc:"模型id"` } type UpdateChatModelRes struct { ID int64 `json:"id,string" dc:"模型ID"` } type GetIsChatModelReq struct { g.Meta `path:"/getIsChatModel" method:"get" tags:"模型管理" summary:"获取模型是否为聊天模型" dc:"根据模型ID获取是否为聊天模型"` } type GetIsChatModelRes struct { Model any `json:"model" dc:"模型详情"` }