GenAI 伺服器
當瀏覽器、使用者介面、服務或遠端使用者端需要透過 HTTP 呼叫一個或多個 GenAI 模型時,請使用 GenAIServer。該伺服器負責模型註冊、請求路由、串流回應和取消。對於與模型在同一個程序中執行的應用程式邏輯,請使用 直接使用 GenAI API。
建立並啟動伺服器
伺服器預設會繫結到 0.0.0.0:9998。在啟動伺服器之前,請使用穩定的服務名稱來註冊每個已部署的 LLiMa 模型目錄:
#include <neat/genai.h>
int main() {
simaai::neat::genai::GenAIServer server;
server.add_model(
"/media/nvme/llima/models/Qwen3-4B-Instruct-2507-GPTQ-a16w4",
"llm");
server.add_model(
"/media/nvme/llima/models/Qwen3-VL-4B-Instruct-GPTQ-a16w4",
"vlm");
server.serve();
}
在 C++ 中,使用 serve() 來建立一個同步的前端伺服器。當您的 C++ 或 Python 應用程式管理伺服器的生命週期時,請使用 start() 和 stop()。
當預設主機或連接埠不適用時,請設定 GenAIServerOptions。
呼叫 stop() 也能移除所有已註冊的模型;在重新啟動相同的伺服器物件之前,請再次新增這些模型。
GenAIServer 不提供驗證或 TLS 終止功能,並且允許來自任何來源的 CORS 請求。僅將其繫結到受信任的介面,或將其置於提供所需存取控制和加密的網路層之後。
探索已提供的模型
在發送生成請求之前,列出已註冊的模型名稱:
curl http://<modalix-ip>:9998/v1/models
回應採用 OpenAI 模型列表格式:
{
"object": "list",
"data": [
{"id": "llm", "object": "model", "owned_by": "simaai"},
{"id": "vlm", "object": "model", "owned_by": "simaai"}
]
}
每一代的模型和音訊請求都必須在其 model 欄位中使用以下其中一個已提供的模型名稱。
端點
| 方法 | 路由 | 目的 |
|---|---|---|
GET | /v1/models | 列出已註冊的模型名稱。 |
POST | /v1/chat/completions | 與 OpenAI 相容的聊天功能,包括文字、圖片、工具和串流。 |
POST | /v1/completions | 與 OpenAI 相容的提示詞完成功能。 |
POST | /v1/audio/transcriptions | 轉錄多部分音訊輸入。 |
POST | /v1/audio/translations | 將多部分語音翻譯成英文。 |
POST | /api/chat | 與 Ollama 相容的聊天功能;預設情況下串流 NDJSON 格式。 |
POST | /api/generate | 與 Ollama 相容的提示詞生成功能;預設情況下串流 NDJSON 格式。 |
POST | /stop | 取消一個模型或所有模型的活動串流。 |
POST | /set_lora |