成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于LLM的Unity游戲開發利器——LLMUnity

譯文 精選
人工智能
本文將向您介紹如何將Unity引擎中的大型語言模型與LLMUnity集成到一起以進行更高效的Unity游戲開發。

在本文中,我們將向您展示如何在Unity引擎中使用LLM(大型語言模型)。我們將使用LLMUnity包(https://github.com/undreamai/LLMUnity)展示如何僅用幾行代碼即可搭建一個交互對話的實例!

免責聲明:我本人是LLMUnity開源包的作者。如果您有任何意見或者建議,請通過打開GitHub網址https://github.com/undreamai/LLMUnity/issues多多留言!

為什么在游戲中使用LLM?

目前,幾乎所有的電腦游戲互動都是基于多選擇對話形式。這是自早期PC游戲時代以來建立的一種非常原始的互動類型。游戲中的LLM可以構建更令人身臨其境的體驗,因為它們可以允許與PC游戲元素或角色(NPC)進行智能交互。

以《天際線》這款游戲為例,它是目前最成功的RPG游戲之一。當你第一次遇到莉迪亞——一個你可能會在游戲的大部分時間里作為同伴一起度過的NPC時,你將遇到三種可能的對話選項。那么,如果你想了解更多的關于她的信息或想討論其他相關事情,該怎么辦呢?

與Skyrim(《天際線》)游戲中的NPC Lydia互動(這是從游戲中獲得的屏幕截圖)

這正是LLM的優越點所在。由你來指定人工智能的角色和它們的知識世界(你已經將其作為游戲敘事的一部分),這些內容確實有助于提升對話的質量。

基于對話形式的《天際線》)游戲中的與Lydia互動的示例情形

ChatGPT怎么樣?

大多數閱讀本文的讀者可能都熟悉OpenAI公司發布的ChatGPT,并見證了與LLM的互動是多么自然和強大。那么,為什么不在游戲中直接使用ChatGPT呢?這是因為:

  • 需要以大規模成本使用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就能運行!

歡迎LLMUnity!

LLMUnity是一個允許在Unity引擎中運行和分發LLM模型的免費開源包。

