models

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: May 8, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DeepseekProviderName Deepseek 模型供应商名
	DeepseekProviderName = "deepseek"
	// DeepseekBaseURL Deepseek 默认 API 地址
	DeepseekBaseURL = "https://api.deepseek.com"
)
View Source
const (
	// MinimaxProviderName MiniMax 模型供应商名
	MinimaxProviderName = "minimax"
	// MinimaxBaseURL MiniMax 默认 API 地址
	MinimaxBaseURL = "https://api.minimaxi.com/v1"
)
View Source
const (
	// MoonshotProviderName 月之暗面模型供应商名
	MoonshotProviderName = "moonshotai"
	// MoonshotBaseURL 月之暗面默认 API 地址
	MoonshotBaseURL = "https://api.moonshot.cn/v1"
)
View Source
const (
	// OpenCodeProviderName OpenCode Zen 模型供应商名
	OpenCodeProviderName = "opencode"
	// OpenCodeBaseURL OpenCode Zen 默认 API 地址
	OpenCodeBaseURL = "https://opencode.ai/zen/v1"
	// OpenCodeGoProviderName OpenCode Go 模型供应商名
	OpenCodeGoProviderName = "opencode-go"
	// OpenCodeGoBaseURL OpenCode Go 默认 API 地址
	OpenCodeGoBaseURL = "https://opencode.ai/zen/go/v1"
)
View Source
const (
	// OpenRouterProviderName OpenRouter 模型供应商名
	OpenRouterProviderName = "openrouter"
	// OpenRouterBaseURL OpenRouter 默认 API 地址
	OpenRouterBaseURL = "https://openrouter.ai/api/v1"
)
View Source
const (
	// QwenProviderName 通义千问模型供应商名
	QwenProviderName = "qwen"
	// QwenBaseURL 通义千问默认 API 地址(也可称 dashscope 、灵积)
	QwenBaseURL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
)
View Source
const (
	// TencentCloudProviderName 腾讯云 TokenHub 模型供应商名
	TencentCloudProviderName = "tencent-cloud"
	// TencentCloudBaseURL 腾讯云 TokenHub 默认 API 地址
	TencentCloudBaseURL = "https://tokenhub.tencentmaas.com/v1"
)
View Source
const (
	// ZAIProviderName 智谱模型供应商名
	ZAIProviderName = "z-ai"
	// ZAIBaseURL 智谱默认 API 地址
	ZAIBaseURL = "https://open.bigmodel.cn/api/paas/v4/"
)

Variables

