Spaces:
Running
Running
Upload notebooks/00_environment_setup.ipynb with huggingface_hub
Browse files
notebooks/00_environment_setup.ipynb
CHANGED
|
@@ -215,24 +215,40 @@
|
|
| 215 |
"metadata": {},
|
| 216 |
"outputs": [],
|
| 217 |
"source": [
|
| 218 |
-
"
|
| 219 |
"import os\n",
|
|
|
|
| 220 |
"\n",
|
| 221 |
-
"# Load
|
| 222 |
-
"
|
| 223 |
-
"if
|
| 224 |
-
"
|
| 225 |
-
"
|
|
|
|
| 226 |
"else:\n",
|
| 227 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
"\n",
|
| 229 |
"# Configuration class\n",
|
| 230 |
"class Config:\n",
|
| 231 |
-
" # API Keys\n",
|
| 232 |
-
" GEMINI_API_KEY = os.getenv(\"GEMINI_API_KEY\", \"\")\n",
|
| 233 |
-
" HUGGINGFACE_TOKEN = os.getenv(\"HUGGINGFACE_API_TOKEN\", \"\")\n",
|
| 234 |
-
" WEBSCRAPER_API_KEY = \"sk-fd14eaa7bceb478db7afc7256e514d2b\"
|
| 235 |
-
" WEBSCRAPER_API_URL = \"http://webscrapper.live/api/scrape\"\n",
|
|
|
|
|
|
|
|
|
|
| 236 |
" \n",
|
| 237 |
" # Paths\n",
|
| 238 |
" BASE_DIR = Path(\"..\").resolve()\n",
|
|
@@ -241,9 +257,9 @@
|
|
| 241 |
" ARTIFACTS_DIR = BASE_DIR / \"artifacts\"\n",
|
| 242 |
" \n",
|
| 243 |
" # ML Settings\n",
|
| 244 |
-
" RANDOM_STATE = 42\n",
|
| 245 |
-
" TEST_SIZE = 0.2\n",
|
| 246 |
-
" CV_FOLDS = 5\n",
|
| 247 |
" \n",
|
| 248 |
" # Device\n",
|
| 249 |
" DEVICE = DEVICE\n",
|
|
@@ -254,8 +270,9 @@
|
|
| 254 |
"print(\"\\n\" + \"=\" * 60)\n",
|
| 255 |
"print(\"API CONFIGURATION STATUS\")\n",
|
| 256 |
"print(\"=\" * 60)\n",
|
| 257 |
-
"print(f\"β Gemini API Key: {'Configured' if config.GEMINI_API_KEY else 'β NOT SET'}\")\n",
|
| 258 |
-
"print(f\"β
|
|
|
|
| 259 |
"print(f\"β WebScraper API: Configured\")"
|
| 260 |
]
|
| 261 |
},
|
|
@@ -283,17 +300,24 @@
|
|
| 283 |
" \n",
|
| 284 |
" try:\n",
|
| 285 |
" genai.configure(api_key=config.GEMINI_API_KEY)\n",
|
| 286 |
-
" model
|
|
|
|
| 287 |
" response = model.generate_content(\"Respond with only: OK\")\n",
|
| 288 |
-
" return True, response.text.strip()\n",
|
| 289 |
" except Exception as e:\n",
|
| 290 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 291 |
"\n",
|
| 292 |
"print(\"Testing Gemini API connection...\")\n",
|
| 293 |
"success, message = test_gemini_connection()\n",
|
| 294 |
"\n",
|
| 295 |
"if success:\n",
|
| 296 |
-
" print(f\"β Gemini API:
|
| 297 |
"else:\n",
|
| 298 |
" print(f\"β Gemini API: Connection failed - {message}\")"
|
| 299 |
]
|
|
|
|
| 215 |
"metadata": {},
|
| 216 |
"outputs": [],
|
| 217 |
"source": [
|
| 218 |
+
"import json\n",
|
| 219 |
"import os\n",
|
| 220 |
+
"from pathlib import Path\n",
|
| 221 |
"\n",
|
| 222 |
+
"# Load configuration from notebook_config.json first (for HF Spaces)\n",
|
| 223 |
+
"config_json_path = Path(\"notebook_config.json\")\n",
|
| 224 |
+
"if config_json_path.exists():\n",
|
| 225 |
+
" with open(config_json_path, \"r\") as f:\n",
|
| 226 |
+
" loaded_config = json.load(f)\n",
|
| 227 |
+
" print(f\"β Loaded configuration from: {config_json_path.absolute()}\")\n",
|
| 228 |
"else:\n",
|
| 229 |
+
" loaded_config = {}\n",
|
| 230 |
+
" print(f\"β No notebook_config.json found, using defaults\")\n",
|
| 231 |
+
"\n",
|
| 232 |
+
"# Try loading .env file as fallback (for local dev)\n",
|
| 233 |
+
"try:\n",
|
| 234 |
+
" from dotenv import load_dotenv\n",
|
| 235 |
+
" env_path = Path(\"../.env\")\n",
|
| 236 |
+
" if env_path.exists():\n",
|
| 237 |
+
" load_dotenv(env_path)\n",
|
| 238 |
+
" print(f\"β Loaded environment from: {env_path.absolute()}\")\n",
|
| 239 |
+
"except ImportError:\n",
|
| 240 |
+
" pass\n",
|
| 241 |
"\n",
|
| 242 |
"# Configuration class\n",
|
| 243 |
"class Config:\n",
|
| 244 |
+
" # API Keys - priority: config.json > env vars > HF secrets\n",
|
| 245 |
+
" GEMINI_API_KEY = loaded_config.get(\"gemini_api_key\") or os.getenv(\"GEMINI_API_KEY\", \"AIzaSyA3HdWTLk_zJQ5P9G8Z8a8BEYSTPvLglhs\")\n",
|
| 246 |
+
" HUGGINGFACE_TOKEN = os.getenv(\"HUGGINGFACE_API_TOKEN\", os.getenv(\"HF_TOKEN\", \"\"))\n",
|
| 247 |
+
" WEBSCRAPER_API_KEY = loaded_config.get(\"webscraper_api_key\", \"sk-fd14eaa7bceb478db7afc7256e514d2b\")\n",
|
| 248 |
+
" WEBSCRAPER_API_URL = loaded_config.get(\"webscraper_api_url\", \"http://webscrapper.live/api/scrape\")\n",
|
| 249 |
+
" \n",
|
| 250 |
+
" # Gemini model\n",
|
| 251 |
+
" GEMINI_MODEL = loaded_config.get(\"gemini_model\", \"gemini-2.5-flash\")\n",
|
| 252 |
" \n",
|
| 253 |
" # Paths\n",
|
| 254 |
" BASE_DIR = Path(\"..\").resolve()\n",
|
|
|
|
| 257 |
" ARTIFACTS_DIR = BASE_DIR / \"artifacts\"\n",
|
| 258 |
" \n",
|
| 259 |
" # ML Settings\n",
|
| 260 |
+
" RANDOM_STATE = loaded_config.get(\"random_state\", 42)\n",
|
| 261 |
+
" TEST_SIZE = loaded_config.get(\"test_size\", 0.2)\n",
|
| 262 |
+
" CV_FOLDS = loaded_config.get(\"cv_folds\", 5)\n",
|
| 263 |
" \n",
|
| 264 |
" # Device\n",
|
| 265 |
" DEVICE = DEVICE\n",
|
|
|
|
| 270 |
"print(\"\\n\" + \"=\" * 60)\n",
|
| 271 |
"print(\"API CONFIGURATION STATUS\")\n",
|
| 272 |
"print(\"=\" * 60)\n",
|
| 273 |
+
"print(f\"β Gemini API Key: {'Configured (' + config.GEMINI_API_KEY[:10] + '...)' if config.GEMINI_API_KEY else 'β NOT SET'}\")\n",
|
| 274 |
+
"print(f\"β Gemini Model: {config.GEMINI_MODEL}\")\n",
|
| 275 |
+
"print(f\"β HuggingFace Token: {'Configured' if config.HUGGINGFACE_TOKEN else 'β NOT SET (optional)'}\")\n",
|
| 276 |
"print(f\"β WebScraper API: Configured\")"
|
| 277 |
]
|
| 278 |
},
|
|
|
|
| 300 |
" \n",
|
| 301 |
" try:\n",
|
| 302 |
" genai.configure(api_key=config.GEMINI_API_KEY)\n",
|
| 303 |
+
" # Use the configured model (gemini-2.5-flash)\n",
|
| 304 |
+
" model = genai.GenerativeModel(config.GEMINI_MODEL)\n",
|
| 305 |
" response = model.generate_content(\"Respond with only: OK\")\n",
|
| 306 |
+
" return True, f\"Model: {config.GEMINI_MODEL}, Response: {response.text.strip()}\"\n",
|
| 307 |
" except Exception as e:\n",
|
| 308 |
+
" # Fallback to gemini-1.5-flash if 2.5 not available\n",
|
| 309 |
+
" try:\n",
|
| 310 |
+
" model = genai.GenerativeModel('gemini-1.5-flash')\n",
|
| 311 |
+
" response = model.generate_content(\"Respond with only: OK\")\n",
|
| 312 |
+
" return True, f\"Model: gemini-1.5-flash (fallback), Response: {response.text.strip()}\"\n",
|
| 313 |
+
" except Exception as e2:\n",
|
| 314 |
+
" return False, str(e2)\n",
|
| 315 |
"\n",
|
| 316 |
"print(\"Testing Gemini API connection...\")\n",
|
| 317 |
"success, message = test_gemini_connection()\n",
|
| 318 |
"\n",
|
| 319 |
"if success:\n",
|
| 320 |
+
" print(f\"β Gemini API: {message}\")\n",
|
| 321 |
"else:\n",
|
| 322 |
" print(f\"β Gemini API: Connection failed - {message}\")"
|
| 323 |
]
|