diff --git a/lib/ai/dynamic-provider.ts b/lib/ai/dynamic-provider.ts index 828c8e3c1..8239c0076 100644 --- a/lib/ai/dynamic-provider.ts +++ b/lib/ai/dynamic-provider.ts @@ -12,6 +12,7 @@ import { getAiModelById, } from "@/lib/db/queries"; import type { AiProvider } from "@/lib/db/schema"; +import { createLogger } from "@/lib/observability/logger"; import { createLocalQwen } from "./providers/local-qwen"; import { createGeminiImage } from "./providers/gemini-image"; import { createHuankeGemini } from "./providers/huanke-gemini"; @@ -39,6 +40,7 @@ import { isBltcyVideoBaseUrl } from "./bltcy-video-models"; // 缓存已创建的 provider 实例 const providerCache = new Map(); +const logger = createLogger("dynamic-provider"); function isVolcanoMultimodalBaseUrl(baseUrl?: string | null) { if (!baseUrl) return false; @@ -49,6 +51,20 @@ function getOpenAICompatibleFetch(baseUrl?: string | null) { return isMoonshotOfficialBaseUrl(baseUrl) ? createMoonshotKimiFetch() : undefined; } +function logProviderCreated(providerType: string, baseUrl?: string | null) { + logger.debug("provider created", { providerType, baseUrl }); +} + +function logChatModelResult(providerType: string, baseModel: unknown) { + logger.debug("chat model resolved", { + providerType, + success: Boolean(baseModel), + modelType: typeof baseModel, + modelKeyCount: + baseModel && typeof baseModel === "object" ? Object.keys(baseModel).length : 0, + }); +} + /** * 根据提供商类型创建对应的 AI Provider 实例 * 不同供应商使用OpenAI兼容的API格式,但可能有细微差异 @@ -80,7 +96,7 @@ function getOrCreateProvider(provider: Pick