From 98ab11fac67c3b2403e613c465714985b1d5c683 Mon Sep 17 00:00:00 2001 From: Priya Natarajan Date: Thu, 5 Feb 2026 14:02:00 +0000 Subject: [PATCH] Add provider abstraction for Gemini, Claude, and OpenAI backends --- routeforge/gateway.py | 15 +++++++++++++++ routeforge/providers.py | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 routeforge/gateway.py create mode 100644 routeforge/providers.py diff --git a/routeforge/gateway.py b/routeforge/gateway.py new file mode 100644 index 0000000..1e81caf --- /dev/null +++ b/routeforge/gateway.py @@ -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] diff --git a/routeforge/providers.py b/routeforge/providers.py new file mode 100644 index 0000000..183cce6 --- /dev/null +++ b/routeforge/providers.py @@ -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"), +}