LangChain
Use the OpenAI chat model and point it at odnoga.
TypeScript
import { ChatOpenAI } from '@langchain/openai';
const llm = new ChatOpenAI({
apiKey: process.env.ODNOGA_API_KEY,
configuration: {
baseURL: process.env.ODNOGA_BASE_URL,
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["ODNOGA_API_KEY"],
base_url=os.environ["ODNOGA_BASE_URL"],
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.