Documentation
¶
Index ¶
- Constants
- func DefaultBaseURL(providerType ProviderType) string
- func ErrorStatusCode(err error) (int, bool)
- func EstimateMessagesTokens(messages []Message) int
- func ExecuteShellTool(ctx context.Context, runner shellcmd.Runner, args json.RawMessage) (any, error)
- func ExecuteSkillTool(_ context.Context, reader skills.Reader, args json.RawMessage) (any, error)
- func FormatContextUsage(used int, limit int) string
- func ResolveContextWindow(cfg Config) int
- func ResolveContextWindowWithDiscovery(ctx context.Context, cfg Config) int
- func RunToolChat(ctx context.Context, provider Provider, model string, messages []Message, ...) (*ChatResponse, []ToolCall, []ToolResult, []Message, error)
- func RunToolChatStream(ctx context.Context, provider Provider, model string, messages []Message, ...) (*ChatResponse, []ToolCall, []ToolResult, []Message, error)
- func SupportsModelDiscovery(providerType ProviderType) bool
- type APIError
- type ChatRequest
- type ChatResponse
- type Config
- type CustomProvider
- type LMStudioProvider
- type Message
- type ModelInfo
- type OllamaProvider
- type OpenAIProvider
- type OpenRouterProvider
- type Provider
- type ProviderType
- type StreamEvent
- type StreamEventType
- type StreamHandler
- type StreamingProvider
- type ToolCall
- type ToolChatEvent
- type ToolChatEventHandler
- type ToolChatEventType
- type ToolChatOptions
- type ToolClusterStore
- type ToolDefinition
- type ToolExecutionResult
- type ToolExecutor
- type ToolFunction
- type ToolHandler
- type ToolKubernetesClusterStore
- type ToolPipelineReloader
- type ToolPipelineRunResult
- type ToolPipelineRunner
- type ToolPipelineStore
- type ToolRegistry
- type ToolRegistryOptions
- type ToolResult
- type ToolResultDisplay
- type ToolResultDisplayKind
- type ToolSpec
- type Usage
Constants ¶
View Source
const ( DefaultContextWindow = 128000 DefaultOllamaContextWindow = 32768 )
View Source
const (
DefaultMaxToolChatRounds = 64
)
Variables ¶
This section is empty.
Functions ¶
func DefaultBaseURL ¶
func DefaultBaseURL(providerType ProviderType) string
func ErrorStatusCode ¶
func EstimateMessagesTokens ¶
func ExecuteShellTool ¶
func ExecuteSkillTool ¶
func FormatContextUsage ¶
func ResolveContextWindow ¶
func RunToolChat ¶
func RunToolChat( ctx context.Context, provider Provider, model string, messages []Message, tools ToolExecutor, options ToolChatOptions, ) (*ChatResponse, []ToolCall, []ToolResult, []Message, error)
func RunToolChatStream ¶
func RunToolChatStream( ctx context.Context, provider Provider, model string, messages []Message, tools ToolExecutor, options ToolChatOptions, handler ToolChatEventHandler, ) (*ChatResponse, []ToolCall, []ToolResult, []Message, error)
func SupportsModelDiscovery ¶
func SupportsModelDiscovery(providerType ProviderType) bool
Types ¶
type ChatRequest ¶
type ChatResponse ¶
type ChatResponse struct {
Content string `json:"content"`
Reasoning string `json:"reasoning,omitempty"`
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
Usage Usage `json:"usage"`
}
func ChatWithStream ¶
func ChatWithStream(ctx context.Context, provider Provider, req ChatRequest, handler StreamHandler) (*ChatResponse, error)
type Config ¶
type Config struct {
Name string `json:"name"`
ProviderType ProviderType `json:"provider_type"`
APIKey string `json:"api_key"`
BaseURL string `json:"base_url"`
Model string `json:"model"`
ExtraConfig map[string]any `json:"extra_config"`
}
func ConfigFromModel ¶
func ConfigFromModel(provider *models.LLMProvider) (Config, error)
type CustomProvider ¶
type CustomProvider struct {
// contains filtered or unexported fields
}
func NewCustomProvider ¶
func NewCustomProvider(cfg Config) (*CustomProvider, error)
func (*CustomProvider) Chat ¶
func (p *CustomProvider) Chat(ctx context.Context, req ChatRequest) (*ChatResponse, error)
func (*CustomProvider) ChatStream ¶
func (p *CustomProvider) ChatStream(ctx context.Context, req ChatRequest, handler StreamHandler) (*ChatResponse, error)
func (*CustomProvider) Name ¶
func (p *CustomProvider) Name() string
func (*CustomProvider) Type ¶
func (p *CustomProvider) Type() ProviderType
type LMStudioProvider ¶
type LMStudioProvider struct {
*OpenAIProvider
}
func NewLMStudioProvider ¶
func NewLMStudioProvider(cfg Config) (*LMStudioProvider, error)
func (*LMStudioProvider) Name ¶
func (p *LMStudioProvider) Name() string
func (*LMStudioProvider) Type ¶
func (p *LMStudioProvider) Type() ProviderType
type ModelInfo ¶
type OllamaProvider ¶
type OllamaProvider struct {
// contains filtered or unexported fields
}
func NewOllamaProvider ¶
func NewOllamaProvider(cfg Config) (*OllamaProvider, error)
func (*OllamaProvider) Chat ¶
func (p *OllamaProvider) Chat(ctx context.Context, req ChatRequest) (*ChatResponse, error)
func (*OllamaProvider) ChatStream ¶
func (p *OllamaProvider) ChatStream(ctx context.Context, req ChatRequest, handler StreamHandler) (*ChatResponse, error)
func (*OllamaProvider) Name ¶
func (p *OllamaProvider) Name() string
func (*OllamaProvider) Type ¶
func (p *OllamaProvider) Type() ProviderType
type OpenAIProvider ¶
type OpenAIProvider struct {
// contains filtered or unexported fields
}
func NewOpenAIProvider ¶
func NewOpenAIProvider(cfg Config) (*OpenAIProvider, error)
func (*OpenAIProvider) Chat ¶
func (p *OpenAIProvider) Chat(ctx context.Context, req ChatRequest) (*ChatResponse, error)
func (*OpenAIProvider) ChatStream ¶
func (p *OpenAIProvider) ChatStream(ctx context.Context, req ChatRequest, handler StreamHandler) (*ChatResponse, error)
func (*OpenAIProvider) Name ¶
func (p *OpenAIProvider) Name() string
func (*OpenAIProvider) Type ¶
func (p *OpenAIProvider) Type() ProviderType
type OpenRouterProvider ¶
type OpenRouterProvider struct {
*OpenAIProvider
}
func NewOpenRouterProvider ¶
func NewOpenRouterProvider(cfg Config) (*OpenRouterProvider, error)
func (*OpenRouterProvider) Name ¶
func (p *OpenRouterProvider) Name() string
func (*OpenRouterProvider) Type ¶
func (p *OpenRouterProvider) Type() ProviderType
type Provider ¶
type Provider interface {
Chat(ctx context.Context, req ChatRequest) (*ChatResponse, error)
Name() string
Type() ProviderType
}
func NewProvider ¶
type ProviderType ¶
type ProviderType string
const ( ProviderOpenAI ProviderType = "openai" ProviderOpenRouter ProviderType = "openrouter" ProviderAnthropic ProviderType = "anthropic" ProviderOllama ProviderType = "ollama" ProviderLMStudio ProviderType = "lmstudio" ProviderGemini ProviderType = "gemini" ProviderGroq ProviderType = "groq" ProviderCustom ProviderType = "custom" )
type StreamEvent ¶
type StreamEvent struct {
Type StreamEventType `json:"type"`
Delta string `json:"delta,omitempty"`
Usage Usage `json:"usage,omitempty"`
}
type StreamEventType ¶
type StreamEventType string
const ( StreamEventContentDelta StreamEventType = "content_delta" StreamEventReasoningDelta StreamEventType = "reasoning_delta" StreamEventUsage StreamEventType = "usage" )
type StreamHandler ¶
type StreamHandler func(StreamEvent) error
type StreamingProvider ¶
type StreamingProvider interface {
ChatStream(ctx context.Context, req ChatRequest, handler StreamHandler) (*ChatResponse, error)
}
type ToolCall ¶
type ToolCall struct {
ID string `json:"id"`
Type string `json:"type"`
Function ToolFunction `json:"function"`
}
type ToolChatEvent ¶
type ToolChatEvent struct {
Type ToolChatEventType `json:"type"`
Delta string `json:"delta,omitempty"`
ToolCall *ToolCall `json:"tool_call,omitempty"`
ToolResult *ToolResult `json:"tool_result,omitempty"`
Usage *Usage `json:"usage,omitempty"`
}
type ToolChatEventHandler ¶
type ToolChatEventHandler func(ToolChatEvent) error
type ToolChatEventType ¶
type ToolChatEventType string
const ( ToolChatEventContentDelta ToolChatEventType = "content_delta" ToolChatEventReasoningDelta ToolChatEventType = "reasoning_delta" ToolChatEventToolStarted ToolChatEventType = "tool_started" ToolChatEventToolFinished ToolChatEventType = "tool_finished" ToolChatEventUsage ToolChatEventType = "usage" )
type ToolChatOptions ¶ added in v1.11.0
type ToolClusterStore ¶
type ToolDefinition ¶
func ShellToolDefinition ¶
func ShellToolDefinition() ToolDefinition
func SkillToolDefinition ¶
func SkillToolDefinition() ToolDefinition
type ToolExecutionResult ¶ added in v1.11.0
type ToolExecutionResult struct {
Result any `json:"result,omitempty"`
Display *ToolResultDisplay `json:"display,omitempty"`
}
ToolExecutionResult wraps a raw tool result with optional chat display metadata.
type ToolExecutor ¶
type ToolExecutor interface {
GetAllTools() []ToolDefinition
Execute(ctx context.Context, name string, arguments json.RawMessage) (any, error)
}
type ToolFunction ¶
type ToolHandler ¶
type ToolPipelineReloader ¶
type ToolPipelineRunResult ¶
type ToolPipelineRunResult struct {
ExecutionID string `json:"execution_id"`
PipelineID string `json:"pipeline_id"`
PipelineName string `json:"pipeline_name"`
Status string `json:"status"`
NodesRun int `json:"nodes_run"`
Returned bool `json:"returned"`
ReturnValue any `json:"return_value,omitempty"`
}
type ToolPipelineRunner ¶
type ToolPipelineStore ¶
type ToolPipelineStore interface {
List(ctx context.Context) ([]models.Pipeline, error)
GetByID(ctx context.Context, id string) (*models.Pipeline, error)
Create(ctx context.Context, pipeline *models.Pipeline) error
Update(ctx context.Context, pipeline *models.Pipeline) error
Delete(ctx context.Context, id string) error
}
type ToolRegistry ¶
type ToolRegistry struct {
// contains filtered or unexported fields
}
func NewToolRegistry ¶
func NewToolRegistry( clusterStore ToolClusterStore, pipelineStore ToolPipelineStore, pipelineReloader ToolPipelineReloader, pipelineRunner ToolPipelineRunner, defaultClusterID string, skillStore skills.Reader, shellRunner shellcmd.Runner, ) *ToolRegistry
func NewToolRegistryWithOptions ¶
func NewToolRegistryWithOptions(opts ToolRegistryOptions) *ToolRegistry
func (*ToolRegistry) Execute ¶
func (r *ToolRegistry) Execute(ctx context.Context, toolName string, args json.RawMessage) (any, error)
func (*ToolRegistry) GetAllTools ¶
func (r *ToolRegistry) GetAllTools() []ToolDefinition
func (*ToolRegistry) Register ¶
func (r *ToolRegistry) Register(def ToolDefinition, handler ToolHandler)
type ToolRegistryOptions ¶
type ToolRegistryOptions struct {
ProxmoxStore ToolClusterStore
KubernetesStore ToolKubernetesClusterStore
PipelineStore ToolPipelineStore
PipelineReloader ToolPipelineReloader
PipelineRunner ToolPipelineRunner
DefaultProxmoxClusterID string
DefaultKubernetesClusterID string
EnableProxmox bool
EnableKubernetes bool
SkillStore skills.Reader
ShellRunner shellcmd.Runner
WorkspaceRoot string
WebToolsConfig *webtools.RuntimeConfig
}
type ToolResult ¶
type ToolResult struct {
Tool string `json:"tool"`
Arguments any `json:"arguments,omitempty"`
Result any `json:"result,omitempty"`
Error string `json:"error,omitempty"`
Display *ToolResultDisplay `json:"display,omitempty"`
}
type ToolResultDisplay ¶ added in v1.11.0
type ToolResultDisplay struct {
Kind ToolResultDisplayKind `json:"kind"`
Title string `json:"title,omitempty"`
Path string `json:"path,omitempty"`
Summary string `json:"summary,omitempty"`
Preview string `json:"preview,omitempty"`
Diff string `json:"diff,omitempty"`
Truncated bool `json:"truncated,omitempty"`
Stats map[string]any `json:"stats,omitempty"`
}
ToolResultDisplay carries optional rendering metadata for tool transcript rows.
type ToolResultDisplayKind ¶ added in v1.11.0
type ToolResultDisplayKind string
ToolResultDisplayKind describes how a tool result should be rendered in chat.
const ( ToolResultDisplayGeneric ToolResultDisplayKind = "generic" ToolResultDisplayListDirectory ToolResultDisplayKind = "list_directory" ToolResultDisplayGlob ToolResultDisplayKind = "glob" ToolResultDisplayGrep ToolResultDisplayKind = "grep" ToolResultDisplayRead ToolResultDisplayKind = "read" ToolResultDisplayDiff ToolResultDisplayKind = "diff" )
Click to show internal directories.
Click to hide internal directories.