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

1import os 

2from functools import lru_cache 

3 

4import google.generativeai as genai 

5from openai import OpenAI 

6import anthropic 

7 

8from app.settings import GEMINI_API_KEY 

9from app.settings import ANTHROPIC_API_KEY 

10 

11 

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) 

18 

19 

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) 

25 

26 

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