Files
model-gateway/service/parse_error.go
T

33 lines
1.1 KiB
Go

package service
import (
"model-gateway/model/dto"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
// parseModelError 解析模型错误响应,返回错误码与错误消息(无错误均返回空串)。
// 兼容两种形态(与任务创建端 model_task_start_service.go 一致):
// - OpenAI 嵌套 {"error":{"code","message"}} → 取 error.code / error.message
// - 扁平 {"code","message"} → code=20000000 视为成功码,不当作错误
//
// 解析失败返回 err,由调用方决定重试/终态。
func parseModelError(body []byte) (code, msg string, err error) {
errMsg := new(dto.ModelErrorResp)
if err = gconv.Struct(body, errMsg); err != nil {
return "", "", err
}
if !g.IsEmpty(errMsg.Error.Code) {
return errMsg.Error.Code, errMsg.Error.Message, nil
}
flat := new(dto.ModelError1Resp)
if err = gconv.Struct(body, flat); err != nil {
return "", "", err
}
if !g.IsEmpty(flat.Code) && flat.Code != 20000000 {
return gconv.String(flat.Code), flat.Message, nil
}
return "", "", nil
}