MCPcopy Create free account
hub / github.com/Roy3838/Observer / GeminiAPIHandler

Class GeminiAPIHandler

api/gemini_handler.py:15–163  ·  view source on GitHub ↗

Thin proxy to Google's OpenAI-compatible Gemini endpoint.

Source from the content-addressed store, hash-verified

13
14
15class GeminiAPIHandler(BaseAPIHandler):
16 """Thin proxy to Google's OpenAI-compatible Gemini endpoint."""
17
18 def __init__(self):
19 super().__init__("gemini")
20
21 self.model_map = {
22 "gemma-4-26b-a4b-it": {
23 "model_id": "gemma-4-26b-a4b-it",
24 "parameters": "26BA4",
25 "multimodal": True,
26 "pro": False,
27 },
28 "gemma-4-31b-it": {
29 "model_id": "gemma-4-31b-it",
30 "parameters": "31B",
31 "multimodal": True,
32 "pro": False,
33 },
34 # Hidden model for agent creator (free users)
35 "gemini-2.0-flash-lite-free": {
36 "model_id": "gemini-flash-lite-latest",
37 "parameters": "N/A",
38 "multimodal": True,
39 "pro": False,
40 },
41 # Hidden model for agent creator (pro users)
42 "gemini-2.5-flash-lite-free": {
43 "model_id": "gemini-flash-lite-latest",
44 "parameters": "N/A",
45 "multimodal": True,
46 "pro": False,
47 },
48 }
49
50 self.models = [
51 {
52 "name": display_name,
53 "parameters": info.get("parameters", "N/A"),
54 "multimodal": info.get("multimodal", False),
55 "pro": info.get("pro", False),
56 }
57 for display_name, info in self.model_map.items()
58 ]
59
60 self.api_key = os.environ.get("GEMINI_API_KEY")
61 if not self.api_key:
62 logger.error("GEMINI_API_KEY environment variable not set.")
63
64 logger.info("GeminiAPIHandler registered models: %s", [m["name"] for m in self.models])
65
66 def _headers(self):
67 return {
68 "Content-Type": "application/json",
69 "Authorization": f"Bearer {self.api_key}",
70 "User-Agent": "ObserverAI-FastAPI-Client/1.0",
71 }
72

Callers 1

api_handlers.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected