/** * @file DefaultModelConfigResolver — 模型配置解析器默认实现 * @description 将 resolveModelConfig/createProviderFromModelConfig 模式下沉到 agent-server, * 供 work_agent 和 omniinsight-bi 等上层应用复用。 */ import type { LLMProvider } from '@cicctencent/agent-core'; import type { SettingsProvider, ModelProviderConfig, TenantContext } from '../types.js'; /** * 模型配置解析器默认实现 * * 提供统一的模型配置解析和 LLMProvider 创建逻辑: * - resolve(): 根据 modelConfigId 查找对应的 ModelProviderConfig * - createProvider(): 根据 modelConfigId 创建 LLMProvider 实例 * - resolveForRole(): 角色分层调度(role_based 策略) * - resolveForScene(): 场景分层调度(如 memory_extraction) * - createFallbackProvider(): 创建降级 Provider * * 上层应用可直接使用此实现,或实现自定义 ModelConfigResolver SPI。 */ export declare class DefaultModelConfigResolver { private settingsProvider; private defaultTenant?; constructor(settingsProvider: SettingsProvider, defaultTenant?: TenantContext); /** * 获取设置(带默认租户) */ private getSettings; /** * 解析模型配置 * * 解析顺序: * 1. 指定了 modelConfigId → 精确查找 * 2. 使用 defaultModelId → 查找默认配置 * 3. 从 modelProviders 中找第一个可用的 * 4. 回退到全局 apiKeys 设置 * * @param modelConfigId 模型配置 ID(可选) * @param tenant 租户上下文(可选) * @returns ModelProviderConfig */ resolve(modelConfigId?: string, tenant?: TenantContext): ModelProviderConfig; /** * 根据 modelConfigId 创建 LLMProvider 实例 * * 封装 resolve + createLLMProvider 的重复调用模式, * 同时处理代理配置和模型覆盖。 * * @param modelConfigId 模型配置 ID(可选) * @param modelOverride 模型名称覆盖(可选,用于 profile.model 覆盖) * @param tenant 租户上下文(可选) * @returns LLMProvider 实例 */ createProvider(modelConfigId?: string, modelOverride?: string, tenant?: TenantContext): LLMProvider; /** * 根据工作流角色解析对应的 modelConfigId(模型分层调度) * * 当 modelTierStrategy === 'role_based' 时,按角色查找对应的 modelConfigId; * 否则返回 undefined(走默认主流程)。 * * @param role WorkflowRole 或场景 key * @param tenant 租户上下文(可选) * @returns modelConfigId,未配置则返回 undefined */ resolveForRole(role?: string, tenant?: TenantContext): string | undefined; /** * 根据场景 key 解析对应的 modelConfigId(场景模型分层调度) * * 与 resolveForRole 不同,本方法不依赖 modelTierStrategy === 'role_based', * 只要 modelTiers 中配置了对应场景 key 即生效。 * * 用于记忆提取管道等非主对话场景的独立模型配置。 * * @param scene 场景 key(如 'memory_extraction', 'scene_aggregation') * @param tenant 租户上下文(可选) * @returns modelConfigId,未配置则返回 undefined(走默认主流程) */ resolveForScene(scene: string, tenant?: TenantContext): string | undefined; /** * 根据 modelConfigId 创建降级 LLM Provider * * @param modelConfigId 模型配置 ID * @param tenant 租户上下文(可选) * @returns LLMProvider 实例,无有效配置时返回 undefined */ createFallbackProvider(modelConfigId: string, tenant?: TenantContext): LLMProvider | undefined; /** * 获取降级模型配置 ID(从 agentConfig.fallbackProvider) * * @param tenant 租户上下文(可选) * @returns fallbackProvider modelConfigId,未配置则返回 undefined */ getFallbackModelConfigId(tenant?: TenantContext): string | undefined; /** * 检查 Agent 系统是否可用(API Key 已配置) * * @param tenant 租户上下文(可选) * @returns 是否可用 */ isAvailable(tenant?: TenantContext): boolean; /** * 获取 Agent 不可用的具体原因 * * @param tenant 租户上下文(可选) * @returns 不可用原因描述 */ getUnavailableReason(tenant?: TenantContext): string; } //# sourceMappingURL=model-config-resolver.d.ts.map