View Source
var (
	DeepseekV4Pro = ModelConfig{
		Name:      "deepseek-v4-pro",
		Reasoning: true,
		Prices: ModelPrices{
			Input:  12,
			Output: 24,
			Cached: 0.1,
		},
		ContextWindow: 1000000,
		Score:         10,
	}
	DeepseekV4Flash = ModelConfig{
		Name:      "deepseek-v4-flash",
		Reasoning: true,
		Prices: ModelPrices{
			Input:  1,
			Output: 2,
			Cached: 0.02,
		},
		ContextWindow: 1000000,
		Score:         8,
	}
)
View Source
var (
	KimiK26 = ModelConfig{
		Name:      "kimi-k2.6",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  6.5,
			Output: 27,
			Cached: 1.1,
		},
		ContextWindow: 256000,
		Score:         7,
	}
	KimiK25 = ModelConfig{
		Name:      "kimi-k2.5",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  4,
			Output: 21,
			Cached: 0.7,
		},
		ContextWindow: 256000,
		Score:         6,
	}
)
View Source
var (
	Gemini31ProPreview = ModelConfig{
		Name:      "gemini-3.1-pro-preview",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  2,
			Output: 12,
			Cached: 0.2,
		},
		ContextWindow: 1050000,
		Score:         9,
	}
	GPT54 = ModelConfig{
		Name:      "gpt-5.4",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  2.5,
			Output: 15,
			Cached: 0.25,
		},
		ContextWindow: 1050000,
		Score:         10,
	}
	ClaudeSonnet46 = ModelConfig{
		Name:      "claude-sonnet-4.6",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  3,
			Output: 15,
			Cached: 0.3,
		},
		ContextWindow: 1000000,
		Score:         9,
	}
	ClaudeOpus47 = ModelConfig{
		Name:      "claude-opus-4.7",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  5,
			Output: 25,
			Cached: 0.5,
		},
		ContextWindow: 1000000,
		Score:         10,
	}
	Grok420 = ModelConfig{
		Name:      "grok-4.20",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  2,
			Output: 6,
			Cached: 0.2,
		},
		ContextWindow: 2000000,
		Score:         9,
	}
)
View Source
var (
	Qwen35_397b_a17b = ModelConfig{
		Name:      "qwen3.5-397b-a17b",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  3,
			Output: 18,
		},
		ContextWindow: 254000,
		Score:         7,
	}
	Qwen36Plus = ModelConfig{
		Name:      "qwen3.6-plus",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  2,
			Output: 12,
			Cached: 0.2,
		},
		ContextWindow: 991000,
		Score:         8,
	}
	Qwen36_35b_a3b = ModelConfig{
		Name:      "qwen3.6-35b-a3b",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  1.8,
			Output: 10.8,
		},
		ContextWindow: 254000,
		Score:         4,
	}
	Qwen36Flash = ModelConfig{
		Name:      "qwen3.6-flash",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  1.2,
			Output: 7.2,
			Cached: 0.12,
		},
		ContextWindow: 991000,
		Score:         5,
	}
)
View Source
var (
	GLM51 = ModelConfig{
		Name:      "glm-5.1",
		Reasoning: true,
		Prices: ModelPrices{
			Input:  8,
			Output: 28,
			Cached: 2,
		},
		ContextWindow: 200000,
		Score:         7,
	}
	GLM5VTurbo = ModelConfig{
		Name:      "glm-5v-turbo",
		Reasoning: true,
		Vision:    true,
		Prices: ModelPrices{
			Input:  7,
			Output: 26,
			Cached: 1.8,
		},
		ContextWindow: 200000,
		Score:         6,
	}
	GLM5 = ModelConfig{
		Name:      "glm-5",
		Reasoning: true,
		Prices: ModelPrices{
			Input:  6,
			Output: 22,
			Cached: 1.5,
		},
		ContextWindow: 200000,
		Score:         6,
	}
)

DeepseekModels 建议的 DeepSeek 模型

View Source
var DeepseekOpenAIExtension = OpenAICompatibleExtension{
	ReasoningEffortFields: [3]map[string]any{
		{"thinking": map[string]any{"type": "disabled"}},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "high",
		},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "max",
		},
	},
	ReasoningContentField: "reasoning_content",
}

DeepseekOpenAIExtension Deepseek OpenAI 扩展

View Source
var DefaultOpenAIExtension = OpenAICompatibleExtension{
	ReasoningEffortFields: [3]map[string]any{
		{
			"thinking": map[string]any{"type": "disabled"},
		},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "medium",
		},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "xhigh",
		},
	},
	ReasoningContentField: "reasoning_content",
}

DefaultOpenAIExtension 默认 OpenAI 扩展

View Source
var (
	HY3Preview = ModelConfig{
		Name:      "hy3-preview",
		Reasoning: true,
		Prices: ModelPrices{
			Input:  2,
			Output: 8,
			Cached: 0.8,
		},
		ContextWindow: 256000,
		Score:         3,
	}
)
View Source
var MinimaxM27 = ModelConfig{
	Name:      "minimax-m2.7",
	Reasoning: true,
	Prices: ModelPrices{
		Input:  2.1,
		Output: 8.4,
		Cached: 0.42,
	},
	ContextWindow: 200000,
	Score:         5,
}
View Source
var MinimaxModels = []ModelConfig{
	MinimaxM27,
}

MinimaxModels 建议的 MiniMax 模型

View Source
var MoonshotModels = []ModelConfig{
	KimiK26,
	KimiK25,
}

MoonshotModels 建议的月之暗面模型

View Source
var MoonshotOpenAIExtension = OpenAICompatibleExtension{
	ReasoningEffortFields: [3]map[string]any{
		{
			"thinking": map[string]any{"type": "disabled"},
		},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "medium",
		},
		{
			"thinking":         map[string]any{"type": "enabled"},
			"reasoning_effort": "high",
		},
	},
	ReasoningContentField: "reasoning_content",
}

MoonshotOpenAIExtension 月之暗面 OpenAI 扩展

OpenCodeGoModels 建议的 OpenCode Go 模型

View Source
var OpenCodeModels = []ModelConfig{
	ClaudeOpus47.WithName("claude-opus-4-7"),
	ClaudeSonnet46.WithName("claude-sonnet-4-6"),
	GPT54,
	GLM51,
	GLM5,
	Qwen36Plus,
	KimiK26,
	KimiK25,
	MinimaxM27,
}