LLMUnity建立在功能強大的llama.cpp庫(https://github.com/ggerganov/llama.cpp)基礎之上——該庫允許在沒有外部軟件依賴的情況下使用LLM;還依賴llamafile——以跨平臺的方式部署llama.cpp。

歸納起來看,LLMUnity提供以下功能:

  • 跨平臺!支持Windows、Linux和macOS
  • 在本地運行,無需訪問互聯網,但也支持遠程服務器
  • 基于CPU和GPU的快速推理
  • 支持主流的LLM模型
  • 易于設置,只需一行代碼即可調用
  • 免費用于個人和商業目的

LLMUnity的工作原理

LLMUnity架構

LLMUnity在后臺使用llama.cpp服務器。服務器接收POST請求,在LLM上運行推理并返回回復。該服務器由llamafile編譯成可執行文件,可在基于國際化庫的不同操作系統(Windows、Linux、MacOS)中使用。

LLMUnity實現了一個客戶端,該客戶端發送POST請求并將結果傳遞給Unity應用程序。

使用前的設置準備

LLMUnity包可以使用GitHub URL的方式以自定義包形式進行安裝,也可以作為Unity資源文件的形式進行安裝(在資源商店中將顯示等待審批狀態)。鏈接https://github.com/undreamai/LLMUnity?tab=readme-ov-file#setup提供了詳細的安裝說明

開發人員可以創建LLM或LLMClient對象來使用LLM功能。注意,LLMClient類僅能夠處理客戶端功能,而LLM類在繼承自LLMClient類的基礎上還能夠處理服務器端功能。

接下來,開發人員可以指定LLMClient/LLM的如下屬性:

  • prompt(提示詞):用于指定AI的角色。
  • player / AI name(一個可選用屬性):可以為角色定義玩家和AI名稱。
  • streaming functionality(流功能,也是一個可選用屬性)。流功能允許Unity應用程序實時接收模型產生的輸出。如果禁用,Unity應用程序將會在回復內容完全生成時收到模型的回復。
  • 其他模型選項(可選)。通過llama.cpp服務器直接使用的專家級用戶可以指定更多的模型選項。

下面列舉的僅是LLM類提供的屬性:

  • model模型):個屬性指定了要使用的LLM。TheBloke量化的Mistral 7B Instruction v0.2模型(https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.2)可以作為默認模型直接在Unity Inspector中下載使用當然可以加載llama.cpp支持的任何LLM。注意,llama.cpp使用gguf格式,并為HuggingFace模型提供轉換腳本(https://github.com/ggerganov/llama.cpp/tree/master?tab=readme-ov-file#prepare-data--run)。如果你想避免安裝llama.cpp并自己進行轉換,那么你可以使用TheBloke已經轉換現成的模型

llama.cpp支持的所有模型列表

l running resources(運行資源,可選用屬性)。您可以指定用戶應用程序可以使用的CPU線程數和/或GPU將運行的模型層數。如果不支持使用用戶的GPU功能;則將默認使用CPU。

除非你使用一切默認設置;否則,你可以簡單地按下按鈕“Download model(下載模型)”并定義提示詞!

可以在LLM腳本中參數化的不同選項

如何使用LLMUnity

現在,讓我們進入有趣的部分!

LLMUnity的開發使得它可以與最少的代碼一起使用。您所要做的就是構造一個LLM對象,然后與它交互:

_ = llm.Chat(message, HandleReply, ReplyCompleted);

其中的各個參數含義如下:

  • message:包含用戶輸入的字符串對象
  • HandleReply:以字符串類型的模型回復作為輸入的方法。在這個函數中,您可以指定如何處理回復。如果啟用了流媒體功能(默認行為),該函數將在模型生成時接收實時回復;否則,將接收一次完整回復。
  • ReplyCompleted(可選參數):不帶參數的方法。當模型完成生成回復內容時,即會調用此函數。

基本功能

下面顯示了一個最小的示例。在這里,我們僅發送一條消息“Hello bot!”,并在控制臺中顯示模型的回復:

using UnityEngine;
using LLMUnity;

public class MyGame : MonoBehaviour{
  public LLM llm;

  void HandleReply(string reply){
    Debug.Log(reply);
  }

  void Start(){
    _ = llm.Chat("Hello bot!", HandleReply);
  }
}

上述代碼中調用了LLM的Chat函數,在HandleReply函數中完成回復(以流式或非流式方式)后以異步方式接收回復。

要在Unity中創建應用程序,您需要使用以下內容創建一個場景:

  • 一個對應于LLM腳本的游戲對象GameObject。LLM對象的屬性顯示在Unity Inspector中,可以按照上一節中的描述進行設置。
  • 還有一個對應于MyGame腳本的GameObject。在此處實現中,您需要鏈接上面在Unity Inspector的LLM屬性中創建的LLM GameObject。

而且…僅此而已!

實現一個簡單的交互界面

現在,我們來看一個基本交互的演示示例:

簡單的交互示例

本實例中,我們創建了這樣的一個場景:

  • 一個對應于LLM腳本的游戲對象GameObject(如前所述)
  • 一個對應于SimpleInteraction腳本的游戲對象GameObject
  • 一個允許用戶輸入文本的InputField(綠色)
  • 一個從模型獲取答復的文本字段(藍色)

SimpleInteraction腳本的完整內容如下:

using UnityEngine;
using LLMUnity;
using UnityEngine.UI;

public class SimpleInteraction : MonoBehaviour
{
    public LLM llm;
    public InputField playerText;
    public Text AIText;

    void Start()
    {
        playerText.onSubmit.AddListener(onInputFieldSubmit);
        playerText.Select();
    }

    void onInputFieldSubmit(string message)
    {
        playerText.interactable = false;
        AIText.text = "...";
        _ = llm.Chat(message, SetAIText, AIReplyComplete);
    }

    public void SetAIText(string text)
    {
       AIText.text = text;
    }

    public void AIReplyComplete()
    {
        playerText.interactable = true;
        playerText.Select();
        playerText.text = "";
    }
}

該腳本定義了以下函數:

  • Start:在場景開始時選擇playerText輸入字段,以便用戶可以輸入文本。一個監聽器被附加到playerText,當文本被提交時,它調用onInputFieldSubmit函數。
  • onInputFieldSubmit:當用戶提交輸入時,playerText將被禁用,直到模型回復。清空模型輸出字段AIText,然后調用LLM聊天函數。
  • SetAIText:當模型生成一些回復并將AIText文本設置為回復內容時,會調用此函數。
  • AIReplyComplete:當模型完成回復時,會調用此函數。playerText輸入字段再次啟用并清空,以便玩家可以輸入下一個輸入。

就這么簡單,我們可以進行成熟的LLM交互(功能方面已經成熟,只是那么漂亮您可以在SimpleInteraction示例(https://github.com/undreamai/LLMUnity/tree/main/Samples~/SimpleInteraction)中找到此示例的完整代碼

多種AI功能

到目前為止,我們已經看到了與單個人工智能的交互。在實際開發中,我們往往會在一個游戲中創建多個NPC。解決方案是,按上面的辦法創建一個LLM對象,該對象處理服務器功能,但還具有創建另外幾個LLMClient對象,以便使用不同的提示詞為AI定義額外的行為。

ServerClient示例(https://github.com/undreamai/LLMUnity/tree/main/Samples~/ServerClient)中提供了展示此功能的示例。其實,這僅是上面基礎代碼的擴展,它為第一個AI使用LLM對象,為第二個AI使用具有不同提示詞的LLMClient對象(使用與第一個AI相同的服務器)。

多種AI功能

聊天機器人

創建更像真實游戲內容的最后一步是增強UI展示,因為你希望它們出現在你的游戲中如果你對更復雜的UI感興趣,我推薦你可以看看ChatBot示例(https://github.com/undreamai/LLMUnity/tree/main/Samples~/ChatBot),它可以創建一個類似于消息應用程序的更令人愉快的交互。

消息應用程序風格的互動

小結

僅此而已!在本文中,我們看到了如何使用LLMUnity包在Unity應用中集成LLM,以及一些實際示例。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

責任編輯:姜華 來源: 51CTO
相關推薦

2023-12-27 08:00:00

SQL數據庫LMQL

2024-05-06 08:44:25

FrugalGPT大型語言模型LLM

2013-04-27 16:14:33

Corona

2011-06-13 10:54:20

JAVA

2012-12-24 09:04:04

iOSUnity3D

2012-03-06 10:56:32

HTML 5

2013-04-25 13:12:16

unity3D手機游戲引擎

2023-01-03 15:16:27

2022-12-27 14:39:38

2015-04-22 20:33:06

寶德云游戲蠻牛unity

2024-11-27 16:17:00

2023-02-15 14:02:52

HutoolMapProxy工具包

2023-10-16 16:05:44

PythonPyCharm編程語言

2021-09-02 07:04:44

Go 開發利器

2016-06-14 15:33:47

SpriteKitSwift開發

2025-02-14 00:00:35

2024-03-04 00:05:00

人工智能LLM 評估

2020-04-23 14:50:22

游戲DLSS2.0英偉達

2021-09-30 18:06:03

AI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂一区二区三区 | 亚洲一区二区三区四区五区午夜 | 精品在线 | 国产在线网址 | 亚洲一区二区三区视频 | 国产伦精品一区二区三区在线 | 亚洲国产精品久久 | 日韩精品一区二区三区中文在线 | 国产精品美女久久久久久久久久久 | 久久国产激情视频 | 日韩欧美一区二区三区免费观看 | 色www精品视频在线观看 | 亚洲草草视频 | 亚洲人成免费 | 亚洲手机视频在线 | 精品在线免费观看视频 | 亚洲国产精品久久久 | 在线视频中文字幕 | 天天操天天射综合网 | 中文字幕在线看人 | 好好的日在线视频 | 国产午夜精品一区二区三区四区 | 久久久久国产 | 日本黄色免费片 | 日日日色 | 99久久久国产精品 | 特级一级黄色片 | 日韩欧美中文字幕在线观看 | 国产精品一区在线 | 国产91综合一区在线观看 | 亚洲视频在线观看一区二区三区 | 亚洲自拍一区在线观看 | 国产成都精品91一区二区三 | 久久亚洲一区二区三区四区 | 久久久久久综合 | 一级片视频免费观看 | 在线观看www视频 | 久久69精品久久久久久久电影好 | 精品在线一区二区 | 国产精品18hdxxxⅹ在线 | 第一区在线观看免费国语入口 |