From eda88b93f623e573fb044883e4f3e504809772cf Mon Sep 17 00:00:00 2001 From: jerilynzheng Date: Sun, 4 Jan 2026 14:04:33 -0800 Subject: [PATCH 1/2] added Vercel AI Gateway as a provider --- rlm/clients/__init__.py | 7 ++++++- rlm/clients/openai.py | 3 +++ rlm/core/types.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rlm/clients/__init__.py b/rlm/clients/__init__.py index 71606268..0eb8a226 100644 --- a/rlm/clients/__init__.py +++ b/rlm/clients/__init__.py @@ -36,6 +36,11 @@ def get_client( backend_kwargs.setdefault("base_url", "https://openrouter.ai/api/v1") return OpenAIClient(**backend_kwargs) + elif backend == "vercel": + from rlm.clients.openai import OpenAIClient + + backend_kwargs.setdefault("base_url", "https://ai-gateway.vercel.sh/v1") + return OpenAIClient(**backend_kwargs) elif backend == "litellm": from rlm.clients.litellm import LiteLLMClient @@ -46,5 +51,5 @@ def get_client( return AnthropicClient(**backend_kwargs) else: raise ValueError( - f"Unknown backend: {backend}. Supported backends: ['openai', 'vllm', 'portkey', 'openrouter', 'litellm', 'anthropic']" + f"Unknown backend: {backend}. Supported backends: ['openai', 'vllm', 'portkey', 'openrouter', 'vercel', 'litellm', 'anthropic']" ) diff --git a/rlm/clients/openai.py b/rlm/clients/openai.py index 268e77ea..fecacb70 100644 --- a/rlm/clients/openai.py +++ b/rlm/clients/openai.py @@ -13,6 +13,7 @@ # Load API keys from environment variables DEFAULT_OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") DEFAULT_OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY") +DEFAULT_VERCEL_API_KEY = os.getenv("AI_GATEWAY_API_KEY") class OpenAIClient(BaseLM): @@ -34,6 +35,8 @@ def __init__( api_key = DEFAULT_OPENAI_API_KEY elif base_url == "https://openrouter.ai/api/v1": api_key = DEFAULT_OPENROUTER_API_KEY + elif base_url == "https://ai-gateway.vercel.sh/v1": + api_key = DEFAULT_VERCEL_API_KEY # For vLLM, set base_url to local vLLM server address. self.client = openai.OpenAI(api_key=api_key, base_url=base_url) diff --git a/rlm/core/types.py b/rlm/core/types.py index ad167628..fd5992a1 100644 --- a/rlm/core/types.py +++ b/rlm/core/types.py @@ -2,7 +2,7 @@ from types import ModuleType from typing import Any, Literal -ClientBackend = Literal["openai", "portkey", "openrouter", "vllm", "litellm", "anthropic"] +ClientBackend = Literal["openai", "portkey", "openrouter", "vercel", "vllm", "litellm", "anthropic"] EnvironmentType = Literal["local", "prime", "modal"] From 33b24e42d43d0c2146e2068ff097d1c6c2bdbdaa Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Tue, 6 Jan 2026 21:21:04 -0500 Subject: [PATCH 2/2] fix merging bug --- rlm/core/types.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rlm/core/types.py b/rlm/core/types.py index 85cbaa37..7e913835 100644 --- a/rlm/core/types.py +++ b/rlm/core/types.py @@ -3,7 +3,16 @@ from typing import Any, Literal ClientBackend = Literal[ - "openai", "portkey", "openrouter", "vercel", "vllm", "litellm", "anthropic", "azure_openai", "gemini" + "openai", + "portkey", + "openrouter", + "vercel", + "vllm", + "litellm", + "anthropic", + "azure_openai", + "gemini", +] EnvironmentType = Literal["local", "prime", "modal"]