LLMUnity:在Unity 3D中使用大模子

[复制链接]
发表于 2026-1-9 21:16:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在本文中,我们将展示怎样在 Unity 引擎中使用 LLM(大型语言模子)🎮。我们将使用 LLMUnity 包,并检察一些示例,相识怎样仅用几行代码设置对话交互!

   NSDT工具保举: Three.js AI纹理开发包 - YOLO合成数据天生器 - GLTF/GLB在线编辑 - 3D模子格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模子插件 - 3D模子语义搜刮引擎 - AI模子在线检察 - Three.js捏造轴心开发包 - 3D模子在线减面 - STL模子在线切割 
  1、为什么在游戏中使用 LLM?

现在,险些全部 PC 游戏交互都基于多项选择对话。这是一种非常原始的交互范例,自 PC 游戏早期以来就已创建。游戏中的 LLM 可以构建更具沉醉感的体验,由于它们可以答应与 PC 游戏元素或脚色(NPC)举行智能交互。
以 Skyrim 为例,它是现在最乐成的 RPG 之一。当您第一次碰到 Lydia 时,您大概会作为搭档一起度过大部门游戏时间的 NPC,您有三种大概的对话选项。如果您想相识更多关于她的事故或讨论其他事故怎么办?


与《天涯》中的 NPC Lydia 互动。游戏截图
这就是 LLM 可以大放异彩的地方。您可以形貌 AI 的脚色及其对天下的相识(您已经将其作为游戏叙事的一部门),他们可以提拔对话的水平。


与 Lydia 互动的对话示例
2、ChatGPT 怎么样?

访问此页面的大多数人都认识 OpenAI 发布的 ChatGPT,而且见证了与 LLM 的互动是多么自然和强盛。那么为什么不直接在游戏中使用 ChatGPT 呢?


  • 大规模使用 ChatGPT 须要付出代价 💸 。每次互动的本钱都很小,但大规模使用时,对于成千上万的用户,每次互动都有成千上万次,本钱不容忽视。
  • 它会产生依靠关系 🔗。如果由于任何缘故原由 ChatGPT 制止工作或代价上涨,开发职员无法再负担得起,游戏就会瓦解。
  • 开源 LLM 的正确度与 ChatGPT 相称 🏎️。我还没有找到标准化的基准来证明这一点,但 Meta (Llama) 和 Mistral 发布的模子好像在质量上与 ChatGPT 具有相似的正确度。
  • LLM 的尺寸越来越小 🤏。最新的 Mistral 7B 在许多基准测试中击败了 Llama2 13B,并优于 Llama 34B。量化方法通过将模子巨细减小到可以在任何最新的 PC 和 GPU 上使用的水平,进一步突破了这一限定。使用 Q4_K_M 方法(模子、量化)量化的 Mistral 7B 最多须要 7GB RAM 才气运行!
3、欢迎使用 LLMUnity!

LLMUnity 是一个答应在 Unity 引擎中运行和分发 LLM 模子的软件包。


它创建在出色的 llama.cpp 库之上,该库答应使用没有外部软件依靠项的 LLM,以及以跨平台方式摆设 llama.cpp 的 llamafile。
LLMUnity 提供以下功能:


  • 💻 跨平台!支持 Windows、Linux 和 macOS
  • 🏠 无需互联网访问即可在当地运行,但也支持远程服务器
  • ⚡ 在 CPU 和 GPU 上快速推理
  • 🤗 支持重要的 LLM 模子
  • 🔧 易于设置,只需一行代码即可调用
  • 💰 可免费用于个人和贸易用途
3.1 工作原理



LLMUnity 架构
LLMUnity 在配景使用 llama.cpp 服务器。服务器吸取 POST 哀求,在 LLM 上运行推理并返回复兴。服务器由 llamafile 编译为可实行文件,可基于 cosmopolitan 库在差别的操纵体系(Windows、Linux、MacOS)上使用。
LLMUnity 实现了一个客户端,它发送 POST 哀求并将结果通报给您的 Unity 应用步伐。
3.2 怎样设置

LLMUnity 包可以使用 GitHub URL 作为自界说包安装,也可以作为 Unity 资源安装(等候资源市肆答应)。分析在此处提供 🛠️。
开发职员可以创建 LLM 或 LLMClient 对象以使用 LLM 功能。LLMClient 类仅处理处罚客户端功能,而 LLM 类继续 LLMClient 类并别的处理处罚服务器功能。
然后,开发职员可以指定 LLMClient / LLM 属性:


  • 提示。这指定了 AI 的脚色。
  • 玩家/AI 名称(可选)。可以为脚色界说玩家和 AI 名称。
  • 流媒体功能(可选)。流媒体功能答应 Unity 应用步伐及时吸取模子天生的输出。如果禁用,Unity 应用步伐将在模子完全天生时收到模子的复兴。
  • 其他模子选项(可选)。另有更多模子选项可以由专家用户指定,直接由 llama.cpp 服务器使用。
以及仅 LLM 的属性:


  • 模子。这指定要使用哪个 LLM。TheBloke 量化的 Mistral 7B Instruct v0.2 模子可以直接在 Unity Inspector 中下载为默认模子。否则,可以加载 llama.cpp 支持的任何 LLM。llama.cpp 使用 gguf 格式并为 HuggingFace 模子提供转换脚本。如果您想克制安装 llama.cpp 并自行举行转换,您可以使用 TheBloke 💣 已经转换的模子。


