问题
像 LIA 这样的助手,做的不只是一件事。对同一个问题,它要理解你在说什么,准备一个计划,调用你的工具,然后撰写回答。在后台,它维护你的日记;夜里,它把你的记忆清理一遍。这些任务的需求各不相同。给请求分类要快、要便宜,准备计划需要严谨,写回答需要文笔。
把一切都交给一家提供商的一个模型,要么为简单的任务付高价,要么在困难的任务上将就一个太弱的模型。这也意味着依赖一家公司:它的价格、它的故障、它的条款。
我想要的
我希望 LIA 的每项任务都有自己的岗位,配有自己的提供商和模型。请求分类可以跑在一个快速的小模型上,规划器跑在一个更扎实的模型上,回答则交给你最喜欢其语气的那个模型。我还希望更换它们不需要改代码。
LIA 能与 OpenAI、Anthropic、Google Gemini、DeepSeek、阿里巴巴的 Qwen 和 Perplexity 对话,也能与你自己用 Ollama 运行的模型对话。Ollama 是一个在你自己的机器上运行开放模型的服务器。
具体怎么进行
每家提供商都有自己的习惯。一家拒绝温度设置,另一家把模型的思考计入回答预算,第三家用自己的方式缓存消息的开头。LIA 会逐家翻译这些差异:
- 一把统一的思考刻度。让模型多想或少想,对所有模型都用同一把刻度来设置,从「无」到「最大」。每个模型实际接受什么,由它所属的家族推断出来,管理界面只提供它的 API 会接受的级别。
- 过滤后的设置。模型拒绝的参数不会被发送。对所选模型来说过大的回答预算,会被降到它能产出的范围。
- 为缓存排好的指令。每一轮都相同的指令开头放在最前面。能够缓存它的提供商会直接重读,花费更少,响应更快。
- 本地模型一视同仁。LIA 通过 Ollama 的原生接口与它通信。她会向你的服务器询问每个模型能做什么(工具、图像、思考、上下文大小):没有一项是根据名字猜的。
举个具体的例子:一条提醒通知只有两句话。在一个默认会思考的模型上,思考可能用光为它预留的那点预算,回答就是空的。所以 LIA 在模型允许关闭思考的地方,会不带思考地请求这些短消息。如果回答仍然是空的或被截断,LIA 会发送预先准备好的备用句子,这次调用的费用照样计入。
花费多少,由谁支付
每一次付费调用都按其提供商的实际价格计算:输入、输出、缓存的读取和写入,提供商有低谷时段时连低谷时段也算在内。一次在计费之后失败的尝试也会计入,因为失败并不是免费的调用。模型运行在实例的密钥上,每次调用都记在它所服务的那个账户名下,并受该账户的限额约束。管理员输入的密钥以加密方式存储,管理界面只以遮盖的形式显示它们。
当一个请求已经发出、回答却在途中丢失时,LIA 不会重新发起。提供商可能仍在生成这个回答,并为它计费:重新发起就等于付两次钱。LIA 只重试那些确定失败了的请求,比如一个暂时饱和的服务。
局限
- 当你的提供商出故障时,不会自动切换到另一家。更换模型仍然是管理员的选择。
- 你可以把所有对话任务都交给你自己机器上的模型,但完全离线的安装是不可能的。语义搜索(记忆、知识空间、日记)要经过 Google 的嵌入服务,语音回答要经过在线语音服务,而天气、网页搜索或你连接的账户,本质上就是在线的。
- 本地模型终究是本地模型:它的质量取决于你的机器和你选择的模型。
这个想法可以用一句话概括:每项工作由谁来做,你来选;LIA 负责用各自的语言和每一方对话。
