LangChain
Use the OpenAI chat model and point it at odnoga.
TypeScript
import { ChatOpenAI } from '@langchain/openai';
const llm = new ChatOpenAI({
apiKey: process.env.AIROUTER_API_KEY,
configuration: {
baseURL: `${process.env.AIROUTER_BASE_URL}/v1`,
defaultHeaders: { 'x-airouter-end-user': userId },
},
model: 'gpt-4o-mini',
modelKwargs: {
// odnoga extensions
prompt: { slug: 'welcome-email', variables: { name: 'Ada' } },
} as any,
});
const res = await llm.invoke([['user', 'hi']]);
Python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
api_key=os.environ["AIROUTER_API_KEY"],
base_url=f"{os.environ['AIROUTER_BASE_URL']}/v1",
default_headers={"x-airouter-end-user": user_id},
model="gpt-4o-mini",
model_kwargs={
"prompt": {"slug": "welcome-email", "variables": {"name": "Ada"}},
},
)
Tip
LangChain swallows response headers. Either:
- Wrap calls with the shared helper and only use LangChain for orchestration, or
- Hook LangChain's callback system to grab
model_name/token_usageand rely on odnoga's request log for the rest.