Documentation
¶
Index ¶
- func DefaultConfigPath() string
- func NeedsSetup(flagPath string) bool
- func SaveConfig(path string, cfg Config) error
- type Config
- type FailoverEvent
- type FailoverReporter
- type ModelRef
- type ModelSet
- func (ms *ModelSet) CurrentSelection(role string) (provider, model string, explicit bool)
- func (ms *ModelSet) ForRole(role string) agentcore.ChatModel
- func (ms *ModelSet) ForRoleWithFailover(role string, report FailoverReporter) agentcore.ChatModel
- func (ms *ModelSet) Summary() string
- func (ms *ModelSet) Swap(role, provider, model string) error
- type ProviderConfig
- type RoleConfig
- type SwappableModel
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultConfigPath ¶
func DefaultConfigPath() string
DefaultConfigPath 返回全局配置文件路径 ~/.ainovel/config.json。
func SaveConfig ¶
SaveConfig 将配置写入指定路径(JSON 格式,缩进美化)。
Types ¶
type Config ¶
type Config struct {
// 运行时字段(不序列化到 JSON)
OutputDir string `json:"-"` // 输出根目录
// 默认 LLM 配置
Provider string `json:"provider"` // 默认 provider(Providers map 中的 key)
ModelName string `json:"model"` // 默认模型名
// Provider 凭证库
Providers map[string]ProviderConfig `json:"providers,omitempty"`
// 角色级模型覆盖
Roles map[string]RoleConfig `json:"roles,omitempty"`
// 创作参数
Style string `json:"style,omitempty"`
ContextWindow int `json:"context_window,omitempty"`
}
Config 小说应用配置。
func LoadConfig ¶
LoadConfig 按优先级加载并合并配置:
- ~/.ainovel/config.json(全局)
- ./ainovel.json(项目级覆盖)
- flagPath 指定的路径(最高优先级)
func LoadConfigFile ¶ added in v0.0.2
LoadConfigFile 读取单个 JSON 配置文件,支持 // 行注释。 不做任何合并,仅返回该文件自身的配置。文件不存在时返回错误。
func (Config) CandidateModels ¶ added in v0.0.2
CandidateModels 返回某个 provider 下可供切换的模型列表。 优先使用 provider 显式声明的 models;同时补充当前配置中已出现过的该 provider 模型。
func (*Config) DefaultProviderConfig ¶
func (c *Config) DefaultProviderConfig() ProviderConfig
DefaultProviderConfig 返回默认 provider 的凭证配置。
type FailoverEvent ¶ added in v0.1.0
type FailoverEvent struct {
Role string
Code apperr.Code
FromProvider string
FromModel string
ToProvider string
ToModel string
Err error
}
FailoverEvent 表示一次显式 provider 切换。
type FailoverReporter ¶ added in v0.1.0
type FailoverReporter func(FailoverEvent)
FailoverReporter 在发生显式切换时被调用。
type ModelRef ¶ added in v0.1.0
type ModelRef struct {
Provider string `json:"provider"` // provider 名称(Providers map 中的 key)
Model string `json:"model"` // 模型名(原样透传,不做任何解析)
}
ModelRef 表示一个 provider/model 组合。
type ModelSet ¶
type ModelSet struct {
Default *SwappableModel
// contains filtered or unexported fields
}
ModelSet 持有按角色分配的模型实例,未配置的角色回退到默认模型。
func NewModelSet ¶
NewModelSet 根据配置创建多模型集合。 相同 provider+model 组合复用同一个实例。
func (*ModelSet) CurrentSelection ¶ added in v0.0.2
CurrentSelection 返回角色当前生效的 provider/model。 role 为空或 "default" 时返回默认模型。
func (*ModelSet) ForRoleWithFailover ¶ added in v0.1.0
func (ms *ModelSet) ForRoleWithFailover(role string, report FailoverReporter) agentcore.ChatModel
ForRoleWithFailover 返回带有单次请求级 fallback 的角色模型。 仅当该角色显式配置了 fallbacks 时生效;未配置时退化为普通模型。
type ProviderConfig ¶
type ProviderConfig struct {
Type string `json:"type,omitempty"` // API 协议类型(openai/anthropic/gemini),自定义代理时指定
APIKey string `json:"api_key,omitempty"` // API Key
BaseURL string `json:"base_url,omitempty"` // API Base URL
Models []string `json:"models,omitempty"` // 可选模型列表,供 TUI 切换时展示
}
ProviderConfig 定义单个 LLM 提供商的凭证。
func (ProviderConfig) ProviderType ¶
func (pc ProviderConfig) ProviderType(name string) (string, error)
ProviderType 返回有效的 API 协议类型。 优先使用显式 Type,否则从 provider 名称推断。
func (ProviderConfig) RequiresAPIKey ¶
func (pc ProviderConfig) RequiresAPIKey(name string) bool
RequiresAPIKey 返回该 provider 是否必须显式配置 api_key。 约定: 1. ollama / bedrock 允许无 key; 2. 显式指定 Type 的配置视为自定义代理,允许无 key; 3. 其他 provider 默认要求 key,保持对官方托管接口的保守校验。
type RoleConfig ¶
type RoleConfig struct {
Provider string `json:"provider"` // 主 provider 名称(Providers map 中的 key)
Model string `json:"model"` // 主模型名(原样透传,不做任何解析)
Fallbacks []ModelRef `json:"fallbacks,omitempty"` // 显式备用 provider/model 列表
}
RoleConfig 定义单个角色的模型覆盖。
type SwappableModel ¶ added in v0.0.2
type SwappableModel struct {
*agentcore.SwappableModel
// contains filtered or unexported fields
}
SwappableModel 是可热切换的 ChatModel 包装器。 已开始的请求继续使用旧实例;后续请求自动切到新实例。
func NewSwappableModel ¶ added in v0.0.2
func NewSwappableModel(provider, name string, model agentcore.ChatModel) *SwappableModel
func (*SwappableModel) Current ¶ added in v0.0.2
func (m *SwappableModel) Current() (provider, name string)
func (*SwappableModel) Info ¶ added in v0.0.2
func (m *SwappableModel) Info() llm.ModelInfo
func (*SwappableModel) ProviderName ¶ added in v0.0.2
func (m *SwappableModel) ProviderName() string