Documentation
¶
Overview ¶
Package contextcount provides deterministic complete-request context counting.
Index ¶
- Variables
- func CompatibleCounter(inf InferenceCapability, counter CounterCapability) error
- type CapabilityField
- type CapabilityKind
- type CapabilityValidationError
- type CapabilityValidationReason
- type ContextCount
- type ContextCountError
- type ContextCountFunc
- type ContextCounter
- type ContextCounterFunc
- type CountQuality
- type CounterCapability
- type CounterCompatibilityError
- type CounterCompatibilityReason
- type CounterTransport
- type Estimator
- type EstimatorStateError
- type EstimatorStateReason
- type InferenceCapability
- type InferenceTransport
- type ModelIdentityError
- type ProviderID
- type RequestEncodingError
- type RetentionPosture
- type SecurityIdentity
- type TokenizerRevision
- type UnsupportedAPIFormatError
Constants ¶
This section is empty.
Variables ¶
var ( ErrContextCountFunctionMissing = errors.New("context count function is missing") ErrContextCountQualityInvalid = errors.New("context count quality is invalid") ErrContextCountModelMismatch = errors.New("context count model does not match request model") ErrContextCountCapabilityQualityMismatch = errors.New("context count quality does not match declared capability") )
Functions ¶
func CompatibleCounter ¶
func CompatibleCounter(inf InferenceCapability, counter CounterCapability) error
CompatibleCounter reports whether a counter avoids weakening an inference path's transport, identity, and retention posture.
Types ¶
type CapabilityField ¶
type CapabilityField string
const ( CapabilityFieldProvider CapabilityField = "Provider" CapabilityFieldTransport CapabilityField = "Transport" CapabilityFieldSecurityIdentity CapabilityField = "SecurityIdentity" CapabilityFieldRetention CapabilityField = "Retention" CapabilityFieldTokenizerRevision CapabilityField = "TokenizerRev" CapabilityFieldQuality CapabilityField = "Quality" )
type CapabilityKind ¶
type CapabilityKind string
const ( CapabilityKindCounter CapabilityKind = "counter" CapabilityKindInference CapabilityKind = "inference" )
type CapabilityValidationError ¶
type CapabilityValidationError struct {
Capability CapabilityKind
Field CapabilityField
Reason CapabilityValidationReason
}
func (*CapabilityValidationError) Error ¶
func (e *CapabilityValidationError) Error() string
type CapabilityValidationReason ¶
type CapabilityValidationReason string
const ( CapabilityValidationReasonUnknown CapabilityValidationReason = "unknown" CapabilityValidationReasonOutOfRange CapabilityValidationReason = "out of range" CapabilityValidationReasonEmpty CapabilityValidationReason = "must not be empty" CapabilityValidationReasonMustBeZero CapabilityValidationReason = "must be zero" )
type ContextCount ¶
type ContextCount struct {
Model model.ModelKey
InputTokens content.TokenCount
Quality CountQuality
}
ContextCount is the normalized input-token occupancy of one complete request.
type ContextCountError ¶
type ContextCountError struct {
Model model.ModelKey
Quality CountQuality
Cause error
}
func (*ContextCountError) Error ¶
func (e *ContextCountError) Error() string
func (*ContextCountError) Unwrap ¶
func (e *ContextCountError) Unwrap() error
type ContextCountFunc ¶
ContextCountFunc adapts a function to the ContextCounter contract.
type ContextCounter ¶
type ContextCounter interface {
CountContext(context.Context, inference.Request) (ContextCount, error)
CounterCapability() CounterCapability
}
ContextCounter counts the complete provider-neutral request and declares its secret-free trust posture without performing I/O.
type ContextCounterFunc ¶
type ContextCounterFunc struct {
Count ContextCountFunc
Capability CounterCapability
}
ContextCounterFunc combines a count function with its fixed trust metadata.
func (ContextCounterFunc) CountContext ¶
func (c ContextCounterFunc) CountContext(ctx context.Context, req inference.Request) (ContextCount, error)
CountContext calls the count function and rejects structurally invalid results.
func (ContextCounterFunc) CounterCapability ¶
func (c ContextCounterFunc) CounterCapability() CounterCapability
CounterCapability returns the adapter's declared metadata without I/O.
type CountQuality ¶
type CountQuality uint8
CountQuality describes how a context count was produced.
const ( CountQualityUnknown CountQuality = iota CountQualityExactProvider CountQualityExactLocal CountQualityHeuristicEstimate )
type CounterCapability ¶
type CounterCapability struct {
Provider ProviderID
Transport CounterTransport
SecurityIdentity SecurityIdentity
Retention RetentionPosture
TokenizerRev TokenizerRevision
Quality CountQuality
}
CounterCapability declares the trust and quality posture of a context counter.
func (CounterCapability) Validate ¶
func (c CounterCapability) Validate() error
Validate rejects incomplete or contradictory counter metadata.
type CounterCompatibilityError ¶
type CounterCompatibilityError struct {
Inference InferenceCapability
Counter CounterCapability
Reason CounterCompatibilityReason
Cause error
}
func (*CounterCompatibilityError) Error ¶
func (e *CounterCompatibilityError) Error() string
func (*CounterCompatibilityError) Unwrap ¶
func (e *CounterCompatibilityError) Unwrap() error
type CounterCompatibilityReason ¶
type CounterCompatibilityReason string
const ( CounterCompatibilityInvalidInference CounterCompatibilityReason = "invalid inference capability" CounterCompatibilityInvalidCounter CounterCompatibilityReason = "invalid counter capability" CounterCompatibilityProviderMismatch CounterCompatibilityReason = "provider mismatch" CounterCompatibilityIdentityMismatch CounterCompatibilityReason = "security identity mismatch" CounterCompatibilityTransportDowngrade CounterCompatibilityReason = "transport downgrade" CounterCompatibilityRetentionDowngrade CounterCompatibilityReason = "retention downgrade" )
type CounterTransport ¶
type CounterTransport uint8
CounterTransport describes where request bytes travel for counting.
const ( CounterTransportUnknown CounterTransport = iota CounterTransportLocal CounterTransportSameEndpoint CounterTransportSeparateEndpoint )
type Estimator ¶
type Estimator struct{}
Estimator deterministically estimates input occupancy from a dialect's encoded complete request. Its zero value is ready for use.
func NewEstimator ¶
func NewEstimator() *Estimator
NewEstimator constructs a deterministic complete-request estimator.
func (*Estimator) CountContext ¶
CountContext encodes the request in its model's API dialect and estimates one token per four encoded bytes. Invoke mode is canonical because ContextCounter has no response mode and streaming is response mechanics, not semantic input.
func (*Estimator) CounterCapability ¶
func (e *Estimator) CounterCapability() CounterCapability
CounterCapability declares that estimation stays in process, retains no request data, and is provider-neutral. A nil receiver returns invalid zero metadata rather than claiming a capability for unusable state.
type EstimatorStateError ¶
type EstimatorStateError struct {
Reason EstimatorStateReason
}
EstimatorStateError reports invalid estimator state.
func (*EstimatorStateError) Error ¶
func (e *EstimatorStateError) Error() string
type EstimatorStateReason ¶
type EstimatorStateReason string
EstimatorStateReason identifies why an estimator cannot produce a count.
const ( EstimatorStateNilReceiver EstimatorStateReason = "nil receiver" EstimatorStateNilContext EstimatorStateReason = "nil context" )
type InferenceCapability ¶
type InferenceCapability struct {
Provider ProviderID
Transport InferenceTransport
SecurityIdentity SecurityIdentity
Retention RetentionPosture
}
InferenceCapability declares the inference path's trust posture.
func (InferenceCapability) Validate ¶
func (c InferenceCapability) Validate() error
Validate rejects incomplete or contradictory inference metadata. An unknown retention posture remains structurally valid and is handled fail-closed by compatibility checks.
type InferenceTransport ¶
type InferenceTransport uint8
InferenceTransport describes the inference request's transport protection.
const ( InferenceTransportUnknown InferenceTransport = iota InferenceTransportLocal InferenceTransportTLS InferenceTransportAttestedTLS InferenceTransportEndToEndEncrypted )
type ModelIdentityError ¶
ModelIdentityError reports an unresolved request model identity.
func (*ModelIdentityError) Error ¶
func (e *ModelIdentityError) Error() string
func (*ModelIdentityError) Unwrap ¶
func (e *ModelIdentityError) Unwrap() error
type ProviderID ¶
type ProviderID string
ProviderID identifies the provider or gateway that owns a transport path.
type RequestEncodingError ¶
RequestEncodingError reports a dialect encoder failure and preserves its cause.
func (*RequestEncodingError) Error ¶
func (e *RequestEncodingError) Error() string
func (*RequestEncodingError) Unwrap ¶
func (e *RequestEncodingError) Unwrap() error
type RetentionPosture ¶
type RetentionPosture uint8
RetentionPosture describes provider-declared retention of request input.
const ( RetentionUnknown RetentionPosture = iota RetentionNone RetentionEphemeral RetentionLogged )
type SecurityIdentity ¶
type SecurityIdentity [32]byte
SecurityIdentity is a digest of canonical endpoint and security-policy identity.
type TokenizerRevision ¶
type TokenizerRevision string
TokenizerRevision identifies the tokenization algorithm used by a counter.
const EstimatorRevision TokenizerRevision = "bundled-openai-responses-anthropic-gemini-bedrock-request-bytes-div4-v3"
EstimatorRevision pins the bundled OpenAI/OpenAI-Responses/Anthropic/Gemini/Bedrock-Converse encoder suite and the complete-request bytes/4 heuristic. Any count-affecting codec change must bump this revision so durable measurements remain attributable. Bumped from "bundled-openai-responses-anthropic-gemini-request-bytes-div4-v1" to add the bedrockconverse encoder to the bundle, then to v2 because the bundled encoders themselves changed shape: OpenAI Chat emits max_completion_tokens for reasoning models, and Responses emits schema-valid input items (assistant history as a bare-string message, reasoning items carrying their issued id). Both shift encoded byte length, so counts taken under v1 are not comparable. Version 3 records Anthropic's conversation projection: adjacent neutral user-role turns now share the single user message sent on that wire.
type UnsupportedAPIFormatError ¶
UnsupportedAPIFormatError reports a request dialect without a bundled encoder.
func (*UnsupportedAPIFormatError) Error ¶
func (e *UnsupportedAPIFormatError) Error() string