跳转至

蓝图篇 - CllamaServer (llama.cpp server)

blueprint

概述

CllamaServer 是基于 llama.cpp 的 Server 模式实现的,可以在本地启动一个兼容 OpenAI API 的服务器,支持多种功能:

  • 本地推理服务: 在本地启动 AI 推理服务器,无需依赖外部 API
  • 兼容 OpenAI API: 使用 OpenAI 兼容的 API 格式,方便迁移和集成
  • 多会话支持: 支持多个并发请求
  • Tool Calling: 支持函数调用功能
  • 语音转文字: 支持 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 节点,并配置关键参数:

  • Model: 模型文件路径(必填)
  • Port: 服务器端口(0 表示自动分配)
  • Host: 监听地址,默认 127.0.0.1
  • NGpuLayers: GPU 层数(-1 表示全部使用 GPU)

guide bludprint

绑定回调事件

绑定 Server 的回调事件:

  • On Started: Server 启动成功时触发
  • On Stopped: Server 停止时触发
  • On Failed: Server 启动失败时触发

guide bludprint

完整的创建蓝图

完整的 Server 创建蓝图如下:

guide bludprint

运行蓝图后,Server 启动成功会触发 On Started 事件。

Server 参数详解

FAIChatPlus_CllamaServerParam 结构体包含以下参数:

常用参数

参数 类型 默认值 说明
Model FString - 模型文件路径(必填)
Port int32 0 监听端口,0 表示自动分配
Host FString 127.0.0.1 监听地址
NGpuLayers int32 -1 GPU 层数,-1 表示全部
bUseJinja bool false 使用 Jinja 模板
MMProj FString - 多模态投影文件路径
Temperature float 0.8 采样温度

推理参数

参数 类型 默认值 说明
CtxSize int32 4096 上下文大小
NPredict int32 -1 预测 Token 数,-1 表示无限
Threads int32 -1 CPU 线程数,-1 表示自动
BatchSize int32 2048 批处理大小

采样参数

参数 类型 默认值 说明
TopK int32 40 Top-K 采样
TopP float 0.9 Top-P 采样
MinP float 0.1 Min-P 采样
RepeatPenalty float 1.0 重复惩罚

服务器参数

参数 类型 默认值 说明
ApiKey FString - API 密钥(可选)
Timeout int32 600 超时时间(秒)
Parallel int32 1 并行序列数
bNoWebUI bool false 禁用 Web UI
bVerbose bool false 详细日志

使用 CllamaServer 进行聊天

创建 Chat Request

Server 启动成功后,可以使用 Send CllamaServer Chat Request 节点发送聊天请求。

guide bludprint

配置 Chat Options

创建 CllamaServer Chat Request Options 节点,设置 BaseUrl 为 Server 地址。

可以通过 Get Server Info By ID 节点获取 Server 信息。

guide bludprint

创建 Messages

创建 Messages 数组,添加 System Message 和 User Message。

guide bludprint

绑定回调处理响应

绑定 On MessageOn Message Finished 事件来接收模型响应。

guide bludprint

完整的聊天蓝图

完整的聊天蓝图如下:

guide bludprint

运行结果

运行蓝图,可以看到模型返回的消息显示在屏幕上。

Server 管理

获取 Server 信息

使用 Get Server Info 节点获取 Server 的详细信息。

guide bludprint

Server Info 包含以下信息: * ServerID: 服务器唯一 ID * Host: 监听地址 * Port: 监听端口 * Address: 完整地址(host:port) * HttpAddress: HTTP 地址(http://host:port) * bIsRunning: 是否正在运行 * Param: 服务器参数

停止 Server

使用 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 停止所有 Server
Get Server Info By ID 通过 ID 获取 Server 信息
Get All Server IDs 获取所有 Server 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。

打开编辑器工具:Tools -> AIChatPlus -> AIChat,打开 Cllama Server Manager 标签页。

guide bludprint

在编辑器中可以: * 创建新的 Server * 查看运行中的 Server 状态 * 停止指定的 Server * 配置 Server 参数 * Server 配置会自动保存

guide bludprint

与其他 API 的关系

由于 CllamaServer 兼容 OpenAI API 格式,你也可以使用 OpenAI 的 Chat Request 节点来与 CllamaServer 通信,只需将 BaseUrl 设置为 CllamaServer 的地址即可。

原文地址:https://wiki.disenone.site

本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。