Che237 commited on
Commit
924448a
Β·
verified Β·
1 Parent(s): 65b642b

Upload notebooks/00_environment_setup.ipynb with huggingface_hub

Browse files
Files changed (1) hide show
  1. notebooks/00_environment_setup.ipynb +45 -21
notebooks/00_environment_setup.ipynb CHANGED
@@ -215,24 +215,40 @@
215
  "metadata": {},
216
  "outputs": [],
217
  "source": [
218
- "from dotenv import load_dotenv\n",
219
  "import os\n",
 
220
  "\n",
221
- "# Load environment variables from .env file\n",
222
- "env_path = Path(\"../.env\")\n",
223
- "if env_path.exists():\n",
224
- " load_dotenv(env_path)\n",
225
- " print(f\"βœ“ Loaded environment from: {env_path.absolute()}\")\n",
 
226
  "else:\n",
227
- " print(f\"⚠ No .env file found at {env_path.absolute()}\")\n",
 
 
 
 
 
 
 
 
 
 
 
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\" # WebScrapper.live API\n",
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\"βœ“ HuggingFace Token: {'Configured' if config.HUGGINGFACE_TOKEN else '⚠ NOT SET'}\")\n",
 
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 = genai.GenerativeModel('gemini-1.5-flash')\n",
 
287
  " response = model.generate_content(\"Respond with only: OK\")\n",
288
- " return True, response.text.strip()\n",
289
  " except Exception as e:\n",
290
- " return False, str(e)\n",
 
 
 
 
 
 
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: Connected successfully\")\n",
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
  ]