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 nemoroutersdkSetup
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
- LlamaIndex — Same pattern for index-based RAG
- Vercel AI — Equivalent for TypeScript / Next.js
- Python SDK — Without LangChain
Was this page helpful?