From 5bdfc91042c13a0c9ded881285bcf072f351c57c Mon Sep 17 00:00:00 2001 From: duanfuxiang Date: Fri, 6 Jun 2025 17:20:05 +0800 Subject: [PATCH] update api context --- src/components/chat-view/AssistantMessageActions.tsx | 5 ++++- src/components/chat-view/chat-input/ModelSelect.tsx | 4 ++-- src/components/inline-edit/InlineEdit.tsx | 2 +- src/settings/components/ProviderModelsPicker.tsx | 2 +- src/utils/api.ts | 4 ++++ src/utils/price-calculator.ts | 5 ++++- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/components/chat-view/AssistantMessageActions.tsx b/src/components/chat-view/AssistantMessageActions.tsx index 63eba57..6171a6f 100644 --- a/src/components/chat-view/AssistantMessageActions.tsx +++ b/src/components/chat-view/AssistantMessageActions.tsx @@ -2,6 +2,7 @@ import * as Tooltip from '@radix-ui/react-tooltip' import { Check, CopyIcon } from 'lucide-react' import { useEffect, useState } from 'react' +import { useSettings } from '../../contexts/SettingsContext' import { t } from '../../lang/helpers' import { ChatAssistantMessage } from '../../types/chat' import { calculateLLMCost } from '../../utils/price-calculator' @@ -46,6 +47,7 @@ function CopyButton({ message }: { message: ChatAssistantMessage }) { function LLMResponesInfoButton({ message }: { message: ChatAssistantMessage }) { const [cost, setCost] = useState(0); + const { settings } = useSettings(); useEffect(() => { async function calculateCost() { @@ -56,12 +58,13 @@ function LLMResponesInfoButton({ message }: { message: ChatAssistantMessage }) { const calculatedCost = await calculateLLMCost({ model: message.metadata.model, usage: message.metadata.usage, + settings: settings, }); setCost(calculatedCost); } calculateCost(); - }, [message]); + }, [message, settings]); return ( diff --git a/src/components/chat-view/chat-input/ModelSelect.tsx b/src/components/chat-view/chat-input/ModelSelect.tsx index 3542da1..98331dc 100644 --- a/src/components/chat-view/chat-input/ModelSelect.tsx +++ b/src/components/chat-view/chat-input/ModelSelect.tsx @@ -151,7 +151,7 @@ export function ModelSelect() { const fetchModels = async () => { setIsLoading(true) try { - const models = await GetProviderModelIds(modelProvider) + const models = await GetProviderModelIds(modelProvider, settings) setModelIds(models) } catch (error) { console.error('Failed to fetch provider models:', error) @@ -162,7 +162,7 @@ export function ModelSelect() { } fetchModels() - }, [modelProvider]) + }, [modelProvider, settings]) // Sync chat model id & chat model provider useEffect(() => { diff --git a/src/components/inline-edit/InlineEdit.tsx b/src/components/inline-edit/InlineEdit.tsx index 3fe4ded..03d78ea 100644 --- a/src/components/inline-edit/InlineEdit.tsx +++ b/src/components/inline-edit/InlineEdit.tsx @@ -83,7 +83,7 @@ const ControlArea: React.FC = ({ useEffect(() => { const fetchModels = async () => { try { - const models = await GetProviderModelIds(settings.chatModelProvider); + const models = await GetProviderModelIds(settings.chatModelProvider, settings); setProviderModels(models); } catch (err) { const error = err as Error; diff --git a/src/settings/components/ProviderModelsPicker.tsx b/src/settings/components/ProviderModelsPicker.tsx index ecb5929..42da37b 100644 --- a/src/settings/components/ProviderModelsPicker.tsx +++ b/src/settings/components/ProviderModelsPicker.tsx @@ -185,7 +185,7 @@ export const ComboBoxComponent: React.FC = ({ }; fetchModelIds(); - }, [modelProvider, isEmbedding]); + }, [modelProvider, isEmbedding, settings]); const searchableItems = useMemo(() => { return modelIds.map((id) => ({ diff --git a/src/utils/api.ts b/src/utils/api.ts index c3f33b1..6bd1dd5 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -143,6 +143,7 @@ export const infioDefaultModelInfo: ModelInfo = { let infioModelsCache: Record | null = null; async function fetchInfioModels(apiKey?: string): Promise> { + console.log("fetchInfioModels apiKey", apiKey) if (infioModelsCache) { return infioModelsCache; } @@ -1606,6 +1607,7 @@ export const GetProviderModels = async (provider: ApiProvider, settings?: InfioS switch (provider) { case ApiProvider.Infio: { const apiKey = settings?.infioProvider?.apiKey + console.log("apiKey", apiKey) return await fetchInfioModels(apiKey) } case ApiProvider.OpenRouter: @@ -1640,6 +1642,8 @@ export const GetProviderModelsWithSettings = async (provider: ApiProvider, setti switch (provider) { case ApiProvider.Infio: { const apiKey = settings?.infioProvider?.apiKey + console.log("apiKey", apiKey) + console.log("settings", settings) return await fetchInfioModels(apiKey) } case ApiProvider.OpenRouter: diff --git a/src/utils/price-calculator.ts b/src/utils/price-calculator.ts index 49f29e1..4115320 100644 --- a/src/utils/price-calculator.ts +++ b/src/utils/price-calculator.ts @@ -1,5 +1,6 @@ import { LLMModel } from '../types/llm/model' import { ResponseUsage } from '../types/llm/response' +import { InfioSettings } from '../types/settings' import { GetProviderModels } from './api' @@ -7,11 +8,13 @@ import { GetProviderModels } from './api' export const calculateLLMCost = async ({ model, usage, + settings, }: { model: LLMModel usage: ResponseUsage + settings?: InfioSettings }): Promise => { - const providerModels = await GetProviderModels(model.provider) + const providerModels = await GetProviderModels(model.provider, settings) if (!providerModels) { return null }