OpenCodeModels 建议的 OpenCode Zen 模型

View Source
var OpenRouterModels = []ModelConfig{
	Gemini31ProPreview.WithName("google/gemini-3.1-pro-preview"),
	GPT54.WithName("openai/gpt-5.4"),
	ClaudeSonnet46.WithName("anthropic/claude-sonnet-4.6"),
	ClaudeOpus47.WithName("anthropic/claude-opus-4.7"),
	Grok420.WithName("x-ai/grok-4.20"),
}

OpenRouterModels 建议的 OpenRouter 模型

View Source
var OpenRouterOpenAIExtension = OpenAICompatibleExtension{
	ReasoningEffortFields: [3]map[string]any{
		{"reasoning": map[string]any{"effort": "none"}},
		{"reasoning": map[string]any{"effort": "medium"}},
		{"reasoning": map[string]any{"effort": "xhigh"}},
	},
	ReasoningContentField: "reasoning",
}

OpenRouterOpenAIExtension OpenRouter OpenAI 扩展

QwenModels 建议的通义千问模型

View Source
var QwenOpenAIExtension = OpenAICompatibleExtension{
	ReasoningEffortFields: [3]map[string]any{
		{"enable_thinking": false},
		{"enable_thinking": true},
		{"enable_thinking": true},
	},
	ReasoningContentField: "reasoning_content",
}

QwenOpenAIExtension 千问 OpenAI 扩展

TencentCloudModels 腾讯云推荐模型

View Source
var ZAIModels = []ModelConfig{
	GLM51,
	GLM5VTurbo,
	GLM5,
}

ZAIModels 建议的智谱 AI 模型

Functions

This section is empty.

Types

type ModelConfig

type ModelConfig struct {
	// 模型名称
	Name string `json:"name"`
	// 供应商名称
	Provider string `json:"provider,omitempty"`

	// 是否支持推理、思考模式
	Reasoning bool `json:"reasoning,omitempty"`
	// 是否支持视觉、图片理解
	Vision bool `json:"vision,omitempty"`
	// 上下文窗口大小
	ContextWindow int64 `json:"contextWindow,omitempty"`

	// 价格信息
	Prices ModelPrices `json:"prices,omitempty"`

	// 效果评分,0-10
	Score int `json:"score,omitempty"`
}

ModelConfig 模型配置

func (ModelConfig) WithName added in v0.3.0

func (cfg ModelConfig) WithName(name string) ModelConfig

WithName 返回带指定名字的该模型

func (ModelConfig) WithPrices added in v0.3.0

func (cfg ModelConfig) WithPrices(prices ModelPrices) ModelConfig

WithPrices 返回带指定价格的该模型

type ModelPrices added in v0.3.0

type ModelPrices struct {
	// 每百万输入 Token 价格
	Input float64 `json:"input,omitempty"`
	// 每百万输出 Token 价格
	Output float64 `json:"output,omitempty"`
	// 每百万缓存 Token 价格
	Cached float64 `json:"cached,omitempty"`
}

ModelPrices 价格信息

type ModelProvider

type ModelProvider struct {
	Ollama *OllamaOptions `json:"ollama,omitempty"`

	OpenAICompatible *OpenAICompatibleOptions `json:"openai-compatible,omitempty"`
	OpenRouter       *OpenAICompatibleOptions `json:"openrouter,omitempty"`
	OpenCode         *OpenAICompatibleOptions `json:"opencode,omitempty"`
	OpenCodeGo       *OpenAICompatibleOptions `json:"opencode-go,omitempty"`
	Deepseek         *OpenAICompatibleOptions `json:"deepseek,omitempty"`
	Qwen             *OpenAICompatibleOptions `json:"qwen,omitempty"`
	MoonshotAI       *OpenAICompatibleOptions `json:"moonshotai,omitempty"`
	ZAI              *OpenAICompatibleOptions `json:"z-ai,omitempty"`
	TencentCloud     *OpenAICompatibleOptions `json:"tencent-cloud,omitempty"`
	Minimax          *OpenAICompatibleOptions `json:"minimax,omitempty"`
}

ModelProvider 模型供应商配置

func (ModelProvider) Register added in v0.3.0

func (p ModelProvider) Register() ModelRegister

Register 返回对应的模型注册器

