187 lines
5.0 KiB
Go
187 lines
5.0 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// ArtifactRefType defines how an artifact is referenced.
|
|
type ArtifactRefType string
|
|
|
|
const (
|
|
ArtifactRefInline ArtifactRefType = "inline"
|
|
ArtifactRefFile ArtifactRefType = "file"
|
|
ArtifactRefS3 ArtifactRefType = "s3"
|
|
)
|
|
|
|
// OutputFormat defines the desired format of the generated artifact.
|
|
type OutputFormat string
|
|
|
|
const (
|
|
FormatText OutputFormat = "text"
|
|
FormatMarkdown OutputFormat = "markdown"
|
|
FormatJSON OutputFormat = "json"
|
|
)
|
|
|
|
// ValidationMode defines how the output should be validated.
|
|
type ValidationMode string
|
|
|
|
const (
|
|
ValidationNone ValidationMode = "none"
|
|
ValidationBasic ValidationMode = "basic"
|
|
ValidationJSON ValidationMode = "json"
|
|
ValidationJSONSchema ValidationMode = "json_schema"
|
|
)
|
|
|
|
// ValidationStatus defines the result of a validation check.
|
|
type ValidationStatus string
|
|
|
|
const (
|
|
ValidationPassed ValidationStatus = "passed"
|
|
ValidationFailed ValidationStatus = "failed"
|
|
ValidationSkipped ValidationStatus = "skipped"
|
|
)
|
|
|
|
// RunRequest represents a request to generate a single artifact.
|
|
type RunRequest struct {
|
|
ProfileID string
|
|
ProfileVersion string
|
|
Inputs map[string]ArtifactRef
|
|
Vars map[string]string
|
|
Model *ModelTarget
|
|
Validation *OutputContract
|
|
Metadata map[string]string
|
|
}
|
|
|
|
// RunResult represents the complete result of a prompt execution run.
|
|
type RunResult struct {
|
|
RunID string
|
|
Artifact Artifact
|
|
RawOutput string
|
|
Validation ValidationResult
|
|
ProfileID string
|
|
ProfileVersion string
|
|
ProfileHash string
|
|
ModelName string
|
|
Endpoint string
|
|
ModelParams ModelTarget
|
|
InputHashes map[string]string
|
|
PromptHash string
|
|
Usage TokenUsage
|
|
StartTime time.Time
|
|
EndTime time.Time
|
|
Duration time.Duration
|
|
Error error
|
|
}
|
|
|
|
// ArtifactRef represents a reference to an input artifact.
|
|
type ArtifactRef struct {
|
|
Type ArtifactRefType
|
|
URI string
|
|
Body string // Used for inline
|
|
}
|
|
|
|
// Artifact represents the actual loaded content of a reference.
|
|
type Artifact struct {
|
|
Name string
|
|
ContentType string
|
|
Body []byte
|
|
URI string
|
|
Size int64
|
|
Hash string
|
|
}
|
|
|
|
// PromptProfile represents a configured prompt execution profile.
|
|
type PromptProfile struct {
|
|
ID string `yaml:"id"`
|
|
Version string `yaml:"version"`
|
|
Description string `yaml:"description"`
|
|
ExpectedInputs []string `yaml:"expected_inputs"`
|
|
Templates []PromptMessageTemplate `yaml:"templates"`
|
|
ModelDefaults ModelTarget `yaml:"model_defaults"`
|
|
OutputFormat OutputFormat `yaml:"output_format"`
|
|
Validation OutputContract `yaml:"validation"`
|
|
}
|
|
|
|
// PromptMessageTemplate defines a template for a chat message.
|
|
type PromptMessageTemplate struct {
|
|
Role string `yaml:"role"`
|
|
Content string `yaml:"content"`
|
|
}
|
|
|
|
// ModelTarget represents the LLM endpoint and configuration.
|
|
type ModelTarget struct {
|
|
Endpoint string `yaml:"endpoint"`
|
|
Model string `yaml:"model"`
|
|
Temperature float64 `yaml:"temperature"`
|
|
MaxTokens int `yaml:"max_tokens"`
|
|
TopP float64 `yaml:"top_p"`
|
|
TimeoutSeconds int `yaml:"timeout_seconds"`
|
|
}
|
|
|
|
// OutputContract defines the requirements for the output artifact.
|
|
type OutputContract struct {
|
|
Format OutputFormat `yaml:"format"`
|
|
ValidationMode ValidationMode `yaml:"validation_mode"`
|
|
SchemaPath string `yaml:"schema_path"`
|
|
RepairAttempts int `yaml:"repair_attempts"`
|
|
}
|
|
|
|
// RenderedPrompt represents the prompt after template application.
|
|
type RenderedPrompt struct {
|
|
Messages []RenderedMessage
|
|
}
|
|
|
|
// RenderedMessage is a single message in a rendered prompt.
|
|
type RenderedMessage struct {
|
|
Role string
|
|
Content string
|
|
}
|
|
|
|
// GenerateRequest is the internal request passed to the LLM client.
|
|
type GenerateRequest struct {
|
|
Prompt RenderedPrompt
|
|
Target ModelTarget
|
|
}
|
|
|
|
// GenerateResponse is the response received from the LLM client.
|
|
type GenerateResponse struct {
|
|
Content string
|
|
Usage TokenUsage
|
|
}
|
|
|
|
// TokenUsage tracks token consumption.
|
|
type TokenUsage struct {
|
|
PromptTokens int
|
|
CompletionTokens int
|
|
TotalTokens int
|
|
}
|
|
|
|
// ValidationResult represents the outcome of an output validation.
|
|
type ValidationResult struct {
|
|
Status ValidationStatus
|
|
Mode ValidationMode
|
|
Errors []string
|
|
SchemaPath string
|
|
RepairAttempts int
|
|
IsValid bool
|
|
}
|
|
|
|
// RunMetadata contains auditing information for a run.
|
|
type RunMetadata struct {
|
|
RunID string
|
|
ProfileID string
|
|
ProfileVersion string
|
|
ProfileHash string
|
|
PromptHash string
|
|
InputHashes map[string]string
|
|
ModelEndpoint string
|
|
ModelName string
|
|
Params ModelTarget
|
|
Timestamp time.Time
|
|
Duration time.Duration
|
|
Usage TokenUsage
|
|
ValidationMode ValidationMode
|
|
ValidationStatus ValidationStatus
|
|
RepairAttempts int
|
|
}
|