119 lines
3.9 KiB
Go
119 lines
3.9 KiB
Go
package cognitive
|
|
|
|
import (
|
|
"git.cin.su/m/Assistant/contracts/authority"
|
|
"git.cin.su/m/Assistant/contracts/capability"
|
|
"git.cin.su/m/Assistant/contracts/identity"
|
|
"git.cin.su/m/Assistant/platform/ids"
|
|
)
|
|
|
|
type RequestID ids.ID
|
|
type ContextExcerptID ids.ID
|
|
type ContractVersion string
|
|
type Sensitivity string
|
|
type FinishReason string
|
|
|
|
const (
|
|
CreatorAdvisoryV1 ContractVersion = "creator-advisory-v1"
|
|
|
|
SensitivityPublic Sensitivity = "PUBLIC"
|
|
SensitivityPrivateAllowed Sensitivity = "PRIVATE_ALLOWED"
|
|
SensitivitySecret Sensitivity = "SECRET"
|
|
SensitivityUnknown Sensitivity = "UNKNOWN"
|
|
|
|
FinishCompleted FinishReason = "COMPLETED"
|
|
FinishLengthLimit FinishReason = "LENGTH_LIMIT"
|
|
FinishContentRejected FinishReason = "CONTENT_REJECTED"
|
|
FinishProviderUnavailable FinishReason = "PROVIDER_UNAVAILABLE"
|
|
FinishModelUnavailable FinishReason = "MODEL_UNAVAILABLE"
|
|
FinishRateLimited FinishReason = "RATE_LIMITED"
|
|
FinishAuthenticationFailed FinishReason = "AUTHENTICATION_FAILED"
|
|
FinishBillingOrBudgetBlocked FinishReason = "BILLING_OR_BUDGET_BLOCKED"
|
|
FinishContextTooLarge FinishReason = "CONTEXT_TOO_LARGE"
|
|
FinishUnsupportedCapability FinishReason = "UNSUPPORTED_CAPABILITY"
|
|
FinishTimeout FinishReason = "TIMEOUT"
|
|
FinishInvalidProviderResponse FinishReason = "INVALID_PROVIDER_RESPONSE"
|
|
FinishInvalidStructuredOutput FinishReason = "INVALID_STRUCTURED_OUTPUT"
|
|
FinishDegraded FinishReason = "DEGRADED"
|
|
)
|
|
|
|
type ContextExcerpt struct {
|
|
ID ContextExcerptID
|
|
SourceKind string
|
|
SourceID string
|
|
Revision int64
|
|
Sensitivity Sensitivity
|
|
Text string
|
|
}
|
|
|
|
// AdvisoryRequest is assembled by a trusted gateway. Actor, Principal, Scope
|
|
// and Binding fields must never be accepted as browser-selected authority.
|
|
type AdvisoryRequest struct {
|
|
Version ContractVersion
|
|
RequestID RequestID
|
|
ActorID identity.ActorID
|
|
PrincipalID identity.PrincipalID
|
|
ScopeID authority.ScopeID
|
|
Message string
|
|
Context []ContextExcerpt
|
|
Locale string
|
|
MaxOutputBytes int
|
|
ProviderBindingID capability.CapabilityBindingID
|
|
ProviderBindingRevision int64
|
|
ProviderInstanceID capability.ProviderInstanceID
|
|
ModelDescriptorID capability.ModelDescriptorID
|
|
ProviderModelID capability.ProviderModelID
|
|
}
|
|
|
|
// GatewayAdvisoryRequest describes the task and policy requirement. It cannot
|
|
// name a provider, model or binding; Capability owns that selection.
|
|
type GatewayAdvisoryRequest struct {
|
|
Version ContractVersion
|
|
RequestID RequestID
|
|
ActorID identity.ActorID
|
|
PrincipalID identity.PrincipalID
|
|
ScopeID authority.ScopeID
|
|
Message string
|
|
Context []ContextExcerpt
|
|
Locale string
|
|
MaxOutputBytes int
|
|
DataPolicy capability.DataPolicy
|
|
EgressAcknowledged bool
|
|
}
|
|
|
|
type GatewayAdvisoryPolicyRequest struct {
|
|
PrincipalID identity.PrincipalID
|
|
DataPolicy capability.DataPolicy
|
|
}
|
|
|
|
type GatewayAdvisoryPolicy struct {
|
|
ExternalEgress bool
|
|
AcknowledgementRequired bool
|
|
Disclosure string
|
|
}
|
|
|
|
type ProviderUsage struct {
|
|
InputUnits int64
|
|
OutputUnits int64
|
|
}
|
|
|
|
type AdvisoryResponse struct {
|
|
Version ContractVersion
|
|
RequestID RequestID
|
|
ProviderBindingID capability.CapabilityBindingID
|
|
ProviderBindingRevision int64
|
|
AdvisoryText string
|
|
ReferencedExcerptIDs []ContextExcerptID
|
|
FinishReason FinishReason
|
|
Usage *ProviderUsage
|
|
}
|
|
|
|
type GatewayAdvisoryResponse struct {
|
|
Version ContractVersion
|
|
RequestID RequestID
|
|
AdvisoryText string
|
|
ReferencedExcerptIDs []ContextExcerptID
|
|
FinishReason FinishReason
|
|
Usage *ProviderUsage
|
|
}
|