The problem
An assistant like LIA doesn't do just one job. For a single question, it has to understand what you're talking about, prepare a plan, call your tools, then write an answer. In the background, it keeps your journal; at night, it cleans up your memories. These tasks don't have the same needs. Sorting a request has to be fast and cheap, preparing a plan takes rigor, writing an answer takes style.
Handing everything to a single model, from a single provider, means paying top price for simple tasks, or settling for a model that's too weak for the hard ones. It also means depending on a single company: its prices, its outages, its terms.
What I wanted
I wanted each of LIA's tasks to have its own slot, with its provider and its model. Request sorting can run on a small, fast model, the planner on a sturdier one, the answer on the one whose tone you prefer. And I wanted you to be able to change them without touching the code.
LIA can talk to OpenAI, Anthropic, Google Gemini, DeepSeek, Alibaba's Qwen and Perplexity, as well as to the models you run yourself with Ollama, a server that runs open models on your own machine.
How it works
Each provider has its habits. One refuses a temperature setting, another counts the model's reasoning in the response budget, a third caches the start of messages in its own way. LIA translates these differences, provider by provider:
- A single reasoning scale. Asking a model to think more or less is set on the same scale for all of them, from “none” to “maximum”. What each model really accepts is deduced from its family, and the administration only offers the levels its API will accept.
- Filtered settings. A parameter a model refuses isn't sent. A response budget too large for the chosen model is brought down to what it can produce.
- Instructions arranged for the cache. The start of the instructions, identical from one turn to the next, is placed first. Providers that can keep it in cache reread it, which costs less and answers faster.
- Local models treated like the others. LIA talks to Ollama through its native interface. It asks your server what each model can do (tools, images, reasoning, context size): nothing is guessed from its name.
A concrete example: a reminder notification fits in two sentences. On a model that reasons by default, the reasoning can eat up the whole small budget set aside for it, and the answer comes back empty. So LIA asks for these short messages without reasoning, where the model allows it to be switched off. If the answer still comes back empty or cut off, LIA sends the planned fallback sentence, and the cost of the call is still counted.
What it costs, and who pays
Each paid call is counted at its provider's real rate: input, output, cache reads and writes, and even off-peak hours when a provider offers them. An attempt that fails after being billed is counted too, because a failure isn't a free call. The models run on the instance's keys, and each call is charged to the account it was made for, within its limits. The keys the administrator enters are stored encrypted, and the administration only shows them masked.
When a request has gone out and the answer gets lost on the way, LIA doesn't send it again. The provider may still be producing that answer, and billing for it: sending it again would mean paying twice. LIA only retries what has definitely failed, for example a service that's momentarily overloaded.
The limits
- There's no automatic switch to another provider when yours goes down. Changing models remains the administrator's choice.
- You can hand all the conversation tasks to models on your own machine, but a fully offline installation isn't possible. Search by meaning (memories, knowledge spaces, journal) goes through Google's embedding service, spoken answers through online voice services, and the weather, web search or your connected accounts are online by nature.
- A local model is still a local model: its quality depends on your machine and on the model you choose.
The idea fits in one sentence: you choose who does each job, and LIA takes care of talking to each one in its own language.
Read more: Tuning LIA's models without a restart, and without impossible configurations; Showing the model what matters: the services that lighten LIA's work.