llama.cpp 支持的模子


  • 运行资源(可选)。您可以指定用户应用步伐可以使用的 CPU 线程数和/或 GPU 将运行的模子层数。如果不支持用户的 GPU,则将改用 CPU。
除非您想切身动手,否则只需按“下载模子”并界说提示 😌!


可以在 LLM 脚本中参数化的差别选项
4、怎样使用LLMUnity

现在让我们进入风趣的部门🎢!
LLMUnity 的编写方式使得它可以用最少的代码使用。您所要做的就是构造一个 LLM 对象,然后使用以下方式与其交互:
  1. _ = llm.Chat(message, HandleReply, ReplyCompleted);
复制代码
此中:


  • message:包罗用户输入的字符串对象
  • HandleReply:以字符串范例作为模子复兴输入的方法。在此函数中,您可以指定如那里理复兴。如果启用了流式传输功能(默认活动),则此函数将在模子天生时吸取及时复兴,否则将一次性吸取整个复兴。
  • ReplyCompleted(可选):没有参数的方法。当模子完成复兴天生时,将调用此函数。
4.1 根本功能

下面体现了一个最小示例🚂。在这里,我们发送一条消息“Hello bot!”并在控制台中体现模子的复兴:
  1. using UnityEngine;
  2. using LLMUnity;
  3. public class MyGame : MonoBehaviour{
  4.   public LLM llm;
  5.   
  6.   void HandleReply(string reply){
  7.     Debug.Log(reply);
  8.   }
  9.   
  10.   void Start(){
  11.     _ = llm.Chat("Hello bot!", HandleReply);
  12.   }
  13. }
复制代码
当 HandleReply 函数完成(以流式或非流式方式)时,将调用 LLM 的 Chat 函数并异步吸取复兴。
要在 Unity 中创建应用步伐,您须要创建一个场景,此中包罗:


  • LLM 脚本的 GameObject。LLM 对象的属性在 Unity Inspector 中公开,可以按照上一节所述举行设置。
  • MyGame 脚本的 GameObject。在这里,您将在 Unity Inspector 中的 llm 属性中链接上面创建的 LLM GameObject。
就如许 ✨!
4.2 简朴交互

现在让我们看一个演示根本交互的示例:


简朴交互示例
下面是一个场景:


  • LLM 脚本的 GameObject(与之前一样)
  • SimpleInteraction 脚本的 GameObject
  • 答应用户输入文本的 InputField(绿色)
  • 从模子获取复兴的 Text 字段(蓝色)
SimpleInteraction 脚本可以按如下方式实现:
  1. using UnityEngine;
  2. using LLMUnity;
  3. using UnityEngine.UI;
  4. public class SimpleInteraction : MonoBehaviour
  5. {
  6.     public LLM llm;
  7.     public InputField playerText;
  8.     public Text AIText;
  9.     void Start()
  10.     {
  11.         playerText.onSubmit.AddListener(onInputFieldSubmit);
  12.         playerText.Select();
  13.     }
  14.     void onInputFieldSubmit(string message)
  15.     {
  16.         playerText.interactable = false;
  17.         AIText.text = "...";
  18.         _ = llm.Chat(message, SetAIText, AIReplyComplete);
  19.     }
  20.    
  21.     public void SetAIText(string text)
  22.     {
  23.        AIText.text = text;
  24.     }
  25.     public void AIReplyComplete()
  26.     {
  27.         playerText.interactable = true;
  28.         playerText.Select();
  29.         playerText.text = "";
  30.     }
  31. }
复制代码
该脚本界说了以下函数:


  • Start:场景开始时选择 playerText 输入字段,以便用户可以输入文本。playerText 上附加了一个侦听器,在提交文本时调用 onInputFieldSubmit 函数。
  • onInputFieldSubmit:当用户提交输入时,playerText 被禁用,直到模子复兴。模子输出字段 AIText 被清空,然后调用 LLM 谈天函数。
  • SetAIText:当模子产生一些复兴并将 AIText 文本设置为复兴内容时调用此函数。
  • AIReplyComplete:当模子完成复兴时调用此函数。playerText 再次被启用并清空,以便玩家可以输入下一个输入。
就这么简朴,我们可以拥有成熟的 LLM 交互(我知道是成熟的,并不美丽 🙃)。您可以在 SimpleInteraction 示例中找到此示例。
4.3 多个 AI 功能

到现在为止,我们已经看到了与单个 AI 的交互。实际上,游戏中会有多个 NPC 🤖。办理方案是创建一个如上所述的 LLM 对象来处理处罚服务器,但使用其他 LLMClient 对象来使用差别的提示为 AI 界说其他活动。
可以在 ServerClient 示例中找到一个展示此功能的示例。这是上述代码的扩展,它对第一个 AI 使用 LLM 对象,对第二个 AI 使用具有差别提示的 LLMClient 对象(使用与第一个 AI 雷同的服务器)。


多种 AI 功能
4.4 谈天呆板人

创建更像游戏的东西的末了一步是增强 UI 方面,就像您渴望它们在游戏中一样🏰。我不会在这里具体先容,由于它超出了 LLM 集成范围。如果您对更复杂的 UI 感爱好,您可以检察 ChatBot 示例,它可以创建雷同于消息应用步伐的更令人愉悦的交互。


消息应用步伐风格的交互
5、竣事语

就这些!在本指南中,我们相识了怎样使用 LLMUnity 包将 LLM 集成到 Unity 中,并提供了几个实际示例。渴望您以为它有用!如果您有任何题目/意见/发起,请随时向我发送,以改进本文或 LLMUnity 包🙏。

原文链接:在Unity中使用大模子 - BimAnt
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表