Coverage for app \ services \ clients.py: 67%
24 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-28 20:58 -0400
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-28 20:58 -0400
1import os
2from functools import lru_cache
4import google.generativeai as genai
5from openai import OpenAI
6import anthropic
8from app.settings import GEMINI_API_KEY
9from app.settings import ANTHROPIC_API_KEY
12@lru_cache(maxsize=1)
13def get_openai_client() -> OpenAI:
14 api_key = os.getenv("OPENAI_API_KEY")
15 if not api_key or not api_key.strip():
16 raise RuntimeError("OPENAI_API_KEY is not set. Add it to your .env file to use question generation.")
17 return OpenAI(api_key=api_key)
20@lru_cache(maxsize=1)
21def get_anthropic_client() -> anthropic.Anthropic:
22 if not ANTHROPIC_API_KEY or not ANTHROPIC_API_KEY.strip():
23 raise RuntimeError("ANTHROPIC_API_KEY is not set.")
24 return anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)
27@lru_cache(maxsize=1)
28def get_gemini_configured() -> bool:
29 if not GEMINI_API_KEY or not GEMINI_API_KEY.strip():
30 raise RuntimeError("GEMINI_API_KEY is not set.")
31 genai.configure(api_key=GEMINI_API_KEY)
32 return True