From 58a6061566c286f3ecb828e7feb2d615f4a54fa8 Mon Sep 17 00:00:00 2001 From: nang-dev Date: Tue, 8 Apr 2025 14:34:15 -0400 Subject: [PATCH] Added use config from server --- src/api/providers/pearai/pearai.ts | 41 ++++++++++--------- src/shared/api.ts | 3 +- .../src/components/settings/ApiOptions.tsx | 11 ++++- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/api/providers/pearai/pearai.ts b/src/api/providers/pearai/pearai.ts index 1fdba1b52d9..c7f3710e971 100644 --- a/src/api/providers/pearai/pearai.ts +++ b/src/api/providers/pearai/pearai.ts @@ -14,7 +14,7 @@ import { PEARAI_URL } from "../../../shared/pearaiApi" interface PearAiModelsResponse { models: { [key: string]: { - underlyingModel?: string + underlyingModel?: { [key: string]: any } [key: string]: any } } @@ -70,7 +70,10 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl } const data = (await response.json()) as PearAiModelsResponse this.pearAiModelsResponse = data - const underlyingModel = data.models[modelId]?.underlyingModelUpdated || "claude-3-5-sonnet-20241022" + const underlyingModel = + data.models[modelId]?.underlyingModelUpdated?.underlyingModel || + data.models[modelId]?.underlyingModel || + "claude-3-5-sonnet-20241022" if (underlyingModel.startsWith("claude") || modelId.startsWith("anthropic/")) { // Default to Claude this.handler = new AnthropicHandler({ @@ -114,25 +117,25 @@ export class PearAiHandler extends BaseProvider implements SingleCompletionHandl } getModel(): { id: string; info: ModelInfo } { - if ( - this.pearAiModelsResponse && - this.options.apiModelId === "pearai-model" && - this.pearAiModelsResponse.models - ) { - const modelInfo = this.pearAiModelsResponse.models[this.options.apiModelId] - if (modelInfo) { - return { - id: this.options.apiModelId, - info: { - contextWindow: modelInfo.contextWindow || 4096, // provide default or actual value - supportsPromptCache: modelInfo.supportsPromptCaching || false, // provide default or actual value - ...modelInfo, - }, - } + if (this.options.apiModelId) { + let modelInfo = null + if (this.options.apiModelId === "pearai-model") { + modelInfo = this.pearAiModelsResponse?.models["pearai-model"].underlyingModelUpdated + } else if (this.pearAiModelsResponse) { + modelInfo = this.pearAiModelsResponse.models[this.options.apiModelId || "pearai-model"] + } + return { + id: this.options.apiModelId, + info: { + contextWindow: modelInfo.contextWindow || 4096, // provide default or actual value + supportsPromptCache: modelInfo.supportsPromptCaching || false, // provide default or actual value + ...modelInfo, + }, } + } else { + const baseModel = this.handler.getModel() + return baseModel } - const baseModel = this.handler.getModel() - return baseModel } async *createMessage(systemPrompt: string, messages: any[]): AsyncGenerator { diff --git a/src/shared/api.ts b/src/shared/api.ts index f0c78a18a50..ebb3685f661 100644 --- a/src/shared/api.ts +++ b/src/shared/api.ts @@ -159,8 +159,9 @@ export interface ModelInfo { description?: string reasoningEffort?: "low" | "medium" | "high" thinking?: boolean + underlyingModel?: string + underlyingModelUpdated?: Record } - // Anthropic // https://docs.anthropic.com/en/docs/about-claude/models export type AnthropicModelId = keyof typeof anthropicModels diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index e534f6b66eb..a0088753422 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -1598,7 +1598,16 @@ export function normalizeApiConfiguration( if (modelId && modelId in models) { selectedModelId = modelId - selectedModelInfo = models[modelId] + if (modelId === "pearai-model" && models[modelId].underlyingModelUpdated) { + let modelInfo = models[modelId].underlyingModelUpdated + selectedModelInfo = { + contextWindow: modelInfo.contextWindow || 4096, // provide default or actual value + supportsPromptCache: modelInfo.supportsPromptCaching || false, // provide default or actual value + ...modelInfo, + } + } else { + selectedModelInfo = models[modelId] + } } else { selectedModelId = defaultId selectedModelInfo = models[defaultId]