package capability import ( "errors" "git.cin.su/m/Assistant/platform/ids" ) type ModelQualificationObservationID ids.ID type ModelQualificationStatus string const ( ModelQualificationReachable ModelQualificationStatus = "REACHABLE" ModelQualificationRespondedWithoutRating ModelQualificationStatus = "RESPONDED_WITHOUT_QUALIFICATION" ModelQualificationUnavailable ModelQualificationStatus = "UNAVAILABLE" ) // ModelQualificationObservation is operational evidence only. It records // reachability and latency, never quality, activation, routing priority or // provider credentials. type ModelQualificationObservation struct { ID ModelQualificationObservationID ProviderInstanceID ProviderInstanceID ProviderModelID ProviderModelID Status ModelQualificationStatus FinishReason string LatencyMillis int64 OutputObserved bool QualityAssessed bool Category ModelRatingCategory ObservedAtUnixMillis int64 } func (o ModelQualificationObservation) Validate() error { if o.ID == "" || o.ProviderInstanceID == "" || o.ProviderModelID == "" || o.FinishReason == "" || o.LatencyMillis < 0 || o.ObservedAtUnixMillis < 1 { return errors.New("model qualification observation identity and timing are incomplete") } switch o.Status { case ModelQualificationReachable, ModelQualificationRespondedWithoutRating, ModelQualificationUnavailable: default: return errors.New("model qualification observation status is unsupported") } if o.Category != ModelRatingUnrated || o.QualityAssessed { return errors.New("model qualification observation cannot assert quality") } return nil }