LiteLLM on AI models run in Europe
Add Evanesca to LiteLLM's SDK or proxy with the openai/ prefix: models run in Europe behind your virtual keys, budgets and spend tracking. model="openai/<model ID>" with api_base and api_key — in a litellm.completion() call or in a model_list entry of the proxy's config.yaml.
SoonOpening soon: what follows describes the service as it will work.
- Tool
LiteLLM · LLM gateway- API format
- OpenAI-compatible (Chat Completions)
- Base URL
https://evanesca.app/api/v1- Your prompts
- From your machine or server, straight to Evanesca
Setup
1. Call Evanesca from the Python SDK
The openai/ prefix is what tells LiteLLM to talk the OpenAI protocol to a base URL other than OpenAI's; a bare model ID leaves it unable to pick a provider. api_base ends at /api/v1: LiteLLM adds /chat/completions on its own.
import os
import litellm
response = litellm.completion(
model="openai/gemma-4-26b",
api_base="https://evanesca.app/api/v1",
api_key=os.environ["EVANESCA_API_KEY"],
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)2. Declare the models on the proxy
On LiteLLM Proxy, each Evanesca model is one model_list entry: model_name is what your own clients will ask for, litellm_params holds the same three settings as the SDK, and os.environ/ keeps the key out of the file. The prices under model_info are Evanesca's, per token, in euros, margin and VAT included — computed from the catalogue when this page was built. drop_params: true drops options a model does not take instead of failing the call.
model_list:
- model_name: gemma-4-26b
litellm_params:
model: openai/gemma-4-26b
api_base: https://evanesca.app/api/v1
api_key: os.environ/EVANESCA_API_KEY
model_info:
# Evanesca's price, € per token, margin and VAT included
input_cost_per_token: 0.000000168
output_cost_per_token: 0.00000084
- model_name: bge-multilingual-gemma2
litellm_params:
model: openai/bge-multilingual-gemma2
api_base: https://evanesca.app/api/v1
api_key: os.environ/EVANESCA_API_KEY
model_info:
mode: embedding
input_cost_per_token: 0.000000168
litellm_settings:
drop_params: true3. Start the proxy with a master key
Recent LiteLLM releases refuse to start the proxy without LITELLM_MASTER_KEY (or general_settings.master_key). Set one, then hand your clients that key or virtual keys made with it: they call the proxy, and the proxy calls Evanesca.
export EVANESCA_API_KEY="<your Evanesca key>"
export LITELLM_MASTER_KEY="sk-$(openssl rand -hex 24)"
litellm --config config.yaml --port 40004. Ask for usage in streams
Evanesca ends every stream with a usage chunk, but the LiteLLM SDK only hands it to your code when the call asks for it with stream_options. Behind the proxy, clients get it on request, or always with always_include_stream_usage: true under general_settings. Billing on Evanesca's side does not depend on it.
stream = litellm.completion(
model="openai/gemma-4-26b",
api_base="https://evanesca.app/api/v1",
api_key=os.environ["EVANESCA_API_KEY"],
messages=[{"role": "user", "content": "Bonjour"}],
stream=True,
stream_options={"include_usage": True},
)5. Read who served each call
Evanesca names the operator and the place of every call in two response headers, x-evanesca-operator and x-evanesca-location. LiteLLM passes upstream headers on with an llm_provider- prefix: on the proxy's HTTP response, and in response._hidden_params["additional_headers"] in the SDK. Logged next to LiteLLM's own request log, they record where each request ran.
Where these settings come from
These settings come from LiteLLM's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.
Which model to pick
Evanesca's models from which a real tool call came back at their operator. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B, picked from the catalogue for their properties. Prices per million tokens, input / output, margin and VAT included.
| Model ID | Operator and place | Context | Reasoning | Price |
|---|---|---|---|---|
mistral-large-4 | EU region of Mistral AI | 512k | — | €2.5133 / €7.7246 |
deepseek-v4.1-flash | Germany (AKI.IO) | 1M | Yes | €1.008 / €3.024 |
glm-5.3 | Germany (AKI.IO) | 512k | Yes | €3.024 / €9.24 |
qwen3.8-27b | Scaleway — Paris, France | 256k | Yes | €1.008 / €5.544 |
deepseek-v4-flash | Scaleway — Paris, France | 256k | Yes | €0.672 / €1.344 |
apertus-v1.5-70b | Switzerland (Infomaniak) | 100k | — | €1.2936 / €4.62 |
glm-5.2 | Scaleway — Paris, France | 256k | Yes | €3.024 / €9.24 |
qwen3.6-35b | Scaleway — Paris, France | 256k | Yes | €0.42 / €2.52 |
gemma-4-26b | Germany (AKI.IO) | 256k | — | €0.168 / €0.84 |
mistral-small-4-119b | EU region of Mistral AI | 256k | — | €0.2772 / €1.1088 |
qwen3.5-397b | Scaleway — Paris, France | 250k | Yes | €1.008 / €6.048 |
gpt-oss-120b | Scaleway — Paris, France | — | Yes | €0.252 / €1.008 |
qwen3-coder-30b | Scaleway — Paris, France | 256k | — | €0.336 / €1.344 |
qwen3-235b | Scaleway — Paris, France | 250k | — | €1.26 / €3.78 |
mistral-small-3.2 | Scaleway — Paris, France | — | — | €0.252 / €0.588 |
llama-3.3-70b | Scaleway — Paris, France | — | — | €1.512 / €1.512 |
pixtral-12b | Scaleway — Paris, France | 128k | — | €0.336 / €0.336 |
Reasoning tokens are billed as output. Where each model runs and what its operator keeps: Models and Europe.
Good to know
- Clients that call /v1/responses (OpenAI's newer format) fail with a 404 behind the openai/ prefix, since Evanesca serves Chat Completions. LiteLLM documents a custom_openai/ prefix that bridges that route into Chat Completions; keep openai/ for embedding models.
- LiteLLM does not convert currencies: it multiplies tokens by the cost you enter. With Evanesca's prices, the spend it tracks is in euros — mind it if the same budget also covers models priced in dollars.
- If the same proxy also routes to providers outside Europe, LiteLLM's fallbacks can move a request from one to the other. Keep the fallback chains of regulated workloads inside Evanesca's models.
Where your prompts go
LiteLLM runs where you deploy it: the SDK in your process, the proxy on your server. It sees every prompt before Evanesca does, and its logs and database are yours to place.
On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.
Troubleshooting
| Symptom | What to do |
|---|---|
| LLM Provider NOT provided | The openai/ prefix is missing: write openai/<model ID>. |
| NotFoundError with an HTML page in the message | api_base ends with /chat/completions. Stop it at /api/v1. |
| NotFoundError on one model | The part after openai/ must be an ID listed by GET /models. |
| The proxy exits at startup: no master key | Set LITELLM_MASTER_KEY before starting it. |
| Spend reads 0 for Evanesca's models | LiteLLM has no price for them: add input_cost_per_token and output_cost_per_token under model_info. |
| Calls return 402 | Your Evanesca credit is at zero: add credit and calls resume. |
Sources
Official documentation, read on 12 Oct 2026:
Frequently asked questions
Does LiteLLM work with Evanesca?
Yes, through its base URL setting: model="openai/<model ID>" with api_base and api_key — in a litellm.completion() call or in a model_list entry of the proxy's config.yaml. These settings come from LiteLLM's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.
Which Evanesca model should I use with LiteLLM?
One whose tool calling is measured. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B; the 17 candidates are in this page's table, with their context window and price.
Do my prompts stay in Europe with LiteLLM?
LiteLLM runs where you deploy it: the SDK in your process, the proxy on your server. It sees every prompt before Evanesca does, and its logs and database are yours to place. On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.
One key, and the tool runs on models in Europe.
Prepaid credit, no subscription: the same key works with every guide.