发布 0.2.0:模型池自愈、探测修正、任务异步触发与删除加固
This commit is contained in:
@@ -76,3 +76,34 @@ func ServiceStatus(err error) (int, bool) {
|
||||
}
|
||||
return 0, false
|
||||
}
|
||||
|
||||
// IsOnDemandUnsupported 识别「模型在该区域仅为微调基座、不支持按需调用」的 400:
|
||||
// OCI 消息形如 "Not allowed to call finetune base model …, use Endpoint: false"。
|
||||
// ListModels 无字段可事先区分,只能在调用报错时识别并换渠道。
|
||||
func IsOnDemandUnsupported(err error) bool {
|
||||
var svcErr common.ServiceError
|
||||
if !errors.As(err, &svcErr) {
|
||||
return false
|
||||
}
|
||||
return svcErr.GetHTTPStatusCode() == 400 &&
|
||||
strings.Contains(strings.ToLower(svcErr.GetMessage()), "finetune base model")
|
||||
}
|
||||
|
||||
// IsEntityNotFound 识别「实体不存在」404(消息 "Entity with key … not found"):
|
||||
// GenAI 对区域内无按需供给的模型 OCID 返回此类 404,属模型级错误;
|
||||
// 鉴权失败的 404 是 NotAuthorizedOrNotFound(消息为 Authorization failed…),不在此列。
|
||||
func IsEntityNotFound(err error) bool {
|
||||
var svcErr common.ServiceError
|
||||
if !errors.As(err, &svcErr) {
|
||||
return false
|
||||
}
|
||||
msg := strings.ToLower(svcErr.GetMessage())
|
||||
return svcErr.GetHTTPStatusCode() == 404 &&
|
||||
strings.Contains(msg, "entity with key") && strings.Contains(msg, "not found")
|
||||
}
|
||||
|
||||
// IsModelUnavailable 归并「模型×区域不可按需调用」两类报错:微调基座 400 与实体不存在 404;
|
||||
// 命中即应把该 (渠道, 模型) 从池中剔除并换候选/换渠道,而非定论租户配额问题。
|
||||
func IsModelUnavailable(err error) bool {
|
||||
return IsOnDemandUnsupported(err) || IsEntityNotFound(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user