Integration guide · Agent framework (Python)
LangChain on EU-hosted open models
Use ChatOpenAI and OpenAIEmbeddings with Frontière AI's base URL to build LangChain apps and agents on EU-hosted open models. ChatOpenAI(base_url=…, api_key=…) from langchain-openai, or the OPENAI_API_BASE variable.
Tested on 13 October 2026. Chat, streamed usage (stream_usage=True), a tool call and bge-m3 embeddings against the gateway, with langchain-openai and gpt-oss-120b on OVHcloud (bge-m3 has been paused since 20 October 2026; the example now uses qwen3-embedding-8b).
- API format
- OpenAI-compatible
- Base URL
- https://getfrontiereai.eu/api/v1
- Where it goes
- ChatOpenAI(base_url=…, api_key=…) from langchain-openai, or the OPENAI_API_BASE variable.
- Your prompts
- Straight from your machine to us
Setup
1.Chat model and embeddings
With a custom base URL, LangChain leaves token usage off while streaming: set stream_usage=True. Pin use_responses_api=False so it stays on chat completions. For embeddings, send raw strings instead of tiktoken tokens.
# pip install -U langchain-openai
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
llm = ChatOpenAI(
model="glm-5.2",
base_url="https://getfrontiereai.eu/api/v1",
api_key="sk-front-...",
stream_usage=True,
use_responses_api=False,
)
print(llm.invoke("Hello from Europe").content)
embeddings = OpenAIEmbeddings(
model="qwen3-embedding-8b",
base_url="https://getfrontiereai.eu/api/v1",
api_key="sk-front-...",
check_embedding_ctx_length=False,
)Which model to pick
24 live models have tool calling measured by a real call through the gateway. Models labeled EU sovereign run at European providers; fast-access models are served through US-controlled infrastructure. Prices are per 100,000 tokens, margin and VAT included.
| Model id | Provider | Label | Context | Input | Output |
|---|---|---|---|---|---|
| pixtral-12b | Scaleway | EU sovereign | 131k | €0.0336 | €0.0336 |
| mistral-small-3.2-24b | Scaleway | EU sovereign | — | €0.0252 | €0.0588 |
| gemma-4-26b | AKI.IO | EU sovereign | 256k | €0.0168 | €0.084 |
| gpt-oss-120b | Scaleway | EU sovereign | — | €0.0252 | €0.1008 |
| mistral-small-4-119b | Mistral AI | EU sovereign | 262k | €0.0278 | €0.1109 |
| deepseek-v4-flash-0731 | Scaleway | EU sovereign | 256k | €0.0672 | €0.1344 |
| qwen3-coder-30b | Scaleway | EU sovereign | 262k | €0.0336 | €0.1344 |
| llama-3.3-70b | Scaleway | EU sovereign | — | €0.1512 | €0.1512 |
| qwen3.6-35b | Scaleway | EU sovereign | 262k | €0.042 | €0.252 |
| deepseek-v4.1-flash | AKI.IO | EU sovereign | 1M | €0.1008 | €0.3024 |
| qwen3-235b | Scaleway | EU sovereign | — | €0.126 | €0.378 |
| apertus-v1.5-70b | Infomaniak | EU sovereign | 100k | €0.1294 | €0.462 |
| qwen3.8-27b | Scaleway | EU sovereign | 262k | €0.1008 | €0.5544 |
| qwen3.5-397b | Scaleway | EU sovereign | — | €0.1008 | €0.6048 |
| mistral-large-4 | Mistral AI | EU sovereign | 524k | €0.2514 | €0.7725 |
| glm-5.2 | Scaleway | EU sovereign | 256k | €0.3024 | €0.924 |
| glm-5.3 | AKI.IO | EU sovereign | 524k | €0.3024 | €0.924 |
| gemma-3-27b | OpenRouter | Fast access (US) | 131k | €0.0135 | €0.074 |
| qwen3.8-flash | OpenRouter | Fast access (US) | — | €0.0252 | €0.0773 |
| glm-5.3-flash | Modal | Fast access (US) | 1M | €0.0689 | €0.2268 |
| deepseek-v4-pro | OpenRouter | Fast access (US) | — | €0.2453 | €0.5124 |
| muse-spark-1.1 | OpenRouter | Fast access (US) | — | €0.205 | €0.6956 |
| muse-spark-1.2 | OpenRouter | Fast access (US) | — | €0.205 | €0.6956 |
| kimi-k3 | Modal | Fast access (US) | 1M | €0.4536 | €2.268 |
Good to know
- ChatOpenAI follows the official OpenAI response format only: reasoning fields such as reasoning_content are dropped.
- Tool calling and structured output work through ChatOpenAI and depend on the model; see the table below.
Where your prompts go
The library runs in your process and calls the base URL directly. LangSmith tracing is opt-in and would send traces to LangSmith if you enable it.
On our side, a model labeled EU sovereign runs at a European provider, and the gateway itself runs in Paris on Vercel, a US company — our privacy page says so. Billing keeps the model, the token counts and the amount, never the prompt or the reply.
Sources
Official documentation, checked on 12 October 2026:
FAQ
Does LangChain work with Frontière AI?
Yes. ChatOpenAI(base_url=…, api_key=…) from langchain-openai, or the OPENAI_API_BASE variable. We ran it ourselves: Chat, streamed usage (stream_usage=True), a tool call and bge-m3 embeddings against the gateway, with langchain-openai and gpt-oss-120b on OVHcloud (bge-m3 has been paused since 20 October 2026; the example now uses qwen3-embedding-8b).
Which Frontière AI model should I use with LangChain?
One with measured tool calling, preferably labeled EU sovereign: pixtral-12b, mistral-small-3.2-24b, gemma-4-26b and gpt-oss-120b. The 24 candidates are listed on this page with their context window and price.
Do my prompts stay in Europe with LangChain?
The library runs in your process and calls the base URL directly. LangSmith tracing is opt-in and would send traces to LangSmith if you enable it. On our side, a model labeled EU sovereign runs at a European provider, and the gateway itself runs in Paris on Vercel, a US company — our privacy page says so. Billing keeps the model, the token counts and the amount, never the prompt or the reply.
Other guides
Get a key and try it
Prepaid credit from €10, no subscription. The key works with every guide on this site.
Create an API key