Documentation
¶
Overview ¶
Package plugin defines the plugin system for Sentinel.
Plugins are notified of lifecycle events (eval run started, case completed, regression detected, etc.) and can react to them — logging, metrics, tracing, auditing, etc.
Each lifecycle hook is a separate interface so plugins opt in only to the events they care about.
Index ¶
- type BaselineSaved
- type CaseCompleted
- type CaseFailed
- type CaseStarted
- type ComparisonCompleted
- type EvalRunCompleted
- type EvalRunFailed
- type EvalRunStarted
- type Extension
- type PersonaEvalCompleted
- type PersonaEvalStarted
- type PromptVersionCreated
- type RedTeamCompleted
- type RedTeamStarted
- type Registry
- func (r *Registry) EmitBaselineSaved(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID)
- func (r *Registry) EmitCaseCompleted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, score float64, ...)
- func (r *Registry) EmitCaseFailed(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, caseErr error)
- func (r *Registry) EmitCaseStarted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID)
- func (r *Registry) EmitComparisonCompleted(ctx context.Context, suiteID id.SuiteID, models []string, ...)
- func (r *Registry) EmitEvalRunCompleted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, passRate float64, ...)
- func (r *Registry) EmitEvalRunFailed(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, runErr error)
- func (r *Registry) EmitEvalRunStarted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, model string)
- func (r *Registry) EmitPersonaEvalCompleted(ctx context.Context, runID id.EvalRunID, personaName string, ...)
- func (r *Registry) EmitPersonaEvalStarted(ctx context.Context, runID id.EvalRunID, personaName string)
- func (r *Registry) EmitPromptVersionCreated(ctx context.Context, suiteID id.SuiteID, pvID id.PromptVersionID, version int)
- func (r *Registry) EmitRedTeamCompleted(ctx context.Context, suiteID id.SuiteID, bypassCount int, ...)
- func (r *Registry) EmitRedTeamStarted(ctx context.Context, suiteID id.SuiteID, attackCount int)
- func (r *Registry) EmitRegressionDetected(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID, ...)
- func (r *Registry) EmitShutdown(ctx context.Context)
- func (r *Registry) Extensions() []Extension
- func (r *Registry) Register(e Extension)
- type RegressionDetected
- type Shutdown
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaselineSaved ¶
type BaselineSaved interface {
OnBaselineSaved(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID) error
}
BaselineSaved is called when a baseline is saved.
type CaseCompleted ¶
type CaseCompleted interface {
OnCaseCompleted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, score float64, elapsed time.Duration) error
}
CaseCompleted is called when evaluation of a single case finishes.
type CaseFailed ¶
type CaseFailed interface {
OnCaseFailed(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, err error) error
}
CaseFailed is called when evaluation of a single case fails.
type CaseStarted ¶
type CaseStarted interface {
OnCaseStarted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID) error
}
CaseStarted is called when evaluation of a single case begins.
type ComparisonCompleted ¶
type ComparisonCompleted interface {
OnComparisonCompleted(ctx context.Context, suiteID id.SuiteID, models []string, elapsed time.Duration) error
}
ComparisonCompleted is called when a multi-model comparison finishes.
type EvalRunCompleted ¶
type EvalRunCompleted interface {
OnEvalRunCompleted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, passRate float64, elapsed time.Duration) error
}
EvalRunCompleted is called when an evaluation run finishes successfully.
type EvalRunFailed ¶
type EvalRunFailed interface {
OnEvalRunFailed(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, err error) error
}
EvalRunFailed is called when an evaluation run fails.
type EvalRunStarted ¶
type EvalRunStarted interface {
OnEvalRunStarted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, model string) error
}
EvalRunStarted is called when an evaluation run begins.
type Extension ¶
type Extension interface {
// Name returns a unique human-readable name for the plugin.
Name() string
}
Extension is the base interface all Sentinel plugins must implement.
type PersonaEvalCompleted ¶
type PersonaEvalCompleted interface {
OnPersonaEvalCompleted(ctx context.Context, runID id.EvalRunID, personaName string, dimensions map[string]float64) error
}
PersonaEvalCompleted is called when a persona-aware evaluation finishes.
type PersonaEvalStarted ¶
type PersonaEvalStarted interface {
OnPersonaEvalStarted(ctx context.Context, runID id.EvalRunID, personaName string) error
}
PersonaEvalStarted is called when a persona-aware evaluation begins.
type PromptVersionCreated ¶
type PromptVersionCreated interface {
OnPromptVersionCreated(ctx context.Context, suiteID id.SuiteID, pvID id.PromptVersionID, version int) error
}
PromptVersionCreated is called when a prompt version is created.
type RedTeamCompleted ¶
type RedTeamCompleted interface {
OnRedTeamCompleted(ctx context.Context, suiteID id.SuiteID, bypassCount int, elapsed time.Duration) error
}
RedTeamCompleted is called when a red team evaluation finishes.
type RedTeamStarted ¶
type RedTeamStarted interface {
OnRedTeamStarted(ctx context.Context, suiteID id.SuiteID, attackCount int) error
}
RedTeamStarted is called when a red team evaluation begins.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry holds registered plugins and dispatches lifecycle events to them. It type-caches plugins at registration time so emit calls iterate only over plugins that implement the relevant hook.
func NewRegistry ¶
NewRegistry creates a plugin registry with the given logger.
func (*Registry) EmitBaselineSaved ¶
func (r *Registry) EmitBaselineSaved(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID)
EmitBaselineSaved notifies all plugins that implement BaselineSaved.
func (*Registry) EmitCaseCompleted ¶
func (r *Registry) EmitCaseCompleted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, score float64, elapsed time.Duration)
EmitCaseCompleted notifies all plugins that implement CaseCompleted.
func (*Registry) EmitCaseFailed ¶
func (r *Registry) EmitCaseFailed(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, caseErr error)
EmitCaseFailed notifies all plugins that implement CaseFailed.
func (*Registry) EmitCaseStarted ¶
EmitCaseStarted notifies all plugins that implement CaseStarted.
func (*Registry) EmitComparisonCompleted ¶
func (r *Registry) EmitComparisonCompleted(ctx context.Context, suiteID id.SuiteID, models []string, elapsed time.Duration)
EmitComparisonCompleted notifies all plugins that implement ComparisonCompleted.
func (*Registry) EmitEvalRunCompleted ¶
func (r *Registry) EmitEvalRunCompleted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, passRate float64, elapsed time.Duration)
EmitEvalRunCompleted notifies all plugins that implement EvalRunCompleted.
func (*Registry) EmitEvalRunFailed ¶
func (r *Registry) EmitEvalRunFailed(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, runErr error)
EmitEvalRunFailed notifies all plugins that implement EvalRunFailed.
func (*Registry) EmitEvalRunStarted ¶
func (r *Registry) EmitEvalRunStarted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, model string)
EmitEvalRunStarted notifies all plugins that implement EvalRunStarted.
func (*Registry) EmitPersonaEvalCompleted ¶
func (r *Registry) EmitPersonaEvalCompleted(ctx context.Context, runID id.EvalRunID, personaName string, dimensions map[string]float64)
EmitPersonaEvalCompleted notifies all plugins that implement PersonaEvalCompleted.
func (*Registry) EmitPersonaEvalStarted ¶
func (r *Registry) EmitPersonaEvalStarted(ctx context.Context, runID id.EvalRunID, personaName string)
EmitPersonaEvalStarted notifies all plugins that implement PersonaEvalStarted.
func (*Registry) EmitPromptVersionCreated ¶
func (r *Registry) EmitPromptVersionCreated(ctx context.Context, suiteID id.SuiteID, pvID id.PromptVersionID, version int)
EmitPromptVersionCreated notifies all plugins that implement PromptVersionCreated.
func (*Registry) EmitRedTeamCompleted ¶
func (r *Registry) EmitRedTeamCompleted(ctx context.Context, suiteID id.SuiteID, bypassCount int, elapsed time.Duration)
EmitRedTeamCompleted notifies all plugins that implement RedTeamCompleted.
func (*Registry) EmitRedTeamStarted ¶
EmitRedTeamStarted notifies all plugins that implement RedTeamStarted.
func (*Registry) EmitRegressionDetected ¶
func (r *Registry) EmitRegressionDetected(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID, delta float64)
EmitRegressionDetected notifies all plugins that implement RegressionDetected.
func (*Registry) EmitShutdown ¶
EmitShutdown notifies all plugins that implement Shutdown.
func (*Registry) Extensions ¶
Extensions returns all registered plugins.
type RegressionDetected ¶
type RegressionDetected interface {
OnRegressionDetected(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID, delta float64) error
}
RegressionDetected is called when a regression is found against a baseline.