type ModelRegister added in v0.3.0

type ModelRegister interface {
	// GenkitPlugin 获取对应 Genkit 插件
	GenkitPlugin() api.Plugin
	// RegisterModels 注册模型
	RegisterModels(ctx context.Context, g *genkit.Genkit) ([]ModelConfig, error)
}

ModelRegister 模型注册器

type Models

type Models struct {
	// 主模型,用于回答用户问题
	Primary string `json:"primary,omitempty"`
	// 视觉模型,用于处理图片理解任务
	Vision string `json:"vision,omitempty"`
	// 思考级别
	ReasoningLevel *int `json:"reasoningLevel,omitempty"`
}

Models 模型配置

func (Models) GetPrimary

func (m Models) GetPrimary() string

GetPrimary 获取主模型

func (Models) GetReasoningLevel added in v0.3.0

func (m Models) GetReasoningLevel() int

GetReasoningLevel 获取思考级别

func (Models) GetVision

func (m Models) GetVision() string

GetVision 获取视觉模型

type OllamaOptions

type OllamaOptions struct {
	// Ollama 服务端地址
	//
	// 默认 http://localhost:11434
	BaseURL string `json:"baseURL,omitempty"`
	// 模型响应超时时间,秒
	//
	// 默认 300
	Timeout int `json:"timeout,omitempty"`
	// 模型列表
	Models []ModelConfig `json:"models,omitempty"`
}

OllamaOptions Ollama 选项

func (*OllamaOptions) Complete

func (opts *OllamaOptions) Complete()

Complete 使用默认值补全选项

type OllamaRegister added in v0.3.0

type OllamaRegister struct {
	Plugin *ollama.Ollama
	Models []ModelConfig
}

OllamaRegister Ollama 模型注册器

func NewOllamaRegister added in v0.3.0

func NewOllamaRegister(opts OllamaOptions) *OllamaRegister

NewOllamaRegister 创建 Ollama 模型注册器

func (*OllamaRegister) GenkitPlugin added in v0.3.0

func (r *OllamaRegister) GenkitPlugin() api.Plugin

GenkitPlugin 获取对应 Genkit 插件

func (*OllamaRegister) RegisterModels added in v0.3.0

func (r *OllamaRegister) RegisterModels(_ context.Context, g *genkit.Genkit) ([]ModelConfig, error)

RegisterModels 注册模型

type OpenAICompatibleExtension added in v0.3.0

type OpenAICompatibleExtension struct {
	// 三档思考程度字段
	// 关闭 / 中档 / 最高
	ReasoningEffortFields [3]map[string]any
	// 思考内容字段
	ReasoningContentField string
}

OpenAICompatibleExtension OpenAI 兼容接口扩展

type OpenAICompatibleOptions

type OpenAICompatibleOptions struct {
	// 供应商名
	Name string `json:"name"`
	// API 地址
	BaseURL string `json:"baseURL"`
	// API 密钥
	APIKey string `json:"apiKey"`
	// 模型列表
	Models []ModelConfig `json:"models,omitempty"`
}

OpenAICompatibleOptions OpenAI 兼容选项

type OpenAICompatibleRegister added in v0.3.0

type OpenAICompatibleRegister struct {
	Plugin *oai.OpenAICompatible
	Models []ModelConfig
	// 默认添加的模型
	DefaultModels []ModelConfig
	// OpenAI 兼容接口扩展
	Extension OpenAICompatibleExtension
}

OpenAICompatibleRegister OpenAI 兼容模型注册器

func NewOpenAICompatibleRegister added in v0.3.0

func NewOpenAICompatibleRegister(
	opts OpenAICompatibleOptions,
	defaultProvider, defaultBaseURL string,
	defaultModels []ModelConfig,
	ext OpenAICompatibleExtension,
) *OpenAICompatibleRegister

NewOpenAICompatibleRegister 创建 OpenAI 兼容模型注册器

func (*OpenAICompatibleRegister) GenkitPlugin added in v0.3.0

func (r *OpenAICompatibleRegister) GenkitPlugin() api.Plugin

GenkitPlugin 获取对应 Genkit 插件

func (*OpenAICompatibleRegister) RegisterModels added in v0.3.0

func (r *OpenAICompatibleRegister) RegisterModels(_ context.Context, g *genkit.Genkit) ([]ModelConfig, error)

RegisterModels 注册模型

Jump to

Keyboard shortcuts

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