Add provider abstraction for Gemini, Claude, and OpenAI backends
This commit is contained in:
parent
02aefedaa7
commit
98ab11fac6
15
routeforge/gateway.py
Normal file
15
routeforge/gateway.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
"""Single-endpoint gateway that fans requests out to whichever backend
|
||||||
|
provider is configured."""
|
||||||
|
|
||||||
|
from .providers import PROVIDERS
|
||||||
|
|
||||||
|
|
||||||
|
class Gateway:
|
||||||
|
def __init__(self, default_provider="gemini"):
|
||||||
|
self.default_provider = default_provider
|
||||||
|
|
||||||
|
def route(self, provider_name=None):
|
||||||
|
provider_name = provider_name or self.default_provider
|
||||||
|
if provider_name not in PROVIDERS:
|
||||||
|
raise ValueError(f"unknown provider: {provider_name}")
|
||||||
|
return PROVIDERS[provider_name]
|
||||||
17
routeforge/providers.py
Normal file
17
routeforge/providers.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
"""Provider adapters for RouteForge."""
|
||||||
|
|
||||||
|
|
||||||
|
class Provider:
|
||||||
|
def __init__(self, name, base_url):
|
||||||
|
self.name = name
|
||||||
|
self.base_url = base_url
|
||||||
|
|
||||||
|
def complete(self, prompt):
|
||||||
|
raise NotImplementedError("wire up a real backend client here")
|
||||||
|
|
||||||
|
|
||||||
|
PROVIDERS = {
|
||||||
|
"gemini": Provider("gemini", "https://generativelanguage.googleapis.com"),
|
||||||
|
"claude": Provider("claude", "https://api.anthropic.com"),
|
||||||
|
"openai": Provider("openai", "https://api.openai.com"),
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user