Documentation
¶
Index ¶
- type AuthMode
- type Capabilities
- func (c *Capabilities) GetImageEditingFormat() string
- func (c *Capabilities) HasDecision() bool
- func (c *Capabilities) HasImageEditing() bool
- func (c *Capabilities) HasOCR() bool
- func (c *Capabilities) HasReasoning() bool
- func (c *Capabilities) HasToolCalls() bool
- func (c *Capabilities) HasVision() bool
- func (c *Capabilities) ToMap() map[string]interface{}
- type DecisionAnswer
- type DecisionConnector
- type DecisionQuestion
- type DecisionRequest
- type DecisionResponse
- type DecisionUsage
- type LLMConnector
- type ParamSpec
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthMode ¶
type AuthMode string
AuthMode defines how an LLM connector authenticates with its API.
type Capabilities ¶
type Capabilities struct {
Vision interface{} `json:"vision,omitempty" yaml:"vision,omitempty"` // Supports vision/image input: bool or VisionFormat string ("openai", "claude"/"base64", "default")
Audio bool `json:"audio,omitempty" yaml:"audio,omitempty"` // Supports audio input/output (multimodal audio understanding)
STT bool `json:"stt,omitempty" yaml:"stt,omitempty"` // Speech-to-Text / audio transcription model (e.g. Whisper)
ToolCalls bool `json:"tool_calls,omitempty" yaml:"tool_calls,omitempty"` // Supports tool/function calling
Reasoning bool `json:"reasoning,omitempty" yaml:"reasoning,omitempty"` // Supports reasoning/thinking mode (o1, DeepSeek R1)
Streaming bool `json:"streaming,omitempty" yaml:"streaming,omitempty"` // Supports streaming responses
JSON bool `json:"json,omitempty" yaml:"json,omitempty"` // Supports JSON mode
Multimodal bool `json:"multimodal,omitempty" yaml:"multimodal,omitempty"` // Supports multimodal input
Embedding bool `json:"embedding,omitempty" yaml:"embedding,omitempty"` // Text embedding model (e.g. text-embedding-3-large)
ImageGeneration bool `json:"image_generation,omitempty" yaml:"image_generation,omitempty"` // Image generation model (e.g. DALL-E, Seedream)
ImageEditing interface{} `json:"image_editing,omitempty" yaml:"image_editing,omitempty"` // Image editing: bool or protocol string ("multipart" = form-data /images/edits, "json" = JSON /images/generations + image field)
OCR bool `json:"ocr,omitempty" yaml:"ocr,omitempty"` // OCR text extraction model (e.g. Qwen3.5-OCR, Qwen-VL-OCR)
Decision bool `json:"decision,omitempty" yaml:"decision,omitempty"` // TypeSafe Jev: typed decision (choice/score/noul)
TemperatureAdjustable bool `json:"temperature_adjustable,omitempty" yaml:"temperature_adjustable,omitempty"` // Supports temperature adjustment (reasoning models typically don't)
MaxInputTokens int `json:"max_input_tokens,omitempty" yaml:"max_input_tokens,omitempty"` // Maximum input context window size (aligned with Anthropic Models API)
MaxOutputTokens int `json:"max_output_tokens,omitempty" yaml:"max_output_tokens,omitempty"` // Maximum output tokens the model can generate
}
Capabilities defines the capabilities of a language model. This is the universal capability definition shared by all LLM connectors (OpenAI, Anthropic, etc.). Configure via the connector's options.capabilities field.
func (*Capabilities) GetImageEditingFormat ¶
func (c *Capabilities) GetImageEditingFormat() string
GetImageEditingFormat returns the image editing API protocol. Returns "multipart" or "json" when explicitly set, empty string otherwise. Callers should treat empty as "json" (the most common default).
func (*Capabilities) HasDecision ¶
func (c *Capabilities) HasDecision() bool
HasDecision reports whether the model supports typed decision (choice/score/noul).
func (*Capabilities) HasImageEditing ¶
func (c *Capabilities) HasImageEditing() bool
HasImageEditing reports whether the model supports image editing / image-to-image. ImageEditing is interface{} and may be bool, string (protocol name), or nil.
func (*Capabilities) HasOCR ¶
func (c *Capabilities) HasOCR() bool
HasOCR reports whether the model supports OCR text extraction.
func (*Capabilities) HasReasoning ¶
func (c *Capabilities) HasReasoning() bool
HasReasoning reports whether the model supports thinking/reasoning mode.
func (*Capabilities) HasToolCalls ¶
func (c *Capabilities) HasToolCalls() bool
HasToolCalls reports whether the model supports tool/function calling.
func (*Capabilities) HasVision ¶
func (c *Capabilities) HasVision() bool
HasVision reports whether the model supports vision/image input. Vision is interface{} and may be bool, string (format name), or nil.
func (*Capabilities) ToMap ¶
func (c *Capabilities) ToMap() map[string]interface{}
ToMap converts Capabilities to map[string]interface{} for API responses. This is the canonical implementation; yao-layer wrappers should delegate here.
type DecisionAnswer ¶
type DecisionAnswer struct {
Type string `json:"type"`
Choice string `json:"choice,omitempty"`
Score *float64 `json:"score,omitempty"` // expected level, may be fractional (e.g. 1.28)
Noul *float64 `json:"noul,omitempty"` // 0–1 probability
Probabilities map[string]float64 `json:"probabilities,omitempty"`
Confidence *float64 `json:"confidence,omitempty"` // nil for noul; calibrated value for choice/score
Legend map[string]string `json:"legend,omitempty"` // score level descriptions (e.g. {"0":"Calm","1":"Frustrated"})
}
DecisionAnswer is one answer returned by the decision model.
Field presence varies by answer type:
- choice: Choice + Probabilities + Confidence (calibrated)
- score: Score + Legend + Probabilities + Confidence (calibrated)
- noul: Noul only — Confidence is nil (not returned by the API)
Confidence uses *float64 so nil distinguishes "field absent" (noul) from confidence=0 (a valid low-confidence choice/score response).
func (*DecisionAnswer) HasConfidence ¶
func (a *DecisionAnswer) HasConfidence() bool
HasConfidence reports whether this answer includes a calibrated confidence value. Returns false for noul answers (which never carry confidence).
type DecisionConnector ¶
type DecisionConnector interface {
LLMConnector
// Decide sends a typed decision request and returns structured answers.
Decide(req *DecisionRequest) (*DecisionResponse, error)
}
DecisionConnector extends LLMConnector for TypeSafe-style decision models. Use type assertion: if dc, ok := conn.(llm.DecisionConnector); ok { ... }
type DecisionQuestion ¶
type DecisionQuestion struct {
Type string `json:"type"` // "choice" | "score" | "noul"
Instructions string `json:"instructions"` // natural-language instructions for the model
Criteria interface{} `json:"criteria,omitempty"` // choice: map[string]string, score: []string
}
DecisionQuestion defines a single typed question in a decision request. Criteria shape is rigid: choice requires map[string]string (option→description), score requires []string (level labels). Mismatched types cause 422 from the API.
type DecisionRequest ¶
type DecisionRequest struct {
Model string `json:"model"`
State interface{} `json:"state"` // string, object, or array — required
Questions map[string]DecisionQuestion `json:"questions"`
}
DecisionRequest is the payload sent to the decision endpoint (POST /v1/systemone or proxy equivalent). State is required (empty string is valid, missing field is not).
type DecisionResponse ¶
type DecisionResponse struct {
Model string `json:"model"`
Answers map[string]DecisionAnswer `json:"answers"`
Usage *DecisionUsage `json:"usage,omitempty"`
}
DecisionResponse is the response from the decision endpoint.
type DecisionUsage ¶
type DecisionUsage struct {
InputTokens int `json:"input_tokens"`
OutputTokens int `json:"output_tokens"`
}
DecisionUsage reports token consumption for a decision request. Only input tokens are billed; output tokens are reported but free on TypeSafe.
type LLMConnector ¶
type LLMConnector interface {
GetAuthMode() AuthMode
GetURL() string // API base URL (host > proxy > provider default). Does NOT include endpoint paths.
GetKey() string
GetModel() string
GetSupportedParams() map[string]*ParamSpec // nil → use provider-type defaults
GetCapabilities() *Capabilities
}
LLMConnector provides typed access to LLM-specific metadata. OpenAI and Anthropic connectors implement this interface. Consumers should prefer these methods over digging into Setting() maps.
This interface intentionally does NOT embed connector.Connector to avoid import cycles (connector root package imports connector subpackages). Use type assertion: if llm, ok := conn.(llm.LLMConnector); ok { ... }
type ParamSpec ¶
type ParamSpec struct {
Min *float64 `json:"min,omitempty"`
Max *float64 `json:"max,omitempty"`
AllowedValues []interface{} `json:"allowed_values,omitempty"`
}
ParamSpec constrains values for a single API request-body parameter. An empty ParamSpec ({}) means "allowed, no constraints".