diff --git a/frontend/src/app/api/queries/useGetModelsQuery.ts b/frontend/src/app/api/queries/useGetModelsQuery.ts index 17b2336a..cd24131b 100644 --- a/frontend/src/app/api/queries/useGetModelsQuery.ts +++ b/frontend/src/app/api/queries/useGetModelsQuery.ts @@ -54,7 +54,7 @@ export const useGetOpenAIModelsQuery = ( queryKey: ["models", "openai", params], queryFn: getOpenAIModels, retry: 2, - enabled: !!params?.apiKey, // Only run if API key is provided + enabled: options?.enabled !== false, // Allow enabling/disabling from options staleTime: 0, // Always fetch fresh data gcTime: 0, // Don't cache results ...options, diff --git a/frontend/src/app/settings/page.tsx b/frontend/src/app/settings/page.tsx index 8efcf8d6..50dc7867 100644 --- a/frontend/src/app/settings/page.tsx +++ b/frontend/src/app/settings/page.tsx @@ -112,9 +112,12 @@ function KnowledgeSourcesPage() { const currentProvider = (settings.provider?.model_provider || 'openai') as ModelProvider; // Fetch available models based on provider - const { data: openaiModelsData } = useGetOpenAIModelsQuery({ - enabled: isAuthenticated && currentProvider === 'openai', - }); + const { data: openaiModelsData } = useGetOpenAIModelsQuery( + undefined, // Let backend use stored API key from configuration + { + enabled: isAuthenticated && currentProvider === 'openai', + } + ); const { data: ollamaModelsData } = useGetOllamaModelsQuery( undefined, // No params for now, could be extended later diff --git a/src/api/models.py b/src/api/models.py index d6caa161..d79d1b23 100644 --- a/src/api/models.py +++ b/src/api/models.py @@ -1,5 +1,6 @@ from starlette.responses import JSONResponse from utils.logging_config import get_logger +from config.settings import get_openrag_config logger = get_logger(__name__) @@ -11,9 +12,18 @@ async def get_openai_models(request, models_service, session_manager): query_params = dict(request.query_params) api_key = query_params.get("api_key") + # If no API key provided, try to get it from stored configuration + if not api_key: + try: + config = get_openrag_config() + api_key = config.provider.api_key + logger.info(f"Retrieved API key from config: {'yes' if api_key else 'no'}") + except Exception as e: + logger.error(f"Failed to get config: {e}") + if not api_key: return JSONResponse( - {"error": "OpenAI API key is required as query parameter"}, + {"error": "OpenAI API key is required either as query parameter or in configuration"}, status_code=400 )