From 66f8d1b5bfa558b6143c811ebcbbbb58a49acc36 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Wed, 8 Oct 2025 17:59:30 -0300 Subject: [PATCH] Added validation for api keys --- src/services/models_service.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/services/models_service.py b/src/services/models_service.py index 8c779940..01707dd2 100644 --- a/src/services/models_service.py +++ b/src/services/models_service.py @@ -242,6 +242,35 @@ class ModelsService: headers["Authorization"] = f"Bearer {api_key}" if project_id: headers["Project-ID"] = project_id + + # Validate credentials with a minimal completion request + async with httpx.AsyncClient() as client: + validation_url = f"{watson_endpoint}/ml/v1/text/generation" + validation_params = {"version": "2024-09-16"} + validation_payload = { + "input": "test", + "model_id": "ibm/granite-3-2b-instruct", + "project_id": project_id, + "parameters": { + "max_new_tokens": 1, + }, + } + + validation_response = await client.post( + validation_url, + headers=headers, + params=validation_params, + json=validation_payload, + timeout=10.0, + ) + + if validation_response.status_code != 200: + raise Exception( + f"Invalid credentials or endpoint: {validation_response.status_code} - {validation_response.text}" + ) + + logger.info("IBM Watson credentials validated successfully") + # Fetch foundation models using the correct endpoint models_url = f"{watson_endpoint}/ml/v1/foundation_model_specs"