← 所有消息

One AI interface, whichever engine a node has keys for

AI/AI is a facade with auto-detection: an app calls one interface and the node decides which engine answers, based on which credentials it holds.

Every AI feature written before this named its provider in the code. That is fine until the same app runs in three places. A customer node with a Gemini key and no OpenAI key should not be running code that imports OpenAI, and a feature should not need a rewrite to move between them. So the provider became configuration, and configuration became "which keys are in data/creds.ini".

The facade covers what applications actually ask for: chat completion, streaming, embeddings, transcription and vision, with OpenAI, Claude, Gemini, DeepSeek and Grok behind it. Each engine resource is optional, marked with ? in the requirements, so an app ships only the ones it wants and a missing key means an unavailable engine rather than an error.

Above it sits AI/answer, which is smaller and used more. It takes a question and a list of allowed answers and gives back one of them, which is the shape a surprising number of product features actually need: is this lead serious, vague or spam.

Phlo Presentation was the app that forced the split. Its director and its vision captioning were hard-wired to one provider, and it is now the clearest demonstration of the alternative: the same editor offers whichever models the machine it runs on can reach. Speech synthesis stays in that app, since a voice catalogue is a product decision rather than a runtime one.

Engine 1.0.1. See the AI chapter.

我们使用必要的cookie来使该网站正常工作。在您的许可下,我们还使用分析工具来改善网站。