FrameworksLangChain

LangChain

Use Nemo Router with LangChain — guardrails, prompt templates, RAG

Last updated

LangChain's ChatOpenAI works directly with Nemo Router. Set base_url to https://api.nemorouter.ai/v1 — guardrails, caching, and rate-limits auto-apply from your org config. Every chain, agent, and RAG pipeline is protected.

Installation

pip install langchain-openai nemoroutersdk

Setup

import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="claude-sonnet-4-20250514",
    api_key=os.environ["NEMOROUTER_API_KEY"],
    base_url="https://api.nemorouter.ai/v1",
)

response = llm.invoke("Explain quantum computing in one sentence.")
print(response.content)

Per-Request Overrides

Pass nemo_* fields via model_kwargs:

llm = ChatOpenAI(
    model="gpt-4o",
    api_key=os.environ["NEMOROUTER_API_KEY"],
    base_url="https://api.nemorouter.ai/v1",
    model_kwargs={
        "nemo_prompt_template_id": "your-summarizer-template-id",
        "nemo_prompt_variables": {"language": "Spanish", "max_length": "100"},
        "nemo_guardrail_ids": ["guardrail-uuid-1"],
        "nemo_cache": False,
    },
)

Chains

Standard LangChain composition — guardrails protect every step:

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a {role}. Be concise."),
    ("user", "{input}"),
])

chain = prompt | llm | StrOutputParser()
result = chain.invoke({"role": "technical writer", "input": "Explain API gateways"})

RAG

Use OpenAIEmbeddings against the same gateway:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    api_key=os.environ["NEMOROUTER_API_KEY"],
    base_url="https://api.nemorouter.ai/v1",
)
vectorstore = FAISS.from_texts(["..."], embeddings)

The RAG query is protected by guardrails — prompt injection is blocked before retrieval starts.

Error Handling

from nemoroutersdk import NemoGuardrailBlockedError
from openai import BadRequestError

try:
    response = llm.invoke("My SSN is 123-45-6789, process refund")
except (NemoGuardrailBlockedError, BadRequestError) as e:
    print(f"Guardrail blocked: {e}")

Next Steps

Was this page helpful?