import os import sys from pathlib import Path from dotenv import load_dotenv # Force load .env env_path = Path("D:/AI Research Assistant/.env.example") load_dotenv(dotenv_path=env_path, override=True) print("=" * 50) print(" Complete LLM Verification") print("=" * 50) # Check 1: API Key key = os.getenv("GROQ_API_KEY", "") print(f"\n1. GROQ_API_KEY loaded: {'YES' if key else 'NO'}") if key: print(f" Preview: {key[:8]}...{key[-4:]}") else: print(" Key not found in .env") # Check 2: Ollama running? print("\n2. Checking if Ollama server is running...") try: import httpx resp = httpx.get("http://localhost:11434/api/tags", timeout=3) if resp.status_code == 200: models = [m["name"] for m in resp.json().get("models", [])] print(f" Ollama is RUNNING with models: {models}") print(" WARNING: Ollama running but Groq will be used if key is set") else: print(" Ollama server: NOT running (good)") except Exception: print(" Ollama server: NOT running (good)") # Check 3: Test Groq directly print("\n3. Testing Groq API directly...") if key: try: import httpx headers = { "Authorization": f"Bearer {key}", "Content-Type": "application/json" } payload = { "model": "llama-3.1-8b-instant", "messages": [{"role": "user", "content": "Say exactly: GROQ_OK"}], "max_tokens": 10, "temperature": 0 } resp = httpx.post( "https://api.groq.com/openai/v1/chat/completions", headers=headers, json=payload, timeout=30 ) if resp.status_code == 200: content = resp.json()["choices"][0]["message"]["content"] print(f" Groq response: {content}") print(" Groq API: WORKING") elif resp.status_code == 401: print(" Groq error: Invalid API key") elif resp.status_code == 429: print(" Groq error: Rate limit hit") else: print(f" Groq error: {resp.status_code}") except Exception as e: print(f" Groq test failed: {e}") else: print(" Skipped - no API key found") # Check 4: Which provider will llm_generate use? print("\n4. Checking llm_generate() provider...") sys.path.insert(0, "D:/AI Research Assistant") try: from agents.llm_helper import ( get_active_provider, GROQ_API_KEY as MODULE_KEY ) print(f" Active provider: {get_active_provider()}") print(f" GROQ_API_KEY in module: {'SET' if MODULE_KEY else 'NOT SET'}") except Exception as e: print(f" Error loading llm_helper: {e}") # Check 5: .env file details print("\n5. .env file check...") print(f" Path: {env_path}") print(f" Exists: {env_path.exists()}") if env_path.exists(): content = env_path.read_text() lines = content.strip().split("\n") print(f" Lines in file: {len(lines)}") for line in lines: if "GROQ" in line.upper(): if "=" in line: k, v = line.split("=", 1) masked = v[:4] + "..." + v[-4:] if len(v) > 8 else "***" print(f" Found: {k.strip()}={masked}") else: print(f" Found line: {line[:30]}") # Final verdict print("\n" + "=" * 50) key = os.getenv("GROQ_API_KEY", "") if key: print("VERDICT: GROQ is active - Ollama NOT in use") else: print("VERDICT: WARNING - GROQ key missing") print("ACTION: Check your .env file location and content") print("=" * 50)