Framework Integrations

Any framework that accepts an OpenAI-compatible endpoint works with Routero. Replace the base URL; everything else — streaming, tool calls, structured outputs, embeddings — stays identical.


LangChain (Python)

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    openai_api_key="YOUR_ROUTERO_KEY",
    openai_api_base="https://api.routero.ai/v1",
    model_name="smart/balanced",
)

response = llm.invoke("Summarise Q3 results in 3 bullet points.")

Vercel AI SDK

import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";

const routero = createOpenAI({
  apiKey: "YOUR_ROUTERO_KEY",
  baseURL: "https://api.routero.ai/v1",
});

const { text } = await generateText({
  model: routero("smart/balanced"),
  prompt: "Summarise Q3 results in 3 bullet points.",
});

LlamaIndex (Python)

from llama_index.llms.openai import OpenAI

llm = OpenAI(
    api_key="YOUR_ROUTERO_KEY",
    api_base="https://api.routero.ai/v1",
    model="smart/balanced",
)

PydanticAI

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIModel

model = OpenAIModel(
    "smart/balanced",
    base_url="https://api.routero.ai/v1",
    api_key="YOUR_ROUTERO_KEY",
)
agent = Agent(model)
result = agent.run_sync("Summarise Q3 results.")

Instructor

import instructor
import openai

client = instructor.from_openai(
    openai.OpenAI(
        api_key="YOUR_ROUTERO_KEY",
        base_url="https://api.routero.ai/v1",
    )
)

Adding Advanced Features from frameworks

Frameworks that support extra_body / extra kwargs can pass Advanced Feature IDs through to Routero:

# LangChain
llm = ChatOpenAI(
    openai_api_key="YOUR_ROUTERO_KEY",
    openai_api_base="https://api.routero.ai/v1",
    model_name="smart/balanced",
    model_kwargs={"guardrail_id": "pii-redact-prod"},
)

For frameworks that don’t support extra_body, configure the feature at the workspace level (e.g., apply a guardrail to all requests from a specific team key via policy) instead.