Documentation
¶
Index ¶
- type ContentPart
- type GroqTranscriptionResponse
- type ImageStruct
- type MessageForLLM
- type OpenRouterRequest
- type OpenRouterRequestWithParts
- type OpenRouterResponse
- type ParameterProperty
- type PartMessageForLLM
- type ProviderConfig
- type ProviderSortEnum
- type ReasoningConfig
- type RoleEnum
- type StructuredOutputProperty
- type StructuredOutputSchema
- type StructuredOutputSchemaDefinition
- type ToolChoiceEnum
- type ToolParameters
- type ToolSchema
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContentPart ¶
type ContentPart struct {
Type string `json:"type"`
Text string `json:"text,omitempty"`
ImageURL *ImageStruct `json:"image_url,omitempty"`
}
type ImageStruct ¶
type ImageStruct struct {
URL string `json:"url"`
}
type MessageForLLM ¶
MessageForLLM defines a typical message sent to an LLM. Check RoleEnum for the available roles.
type OpenRouterRequest ¶
type OpenRouterRequest struct {
Model string `json:"model"`
Messages []MessageForLLM `json:"messages"`
Temperature *float64 `json:"temperature,omitempty"`
MaxTokens *int `json:"max_tokens,omitempty"`
ResponseFormat *map[string]any `json:"response_format,omitempty"`
Tools *[]map[string]any `json:"tools,omitempty"`
ToolChoice *ToolChoiceEnum `json:"tool_choice,omitempty"`
Reasoning *ReasoningConfig `json:"reasoning,omitempty"`
Provider *ProviderConfig `json:"provider,omitempty"`
}
type OpenRouterRequestWithParts ¶ added in v2.0.3
type OpenRouterRequestWithParts struct {
Model string `json:"model"`
Messages []PartMessageForLLM `json:"messages"`
Temperature *float64 `json:"temperature,omitempty"`
MaxTokens *int `json:"max_tokens,omitempty"`
ResponseFormat *map[string]any `json:"response_format,omitempty"`
Tools *[]map[string]any `json:"tools,omitempty"`
ToolChoice *ToolChoiceEnum `json:"tool_choice,omitempty"`
Reasoning *ReasoningConfig `json:"reasoning,omitempty"`
Provider *ProviderConfig `json:"provider,omitempty"`
}
type OpenRouterResponse ¶
type OpenRouterResponse struct {
Provider string `json:"provider"`
Model string `json:"model"`
Created int64 `json:"created"`
Choices []struct {
FinishReason string `json:"finish_reason"`
Message struct {
Role RoleEnum `json:"role"`
Content string `json:"content"`
Refusal *string `json:"refusal"`
Reasoning *string `json:"reasoning"`
ToolCalls *[]struct {
ID string `json:"id"`
Type string `json:"type"`
Function struct {
Name string `json:"name"`
Arguments string `json:"arguments"`
} `json:"function"`
} `json:"tool_calls,omitempty"`
} `json:"message"`
} `json:"choices"`
Usage struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
} `json:"usage"`
}
type ParameterProperty ¶
type PartMessageForLLM ¶
type PartMessageForLLM struct {
Role RoleEnum `json:"role"`
Content []ContentPart `json:"content"`
}
Used when you want to send multi input content. For example, when sending an image, you use a list of dicts with the type "image_url" and the url.
type ProviderConfig ¶
type ProviderConfig struct {
// List of providers to use, in order of priority
Order *[]string `json:"order,omitempty"`
// To allow use of other providers if none of your chosen providers are available
AllowFallbacks bool `json:"allow_fallbacks"`
// Only allow providers that require your set parameters (structured output, reasoning, etc)
RequireParameters bool `json:"require_parameters"`
// Allow providers to collect data or not
DataCollection bool `json:"data_collection"`
// Zero Data Retention providers only.
ZDR bool `json:"zdr"`
// List of providers to use, no others will be used if this is set
Only *[]string `json:"only,omitempty"`
// List of providers to ignore
Ignore *[]string `json:"ignore,omitempty"`
// Sort providers by price, throughput, or latency
Sort *ProviderSortEnum `json:"sort,omitempty"`
}
ProviderConfig defines the configuration for a provider for OpenRouter.
type ProviderSortEnum ¶
type ProviderSortEnum string
const ( // Prioritize lowest price SortPrice ProviderSortEnum = "price" // Prioritize highest throughput SortThroughput ProviderSortEnum = "throughput" // Prioritize lowest latency SortLatency ProviderSortEnum = "latency" )
type ReasoningConfig ¶
type ReasoningConfig struct {
// OpenAI style reasoning effort settings
Effort *string `json:"effort,omitempty"`
// Non-OpenAI style reasoning effort settings
// Gemini uses this for example
MaxTokens *int `json:"max_tokens,omitempty"`
// Some models (e.g. Grok 4 fast), have a reasoning and non-reasoning mode.
// This is enabled by default, but you can disable it.
Enabled *bool `json:"enabled,omitempty"`
}
This will only work for certain models. This might break with the wrong models. Also, don't add both Effort and MaxTokens or it will break.
type StructuredOutputSchema ¶
type StructuredOutputSchema struct {
Name string `json:"name"`
Strict bool `json:"strict"`
Schema StructuredOutputSchemaDefinition `json:"schema"`
}
StructuredOutput defines a structured output from an LLM. Notice how it only needs the "json_schema" part and doesn't require you to specify the "type": "json_schema" part
type StructuredOutputSchemaDefinition ¶
type StructuredOutputSchemaDefinition struct {
Type string `json:"type"`
Properties map[string]StructuredOutputProperty `json:"properties"`
Required []string `json:"required"`
AdditionalProperties bool `json:"additionalProperties"`
}
type ToolChoiceEnum ¶
type ToolChoiceEnum string
const ( // Model can only use tools ToolChoiceRequired ToolChoiceEnum = "required" // Let model decide which tools to use ToolChoiceAuto ToolChoiceEnum = "auto" )
type ToolParameters ¶
type ToolParameters struct {
Type string `json:"type"`
Properties map[string]ParameterProperty `json:"properties"`
Required []string `json:"required"`
}
type ToolSchema ¶
type ToolSchema struct {
Name string `json:"name"`
Description string `json:"description"`
Parameters ToolParameters `json:"parameters"`
}
ToolSchema defines a json schema for a tool call. Notice how it only needs the "function" part and doesn't require you to specify the "type": "function" part