跳到主要内容

如何使用该插件

本指南涵盖完整的运行时 API:创建 LLM 实例、加载模型、发送消息、在运行时下载模型、管理状态以及实用工具函数。

创建 LLM 实例

首先创建一个 Runtime Local LLM 对象。保持对它的引用(例如,在 Blueprints 中作为变量,或在 C++ 中作为 UPROPERTY),以防止过早的垃圾回收。

创建 Runtime Local LLM

加载模型

发送消息前必须先加载模型。插件根据你的工作流程提供了几种加载方法。

按名称加载

如果你通过编辑器设置面板管理模型,请使用 Load Model (By Name)

在 UE 5.4 及更高版本中,Load Model (By Name) 会显示一个下拉菜单,列出磁盘上的所有模型——只需选择你要加载的模型即可。

Load Model By Name UE 5.4+

从文件路径加载

直接从绝对文件路径加载一个 .gguf 文件的模型:

从文件加载模型

从 URL 加载(下载并加载)

从 URL 下载模型(如果本地磁盘上不存在),然后自动加载。如果文件已在本地存在,则跳过下载。

最简单的变体仅接受 URL,元数据从文件名派生:

Load Model From URL Simple

你也可以使用带有完整模型元数据的 Load Model From URL,以获得更丰富的模型信息:

Load Model From URL

异步加载 (Blueprint)

为了通过输出引脚处理加载完成和错误,而不是手动绑定委托,有两个异步节点可用。

Load Model By Name (Async) 镜像了 Load Model (By Name) - 在 UE 5.4+ 中,它会显示磁盘上所有模型的下拉列表:

Load Model By Name Async UE 5.4+

Load Model From File (Async) 则接受一个绝对文件路径:

Load Model From File Async

绑定事件

绑定到 LLM 实例的委托以接收回调。所有回调都在游戏线程上触发。

Bind Events

可用委托:

  • On Token Generated:每个输出令牌触发
  • On Generation Complete:当完整响应准备就绪时触发,附带持续时间、令牌数和每秒令牌数
  • On Prompt Processed:在处理输入提示后、开始生成之前触发
  • On Error:如果在任何操作期间发生错误则触发
  • On Model Loaded:当模型完成加载时触发
  • On Model Unloaded:当模型被卸载时触发
  • On Download Progress:在模型下载过程中定期触发(进度分数、接收字节、总字节数)
  • On Model Downloaded:当仅下载操作完成时触发

发送消息

加载模型后,发送用户消息以生成响应:

Send Message

要覆盖特定消息的系统提示,请使用 Send Message With System Prompt

Send Message With System Prompt

生成的令牌(token)会通过 OnTokenGenerated 实时流式传输。当生成完成时,OnGenerationComplete 事件触发,并附带完整的响应、持续时间、令牌数量和每秒令牌数。

Async Send Message (Blueprint)

Send LLM Message (Async) 节点提供了专用的输出引脚,用于令牌、完成和错误:

Async Send Message

运行时下载模型

除了上述的下载并加载流程外,您还可以将模型下载到磁盘而不加载它。这对于在加载界面或设置菜单中预缓存模型很有用。

Download Model

还提供一个仅使用 URL 的变体:

Download Model From URL

Download LLM Model (Async)Download LLM Model From URL (Async) 节点提供了用于进度、完成和错误的输出引脚:

Async Download Model

OnDownloadProgress 委托报告下载进度。OnModelDownloaded 在文件保存到磁盘时触发。

要取消正在进行的下载:

取消下载

插件会自动防止重复下载 - 如果同一模型已有下载任务正在进行,后续调用将被忽略。

停止生成

要中断正在进行的生成:

停止生成

重置对话上下文

清除对话历史以开始新对话:

重置上下文

卸载模型

当不再需要模型时,释放资源:

卸载模型

查询状态

检查LLM实例的当前状态:

查询状态

  • Is Model Loaded:如果模型已准备好进行推理,则为True
  • Is Generating:如果生成正在进行中,则为True
  • Is Busy:如果有任何操作(加载、生成、下载)正在进行,则为True
  • Is Downloading:如果模型下载正在进行中,则为True
  • Get Loaded Model Metadata:返回当前模型的元数据
  • Get Applied Inference Params:返回加载时应用的参数

模型库函数

提供了一组静态实用函数,用于在磁盘上管理模型文件。这些函数在构建模型选择UI或在运行时检查模型可用性时非常有用。

获取已下载模型名称/元数据

获取已下载模型名称

获取所有已下载模型元数据

检查模型是否在磁盘上

检查模型是否在磁盘上

获取模型文件路径

获取模型文件路径

删除模型文件

删除模型文件

获取预定义模型和可用模型

获取预定义模型

获取所有可用模型

从 URL 构建元数据

从原始 URL 构建模型元数据(字段从文件名中派生):

Make Metadata From URL

实用函数

提供了一组用于格式化和错误显示的辅助函数。

字节转换为可读字符串

将字节数转换为人类可读的字符串(例如“4.07 GB”)。常用于在 UI 中显示模型大小。

字节转换为可读字符串

格式化下载进度

将下载进度字符串格式化为类似“1.23 GB / 4.07 GB (30.2%)”的形式。如果总大小未知,则仅返回已接收量。

格式化下载进度

获取错误描述 / 错误代码字符串

Get LLM Error Description 返回给定错误代码的人类可读文本描述。Get LLM Error Code String 返回枚举值名称的字符串形式(可用于日志记录)。

获取错误描述

错误代码参考

代码描述
Unknown0未指定的错误
ModelLoadFailed10GGUF 文件加载失败(文件损坏、格式不兼容等)
ContextCreateFailed11推理上下文创建失败
ModelNotLoaded20试图在没有加载模型的情况下进行推理
ChatTemplateFailed21模型的对话模板应用失败
TokenizationFailed22输入文本无法分词
ContextOverflow23提示加上下文超出配置的上下文大小
PromptDecodeFailed24提示词元解码失败
ContextTooFullToGenerate25上下文空间不足,无法生成输出
GenerationDecodeFailed30生成过程中某个词元解码失败
GenerationTruncated31因为达到最大词元限制,生成停止
LLMInstanceNull40LLM 实例为空或无效
ModelNotFoundOnDisk41模型文件在预期路径不存在
ModelURLEmpty42请求下载时 URL 为空
ModelDownloadCancelled43下载已取消
ModelDownloadEmptyData44下载完成但响应主体为空
ModelDownloadSaveFailed45下载完成但文件无法保存到磁盘