Help us shape the future of Go! Take the 2026 Go Developer Survey

llm

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2026 License: Apache-2.0 Imports: 0 Imported by: 0

Documentation

Index

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.

const (
	AuthBearer  AuthMode = "bearer"    // Authorization: Bearer {key}
	AuthAPIKey  AuthMode = "api-key"   // api-key: {key} (Azure OpenAI)
	AuthXAPIKey AuthMode = "x-api-key" // x-api-key: {key} (Anthropic)
)

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".

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL