LANGCHAIN

LangChain on 35+ models, one base_url

Pass Luno's base_url to ChatOpenAI and your chains, agents and RAG pipelines run on Claude, GPT and Gemini — one key, up to 70% cheaper in production.

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="https://api.luno.codes/v1",
    api_key="luno-...",
    model="claude-opus-4-8",
)

35+ models · OpenAI-compatible · up to 70% cheaper

// WHY LUNO HERE

One constructor argument

ChatOpenAI(base_url=..., api_key=..., model=...) is the entire integration — Python or JS, chains, agents, LCEL and streaming all work unchanged.

Swap models without rewrites

Change the model string from claude-opus-4-8 to gpt-5.5 or gemini-3.1-pro and rerun. No provider-specific classes, no second API account.

Production volume, flat cost

RAG pipelines and multi-agent graphs make thousands of calls per day. Luno's flat plans cut that spend by up to 70% versus metered per-token billing.

// QUICK SETUP

Get started in 30 seconds

1

Get your luno- key from the Telegram bot

2

Pass base_url and api_key to ChatOpenAI

3

Set any model ID — Claude, GPT or Gemini — and run your chain

// FAQ

FREQUENTLY ASKED QUESTIONS

Pass Luno's base_url to ChatOpenAI and your chains, agents and RAG pipelines run on Claude, GPT and Gemini — one key, up to 70% cheaper in production.

Yes. Both langchain_openai.ChatOpenAI (Python) and @langchain/openai (JS) accept base_url / configuration.baseURL — point them at https://api.luno.codes/v1 with your luno- key.

Yes — Luno also exposes an Anthropic-compatible endpoint, so ChatAnthropic works by overriding its base URL. Most users stick with ChatOpenAI since one class then covers every model.

Yes. bind_tools, with_structured_output, streaming and async all use standard OpenAI semantics, which Luno supports across Claude, GPT and Gemini models.

USE LUNO EVERYWHERE

READY TO GET STARTED?

Get your API key in 10 seconds. One key, every model, up to 70% off — no credit card, no sign-up forms.