跳轉至

藍圖篇 - CllamaServer (llama.cpp 伺服器)

blueprint

概覽

CllamaServer 是基於 llama.cpp 的 Server 模式所實現的,能夠在本地啟動一個與 OpenAI API 相容的伺服器,並支援多項功能:

  • 本地推理服務: 在本地啟動 AI 推理伺服器,無需依賴外部 API
  • 兼容 OpenAI API:採用與 OpenAI 相容的 API 格式,便於遷移與整合
  • 多會話支援: 支援多個並行請求
  • 工具呼叫:支援函式呼叫功能
  • 語音轉文字: 支援 Speech-to-Text 功能
  • 可視化管理:編輯器內建 Server 管理介面

與 Cllama 的區別: * Cllama:直接在進程內加載模型進行推理,單次只能處理一個請求 * CllamaServer:啟動獨立的 HTTP 伺服器,能夠處理多個並行請求,API 相容於 OpenAI 格式

準備工作

由於是本地運行,需要先準備好離線模型文件,例如從HuggingFace下載:Qwen1.5-1.8B-Chat-Q8_0.gguf

將模型放置於某個資料夾內,例如放在遊戲專案的目錄 Content/LLAMA 下。

創建 CllamaServer

使用藍圖創建 Server

在藍圖中點擊右鍵創建節點 Create Cllama Server In World

guide bludprint

設定 Server 參數

建立 Cllama Server Param 節點,並設定關鍵參數:

  • 模組: 模型檔案路徑(必填)
  • 連接埠: 伺服器埠(0 表示自動分配)
  • 主機: 監聽地址,預設為 127.0.0.1
  • NGpuLayers: GPU 層數(-1 表示全部使用 GPU)

guide bludprint

綁定回調事件

綁定 Server 的回調事件:

  • On Started:當伺服器啟動成功時觸發
  • On Stopped: 伺服器停止時觸發
  • 失敗時(On Failed):伺服器啟動失敗時觸發

guide bludprint

完整的創建藍圖

完整的 Server 建立藍圖如下:

guide bludprint

執行藍圖後,Server啟動成功會觸發On Started事件。

伺服器參數詳解

FAIChatPlus_CllamaServerParam 結構體包含以下參數:

常用參數

參數 類型 預設值 說明
模型 FString - 模型檔案路徑(必填)
埠號 int32 0 監聽埠,0 表示自動分配
主機 FString 127.0.0.1 監聽地址
NGpuLayers int32 -1 GPU層數,-1表示全部
bUseJinja bool false 使用 Jinja 模板
MMProj FString - 多模態投影檔案路徑
溫度 float 0.8 採樣溫度

推理參數

參數 類型 預設值 說明
CtxSize int32 4096 上下文大小
NPredict int32 -1 預測 Token 數,-1 表示無限
執行緒數 int32 -1 CPU 執行緒數量,-1 表示自動設定
BatchSize int32 2048 批次處理大小

採樣參數

參數 類型 預設值 說明
TopK int32 40 Top-K 取樣
TopP 浮點數 0.9 Top-P 取樣
MinP 浮點數 0.1 最小概率採樣
RepeatPenalty float 1.0 重複懲罰

伺服器參數

參數 類型 預設值 說明
ApiKey FString - API 金鑰(可選)
Timeout int32 600 逾時時間(秒)
Parallel int32 1 並行序列數
bNoWebUI 布林值 停用 Web 使用者介面
bVerbose 布林值 詳細日誌

使用 CllamaServer 進行聊天

創建聊天請求

當 Server 成功啟動後,便可使用 Send CllamaServer Chat Request 節點發送聊天請求。

guide bludprint

設定聊天選項

創建 CllamaServer Chat Request Options 節點,設置 BaseUrl 為 Server 地址。

可以通過 Get Server Info By ID 節點獲取 Server 資訊。

guide bludprint

建立訊息

創建 Messages 陣列,新增 System Message 和 User Message。

guide bludprint

綁定回調處理回應

綁定 On MessageOn Message Finished 事件來接收模型回應。

guide bludprint

完整的聊天藍圖

完整的聊天藍圖如下:

guide bludprint

執行結果

執行藍圖後,螢幕上將顯示模型返回的訊息。

伺服器管理

取得 Server 資訊

使用 Get Server Info 節點取得 Server 的詳細資訊。

guide bludprint

伺服器資訊 包含以下資訊: * ServerID: 伺服器唯一 ID * 主機: 監聽位址 * 連接埠:監聽埠號 * 地址: 完整地址(host:port) * HttpAddress: HTTP 位址(http://host:port) * bIsRunning: 是否正在執行 * 參數:伺服器參數

停止伺服器

使用 Stop Server By ID 節點停止當前 Server。

guide bludprint

靜態管理函數

AIChatPlus 提供了一系列靜態函數用於管理所有 Server:

函數 說明
Is Server Valid (Static) 檢查 Server 是否有效
Is Server Running (Static) 檢查 Server 是否運行中
Stop Server By ID 透過 ID 停止指定 Server
Stop All Servers 停止所有伺服器
Get Server Info By ID 通過 ID 獲取伺服器資訊
Get All Server IDs 獲取所有伺服器 ID
Get Server By ID 通過 ID 取得 Server 實例

guide bludprint

多模態支援

CllamaServer 支援多模態模型(如 Moondream、Qwen2-VL 等)。

配置多模態參數

在 Server 參數中設定 MMProj(多模態投影檔案路徑):

guide bludprint

發送圖片訊息

在 Messages 中加入圖片:

guide bludprint

Tool Calling

CllamaServer 支援 Tool Calling(函數呼叫)功能,其使用方式與 OpenAI 相似。

詳細用法請參考 Tool Call文件。

使用 CllamaServer 進行 Tool Call 時,需要: 1. 在 Server 參數中設定 bUseJinja = true 2. 在 Chat Options 的 Tools 欄位中定義工具

guide bludprint

編輯器 Server 管理

AIChatPlus 在編輯器工具中提供了可視化的 CllamaServer 管理介面,方便創建、監控和管理多個 Server。

開啟編輯器工具:工具 -> AIChatPlus -> AIChat,打開 Cllama Server Manager 標籤頁。

guide bludprint

在編輯器中可以: * 建立新的伺服器 * 檢視運行中的伺服器狀態 * 停止指定的伺服器 * 配置伺服器參數 * Server 配置會自動儲存

guide bludprint

與其他API的關係

由於 CllamaServer 能兼容 OpenAI API 格式,您同樣可使用 OpenAI 的 Chat Request 節點來與 CllamaServer 進行通訊,只需將 BaseUrl 設定為 CllamaServer 的地址即可。

Original: https://wiki.disenone.site/tc

This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.

這篇文章是由ChatGPT翻譯的,請在反饋中指出任何遺漏之處。