LLM for Unity ช่วยให้สามารถผสานรวม Large Language Models (LLM) ภายในกลไก Unity ได้อย่างราบรื่น
ช่วยให้สามารถสร้างตัวละครอัจฉริยะที่ผู้เล่นของคุณสามารถโต้ตอบด้วยเพื่อประสบการณ์ที่ดื่มด่ำ
แพ็คเกจนี้ยังมีระบบการดึงข้อมูล-Augmented Generation (RAG) ที่ช่วยให้ทำการค้นหาเชิงความหมายในข้อมูลของคุณ ซึ่งสามารถใช้เพื่อเสริมความรู้ของตัวละครได้ LLM for Unity สร้างขึ้นจากไลบรารี llama.cpp ที่ยอดเยี่ยม
ข้อมูลโดยย่อ • วิธีการช่วยเหลือ • เกมที่ใช้ LLM สำหรับ Unity • การตั้งค่า • วิธีใช้ • RAG • การจัดการโมเดล LLM • ตัวอย่าง • ตัวเลือก • ใบอนุญาต
ข้ามแพลตฟอร์ม! Windows, Linux, macOS และ Android
- ทำงานในพื้นที่โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ไม่มีข้อมูลออกจากเกม!
⚡ การอนุมานที่รวดเร็วอย่างเห็นได้ชัดบน CPU และ GPU (Nvidia, AMD, Apple Metal)
- รองรับรุ่น LLM ที่สำคัญทั้งหมด
- ติดตั้งง่าย โทรด้วยโค้ดเพียงบรรทัดเดียว
- ใช้งานได้ฟรีทั้งเพื่อวัตถุประสงค์ส่วนตัวและเชิงพาณิชย์
- ทดสอบบน Unity: 2021 LTS, 2022 LTS, 2023
- การเปิดตัวที่จะเกิดขึ้น
ติดดาว repo ปล่อยให้เรารีวิวและกระจายข่าวเกี่ยวกับโครงการ!
เข้าร่วมกับเราที่ Discord และทักทาย
มีส่วนร่วมโดยส่งคำขอคุณลักษณะ จุดบกพร่อง หรือแม้แต่การประชาสัมพันธ์ของคุณเอง
งานนี้เพื่อให้มีคุณสมบัติที่เจ๋งยิ่งขึ้น!
คำตัดสินด้วยวาจา
ฉัน Chatbot: AISYLUM
วิญญาณไร้ชื่อแห่งความว่างเปล่า
การฆาตกรรมในทางเดินหมายเลข 4
AI จัดส่งอาหารจู้จี้จุกจิก
AI แฟนอารมณ์
ปิดคดีแล้ว
ติดต่อเราเพื่อเพิ่มโครงการของคุณ!
วิธีที่ 1: ติดตั้งโดยใช้ที่เก็บสินทรัพย์
เปิดหน้าสินทรัพย์ LLM สำหรับ Unity แล้วคลิก Add to My Assets
เปิดตัวจัดการแพ็คเกจใน Unity: Window > Package Manager
เลือกตัวเลือก Packages: My Assets
จากเมนูแบบเลื่อนลง
เลือกแพ็คเกจ LLM for Unity
คลิก Download
จากนั้นคลิก Import
วิธีที่ 2: ติดตั้งโดยใช้ GitHub repo:
เปิดตัวจัดการแพ็คเกจใน Unity: Window > Package Manager
คลิกปุ่ม +
และเลือก Add package from git URL
ใช้ URL ของที่เก็บ https://github.com/undreamai/LLMUnity.git
แล้วคลิก Add
ก่อนอื่น คุณจะต้องตั้งค่า LLM สำหรับเกมของคุณ ?:
สร้าง GameObject ที่ว่างเปล่า
ใน GameObject Inspector คลิก Add Component
แล้วเลือกสคริปต์ LLM
ดาวน์โหลดหนึ่งในโมเดลเริ่มต้นด้วยปุ่ม Download Model
(~GBs)
หรือโหลดโมเดล .gguf ของคุณเองด้วยปุ่ม Load model
(ดูการจัดการโมเดล LLM)
จากนั้นคุณสามารถตั้งค่าตัวละครแต่ละตัวของคุณได้ดังนี้ ?♀️:
สร้าง GameObject ว่างสำหรับตัวละคร
ใน GameObject Inspector คลิก Add Component
แล้วเลือกสคริปต์ LLMCharacter
กำหนดบทบาทของ AI ของคุณใน Prompt
คุณสามารถกำหนดชื่อของ AI ( AI Name
) และผู้เล่น ( Player Name
)
(ไม่บังคับ) เลือก LLM ที่สร้างขึ้นด้านบนในช่อง LLM
หากคุณมี LLM GameObjects มากกว่าหนึ่งรายการ
คุณยังสามารถปรับการตั้งค่า LLM และอักขระได้ตามความต้องการของคุณ (ดูตัวเลือก)
ในสคริปต์ของคุณคุณสามารถใช้มันได้ดังนี้ ?:
ใช้ LLMUnity; MyScript คลาสสาธารณะ { LLMCharacter สาธารณะ llmCharacter; เป็นโมฆะ HandleReply(ตอบกลับด้วยสตริง){// ทำบางสิ่งกับการตอบกลับจาก modelDebug.Log(reply); - void Game(){// ฟังก์ชั่นเกมของคุณ...string message = "Hello bot!";_ = llmCharacter.Chat(message, HandleReply);... -
คุณยังสามารถระบุฟังก์ชันที่จะเรียกใช้เมื่อการตอบกลับแบบจำลองเสร็จสมบูรณ์
สิ่งนี้มีประโยชน์หากเปิดใช้งานตัวเลือก Stream
สำหรับเอาต์พุตต่อเนื่องจากโมเดล (พฤติกรรมเริ่มต้น):
ถือเป็นโมฆะ ReplyCompleted(){// ทำบางสิ่งบางอย่างเมื่อการตอบกลับจากแบบจำลองเสร็จสมบูรณ์ Debug.Log("The AI ตอบกลับ"); - void Game(){// ฟังก์ชั่นเกมของคุณ...string message = "Hello bot!";_ = llmCharacter.Chat(message, HandleReply, ReplyCompleted);... -
หากต้องการหยุดการแชทโดยไม่ต้องรอให้เสร็จสิ้น คุณสามารถใช้:
llmCharacter.CancelRequests();
สุดท้าย ในตัวตรวจสอบ GameObject ของสคริปต์ของคุณ ให้เลือก LLMCharacter GameObject ที่สร้างขึ้นด้านบนเป็นคุณสมบัติ llmCharacter
เท่านั้นแหละ ✨!
คุณยังสามารถ:
ในการสร้างแอป Android คุณต้องระบุแบ็กเอนด์สคริปต์ IL2CPP
และ ARM64
เป็นสถาปัตยกรรมเป้าหมายในการตั้งค่าเครื่องเล่น
การตั้งค่าเหล่านี้สามารถเข้าถึงได้จากเมนู Edit > Project Settings
ภายในส่วน Player > Other Settings
เป็นความคิดที่ดีที่จะเปิดใช้งานตัวเลือก Download on Build
ใน LLM GameObject เพื่อดาวน์โหลดโมเดลเมื่อเปิดตัว เพื่อรักษาขนาดแอปให้เล็ก
หากต้องการบันทึก / โหลดประวัติการแชทของคุณโดยอัตโนมัติ คุณสามารถระบุพารามิเตอร์ Save
ของ LLMCharacter ให้กับชื่อไฟล์ (หรือเส้นทางที่เกี่ยวข้อง) ที่คุณเลือกได้ ไฟล์จะถูกบันทึกในโฟลเดอร์ถาวร DataPath ของ Unity นอกจากนี้ยังบันทึกสถานะของ LLM ซึ่งหมายความว่าไม่จำเป็นต้องคำนวณพรอมต์ที่แคชไว้ก่อนหน้านี้ใหม่
หากต้องการบันทึกประวัติการแชทด้วยตนเอง คุณสามารถใช้:
llmCharacter.Save("ชื่อไฟล์");
และเพื่อโหลดประวัติ:
llmCharacter.Load("ชื่อไฟล์");
โดยที่ filename ชื่อไฟล์หรือเส้นทางสัมพันธ์ที่คุณเลือก
ถือเป็นโมฆะ WarmupCompleted(){// ทำบางสิ่งบางอย่างเมื่อการวอร์มอัพเสร็จสมบูรณ์Debug.Log("AI ดีและพร้อม"); - เกมเป็นโมฆะ(){// ฟังก์ชั่นเกมของคุณ..._ = llmCharacter.Warmup(WarmupCompleted);... -
อาร์กิวเมนต์สุดท้ายของฟังก์ชัน Chat
คือบูลีนที่ระบุว่าจะเพิ่มข้อความลงในประวัติหรือไม่ (ค่าเริ่มต้น: จริง):
void Game(){// ฟังก์ชั่นเกมของคุณ...string message = "Hello bot!";_ = llmCharacter.Chat(message, HandleReply, ReplyCompleted, false);... -
void Game(){// ฟังก์ชั่นเกมของคุณ...string message = "The cat is away";_ = llmCharacter.Complete(message, HandleReply, ReplyCompleted);... -
สำหรับสิ่งนี้ คุณสามารถใช้ฟังก์ชัน async
/ await
:
async void Game(){// ฟังก์ชั่นเกมของคุณ...string message = "Hello bot!";string Reply = await llmCharacter.Chat(message, HandleReply, ReplyCompleted);Debug.Log(reply);... -
โดยใช้ UnityEngine;ใช้ LLMUnity;คลาสสาธารณะ MyScript : MonoBehaviour{LLM llm;LLMCharacter llmCharacter;async void Start(){// ปิดการใช้งาน gameObject เพื่อไม่ให้เรียก Awake ทันทีgameObject.SetActive(false);// เพิ่ม LLM objectllm = gameObject AddComponent<LLM>();// ตั้งค่าโมเดลโดยใช้ชื่อไฟล์ของโมเดล // The จำเป็นต้องเพิ่มโมเดลลงในตัวจัดการโมเดล LLM (ดูการจัดการโมเดล LLM) โดยการโหลดหรือดาวน์โหลด // ไม่เช่นนั้นไฟล์โมเดลสามารถคัดลอกได้โดยตรงภายในโฟลเดอร์ StreamingAssets.llm.SetModel("Phi-3-mini-4k- instruct-q4.gguf");// ตัวเลือก: คุณสามารถตั้งค่า loras ในลักษณะเดียวกันและตั้งค่าน้ำหนักได้ (ถ้า จำเป็น)llm.AddLora("my-lora.gguf");llm.SetLoraWeight(0.5f);// ตัวเลือก: คุณสามารถตั้งค่าเทมเพลตแชทของโมเดลได้หากไม่ได้ระบุอย่างถูกต้อง// คุณสามารถค้นหารายการของ เทมเพลตแชทใน ChatTemplate.templates.Keysllm.SetTemplate("phi-3");// ตัวเลือก: กำหนดจำนวน threadsllm.numThreads = -1;// ตัวเลือก: เปิดใช้งาน GPU โดยการตั้งค่าจำนวน เลเยอร์โมเดลที่จะถ่ายไปที่ itllm.numGPULayers = 10;// เพิ่ม LLMCharacter objectllmCharacter = gameObject.AddComponent<LLMCharacter>();// ตั้งค่าวัตถุ LLM ที่จัดการ modelllmCharacter.llm = llm;// ตั้งค่าอักขระ promptllmCharacter.SetPrompt ("การสนทนาระหว่างมนุษย์ผู้อยากรู้อยากเห็นกับผู้ช่วยปัญญาประดิษฐ์");// ตั้งค่า AI และชื่อผู้เล่นชื่อ llmCharacter.AIname = "AI";llmCharacter.playerName = "Human";// ตัวเลือก: ตั้งค่าการสตรีมเป็นเท็จเพื่อให้ได้ผลลัพธ์ที่สมบูรณ์ในครั้งเดียว// llmCharacter.stream = true;// ตัวเลือก: ตั้งค่าเส้นทางการบันทึก// llmCharacter.save = "AICharacter1";// ตัวเลือกเสริม: เปิดใช้งานแคชบันทึกเพื่อหลีกเลี่ยงการคำนวณใหม่เมื่อโหลดไฟล์บันทึก (ต้องใช้ ~ 100 MB)// llmCharacter.saveCache = true;// ตัวเลือก: ตั้งค่า ไวยากรณ์// รอ llmCharacter.SetGrammar("json.gbnf");// เปิดใช้งาน gameObjectgameObject.SetActive(true);}} อีกครั้ง
คุณสามารถใช้เซิร์ฟเวอร์ระยะไกลเพื่อดำเนินการประมวลผลและใช้อักขระที่โต้ตอบกับเซิร์ฟเวอร์ได้
สร้างเซิร์ฟเวอร์
ในการสร้างเซิร์ฟเวอร์:
สร้างโปรเจ็กต์ด้วย GameObject โดยใช้สคริปต์ LLM
ตามที่อธิบายไว้ข้างต้น
เปิดใช้งานตัวเลือก Remote
ของ LLM
และกำหนดค่าพารามิเตอร์เซิร์ฟเวอร์เพิ่มเติม: พอร์ต, คีย์ API, ใบรับรอง SSL, คีย์ SSL
สร้างและรันเพื่อเริ่มเซิร์ฟเวอร์
หรือคุณสามารถใช้ไบนารีเซิร์ฟเวอร์เพื่อการปรับใช้ที่ง่ายขึ้น:
เรียกใช้ฉากด้านบนจาก Editor และคัดลอกคำสั่งจากข้อความ Debug (เริ่มต้นด้วย "คำสั่งเซิร์ฟเวอร์:")
ดาวน์โหลดไบนารีของเซิร์ฟเวอร์และ DLL และแตกไฟล์เหล่านั้นลงในโฟลเดอร์เดียวกัน
ค้นหาสถาปัตยกรรมที่คุณสนใจจากโฟลเดอร์ด้านบน เช่น สำหรับ Windows และ CUDA ให้ใช้ windows-cuda-cu12.2.0
คุณยังสามารถตรวจสอบสถาปัตยกรรมที่เหมาะกับระบบของคุณได้จากข้อความดีบัก (เริ่มต้นด้วย "การใช้สถาปัตยกรรม")
จากไดเร็กทอรีการเปลี่ยนแปลงบรรทัดคำสั่งไปยังโฟลเดอร์สถาปัตยกรรมที่เลือกและเริ่มต้นเซิร์ฟเวอร์โดยการรันคำสั่งที่คัดลอกมาจากด้านบน
สร้างตัวละคร
สร้างโปรเจ็กต์ที่สองด้วยตัวละครในเกมโดยใช้สคริปต์ LLMCharacter
ตามที่อธิบายไว้ข้างต้น เปิดใช้งานตัวเลือก Remote
และกำหนดค่าโฮสต์ด้วยที่อยู่ IP (เริ่มต้นด้วย "http://") และพอร์ตของเซิร์ฟเวอร์
ฟังก์ชัน Embeddings
สามารถใช้เพื่อรับการฝังวลี:
List<float> embeddings = รอ llmCharacter.Embeddings("สวัสดี สบายดีไหม?");
คุณสามารถดู เอกสารโดยละเอียด เกี่ยวกับระดับฟังก์ชันได้ที่นี่:
LLM for Unity ใช้ฟังก์ชันการค้นหาความคล้ายคลึงที่รวดเร็วเป็นพิเศษกับระบบดึงข้อมูล-Augmented Generation (RAG)
ขึ้นอยู่กับฟังก์ชัน LLM และการค้นหา Approximate Nearest Neighbors (ANN) จากไลบรารี usearch
การค้นหาความหมายทำงานดังนี้
การสร้างข้อมูล คุณระบุอินพุตข้อความ (วลี ย่อหน้า เอกสาร) เพื่อเพิ่มลงในข้อมูล
อินพุตแต่ละรายการจะถูกแบ่งออกเป็นส่วนๆ (ไม่บังคับ) และเข้ารหัสเป็นการฝังด้วย LLM
การค้นหา คุณสามารถค้นหาการป้อนข้อความแบบสอบถามได้
อินพุตจะถูกเข้ารหัสอีกครั้ง และอินพุตข้อความหรือชิ้นส่วนที่คล้ายกันมากที่สุดในข้อมูลจะถูกดึงออกมา
วิธีใช้การค้นหาความหมาย:
สร้าง GameObject สำหรับ LLM ตามที่อธิบายไว้ข้างต้น ดาวน์โหลดหนึ่งในโมเดล RAG ที่ให้มาหรือโหลดของคุณเอง (ตัวเลือกที่ดีสามารถพบได้ที่กระดานผู้นำ MTEB)
สร้าง GameObject ที่ว่างเปล่า ใน GameObject Inspector คลิก Add Component
แล้วเลือกสคริปต์ RAG
ในดรอปดาวน์ประเภทการค้นหาของ RAG ให้เลือกวิธีค้นหาที่คุณต้องการ SimpleSearch
เป็นการค้นหาแบบ brute-force แบบธรรมดา ในขณะที่ DBSearch
เป็นวิธี ANN ที่รวดเร็วซึ่งควรเลือกใช้ในกรณีส่วนใหญ่
ในเมนูแบบเลื่อนลง Chunking Type ของ RAG คุณสามารถเลือกวิธีการแยกอินพุตออกเป็นชิ้นๆ ได้ สิ่งนี้มีประโยชน์ในการมีความหมายที่สอดคล้องกันมากขึ้นในแต่ละส่วนของข้อมูล มีวิธีการแบ่งแยกตามโทเค็น คำ และประโยค
หรือคุณสามารถสร้าง RAG จากโค้ด (โดยที่ llm คือ LLM ของคุณ):
RAG rag = gameObject.AddComponent<RAG>(); rag.Init (SearchMethods.DBSearch, ChunkingMethods.SentenceSplitter, llm);
ในสคริปต์ของคุณคุณสามารถใช้มันได้ดังนี้ ?:
ใช้ LLMUnity; MyScript คลาสสาธารณะ: MonoBehavior{ เศษผ้าขี้ริ้ว; async void Game(){...string[] inputs = new string[]{ "สวัสดี! ฉันคือระบบค้นหา", "อากาศดี ฉันชอบมัน", "ฉันเป็นระบบ RAG "};// เพิ่มอินพุตลงใน RAGforeach (อินพุตสตริงในอินพุต) await rag.Add(input);// รับอินพุต 2 รายการที่คล้ายกันมากที่สุดและระยะทาง (ความแตกต่าง) ไปยังคำค้นหา (ผลลัพธ์ string[], float [] Distances) = await rag.Search("hello!", 2);// เพื่อให้ได้ส่วนข้อความที่คล้ายกันมากที่สุด (chnuks) คุณสามารถเปิดใช้งาน returnChunks optionrag.ReturnChunks(true);(results, Distances) = await rag.Search ("สวัสดี!", 2);... -
คุณสามารถบันทึกสถานะ RAG ได้ (จัดเก็บไว้ในโฟลเดอร์ Assets/StreamingAssets
):
rag.Save("rag.zip");
และโหลดจากดิสก์:
รอ rag.Load("rag.zip");
คุณสามารถใช้ RAG เพื่อป้อนข้อมูลที่เกี่ยวข้องไปยัง LLM ตามข้อความของผู้ใช้:
string message = "อากาศเป็นยังไงบ้าง?"; (string[]likePhrases, float[] Distances) = รอ rag.Search(message, 3); string prompt = "ตอบคำถามผู้ใช้ตาม data.nn ที่ให้มา"; prompt += $"คำค้นหาของผู้ใช้: {message}nn"; prompt += $"ข้อมูล:n"; foreach (สตริงlikePhraseในlikePhrases) prompt += $"n- {similarPhrase}"; _ = llmCharacter.Chat (พร้อมท์, HandleReply, ตอบกลับเสร็จสมบูรณ์);
ตัวอย่าง RAG
มีตัวอย่างการใช้งาน RAG เช่นเดียวกับตัวอย่างการรวม RAG-LLM
เท่านั้นแหละ ✨!
LLM for Unity ใช้ตัวจัดการโมเดลที่อนุญาตให้โหลดหรือดาวน์โหลด LLM และจัดส่งโดยตรงในเกมของคุณ
ผู้จัดการโมเดลสามารถพบได้เป็นส่วนหนึ่งของ LLM GameObject:
คุณสามารถดาวน์โหลดโมเดลต่างๆ ได้ด้วยปุ่ม Download model
LLM for Unity มีโมเดลล้ำสมัยต่างๆ ในตัวสำหรับขนาดโมเดลที่แตกต่างกัน โดยวัดปริมาณด้วยวิธี Q4_K_M
สามารถดาวน์โหลดโมเดลทางเลือกได้จาก HuggingFace ในรูปแบบ .gguf
คุณสามารถดาวน์โหลดโมเดลในเครื่องและโหลดโดยใช้ปุ่ม Load model
หรือคัดลอก URL ในช่อง Download model > Custom URL
เพื่อดาวน์โหลดโดยตรง
หากโมเดล HuggingFace ไม่มีไฟล์ gguf ก็สามารถแปลงเป็น gguf ด้วยตัวแปลงออนไลน์นี้ได้
เทมเพลตแชทที่ใช้สำหรับสร้างพร้อมท์จะถูกกำหนดโดยอัตโนมัติจากโมเดล (หากมีรายการที่เกี่ยวข้อง) หรือชื่อโมเดล
หากระบุไม่ถูกต้อง คุณสามารถเลือกเทมเพลตอื่นได้จากเมนูแบบเลื่อนลงเทมเพลตแชท
โมเดลที่เพิ่มในตัวจัดการโมเดลจะถูกคัดลอกไปยังเกมในระหว่างกระบวนการสร้าง
คุณสามารถละเว้นโมเดลไม่ให้มีอยู่แล้วโดยยกเลิกการเลือกช่องทำเครื่องหมาย "สร้าง"
หากต้องการลบโมเดล (แต่ไม่ลบออกจากดิสก์) คุณสามารถคลิกปุ่มถังขยะ
เส้นทางและ URL (หากดาวน์โหลด) ของแต่ละรุ่นที่เพิ่มจะแสดงในมุมมองแบบขยายของการเข้าถึงตัวจัดการโมเดลด้วยปุ่ม >>
:
คุณสามารถสร้างบิลด์ที่เบากว่าได้โดยเลือกตัวเลือก Download on Build
การใช้ตัวเลือกนี้ โมเดลต่างๆ จะถูกดาวน์โหลดในครั้งแรกที่เกมเริ่ม แทนที่จะคัดลอกในบิลด์
หากคุณได้โหลดโมเดลในเครื่อง คุณจะต้องตั้งค่า URL ของโมเดลผ่านมุมมองแบบขยาย ไม่เช่นนั้นโมเดลนั้นจะถูกคัดลอกในบิลด์
❕ ก่อนใช้รุ่นใดๆ โปรด ตรวจสอบใบอนุญาตของพวกเขา ก่อน ❕
โฟลเดอร์ Samples~ มีตัวอย่างการโต้ตอบหลายตัวอย่าง ?:
SimpleInteraction: สาธิตการโต้ตอบง่ายๆ กับตัวละคร AI
ตัวละครหลายตัว: สาธิตการโต้ตอบอย่างง่าย ๆ โดยใช้ตัวละคร AI หลายตัว
RAG: ตัวอย่าง RAG รวมตัวอย่างการใช้ RAG เพื่อป้อนข้อมูลไปยัง LLM
ChatBot: สาธิตการโต้ตอบระหว่างผู้เล่นและ AI ด้วย UI ที่คล้ายกับแอปส่งข้อความ (ดูภาพด้านล่าง)
KnowledgeBaseGame: เกมนักสืบง่ายๆ ที่ใช้ฐานความรู้เพื่อให้ข้อมูลแก่ LLM ตาม google/mysteryofthreebots
AndroidDemo: ตัวอย่างแอป Android ที่มีหน้าจอเริ่มต้นพร้อมความคืบหน้าในการดาวน์โหลดโมเดล
หากต้องการติดตั้งตัวอย่าง:
เปิดตัวจัดการแพ็คเกจ: Window > Package Manager
เลือก LLM for Unity
จากแท็บ Samples
คลิก Import
ถัดจากตัวอย่างที่คุณต้องการติดตั้ง
ตัวอย่างสามารถเรียกใช้ด้วยฉาก Scene.unity
ที่มีอยู่ในโฟลเดอร์
ในฉาก ให้เลือก LLM
GameObject แล้วคลิกปุ่ม Download Model
เพื่อดาวน์โหลดโมเดลเริ่มต้นหรือ Load model
เพื่อโหลดโมเดลของคุณเอง (ดูการจัดการโมเดล LLM)
บันทึกฉาก วิ่งและสนุกได้เลย!
Show/Hide Advanced Options
สลับเพื่อแสดง/ซ่อนตัวเลือกขั้นสูงจากด้านล่าง
Log Level
เลือกว่าข้อความบันทึกละเอียดเพียงใด
Use extras
เพื่อติดตั้งและอนุญาตให้ใช้คุณสมบัติพิเศษ (ความสนใจแบบแฟลชและปริมาณ IQ)
เลือก Remote
เพื่อให้การเข้าถึง LLM จากระยะไกล
Port
พอร์ตเพื่อรันเซิร์ฟเวอร์ LLM (หากตั้งค่า Remote
)
Num Threads
จำนวนเธรดที่จะใช้ (ค่าเริ่มต้น: -1 = ทั้งหมด)
Num GPU Layers
จำนวนเลเยอร์โมเดลที่จะถ่ายโอนไปยัง GPU หากตั้งค่าเป็น 0 แสดงว่า GPU จะไม่ถูกใช้ ใช้ตัวเลขจำนวนมาก เช่น >30 เพื่อใช้ GPU ให้ได้มากที่สุด โปรดทราบว่าค่าขนาดบริบทที่สูงกว่าจะใช้ VRAM มากกว่า หาก GPU ของผู้ใช้ไม่รองรับ LLM จะถอยกลับไปที่ CPU
เลือก Debug
เพื่อบันทึกเอาต์พุตของโมเดลใน Unity Editor
เช่น การตั้งค่า Parallel Prompts
เป็น 1 และช่อง 0 สำหรับอ็อบเจ็กต์ LLMCharacter ทั้งหมดจะใช้บริบทแบบเต็ม แต่พรอมต์ทั้งหมดจะต้องถูกคำนวณ (ไม่มีการแคช) ทุกครั้งที่ใช้อ็อบเจ็กต์ LLMCharacter สำหรับการแชท
Dont Destroy On Load
เลือกที่จะไม่ทำลาย LLM GameObject เมื่อโหลดฉากใหม่
Parallel Prompts
จำนวน prompts / slot ที่สามารถเกิดขึ้นพร้อมกันได้ (ค่าเริ่มต้น: -1 = จำนวนอ็อบเจ็กต์ LLMCharacter) โปรดทราบว่าขนาดบริบทจะถูกแบ่งตามช่องต่างๆ API key
คีย์ API เพื่อใช้อนุญาตการเข้าถึงคำขอจากออบเจ็กต์ LLMCharacter (หากตั้งค่า Remote
)
Load SSL certificate
อนุญาตให้โหลดใบรับรอง SSL สำหรับการเข้ารหัสคำขอจากต้นทางถึงปลายทาง (หากตั้งค่า Remote
) ต้องใช้คีย์ SSL เช่นกัน
Load SSL key
อนุญาตให้โหลดคีย์ SSL สำหรับการเข้ารหัสคำขอจากต้นทางถึงปลายทาง (หากตั้งค่า Remote
) ต้องมีใบรับรอง SSL เช่นกัน
SSL certificate path
ใบรับรอง SSL ที่ใช้สำหรับการเข้ารหัสคำขอจากต้นทางถึงปลายทาง (หากตั้งค่า Remote
)
SSL key path
คีย์ SSL ที่ใช้สำหรับการเข้ารหัสคำขอจากต้นทางถึงปลายทาง (หากตั้งค่า Remote
)
Download model
คลิกเพื่อดาวน์โหลดหนึ่งในโมเดลเริ่มต้น
Load model
คลิกเพื่อโหลดโมเดลของคุณเองในรูปแบบ .gguf
Download on Start
เปิดใช้งานเพื่อดาวน์โหลดโมเดล LLM ในครั้งแรกที่เริ่มเกม อีกทางหนึ่ง โมเดล LLM จะถูกคัดลอกโดยตรงในบิลด์
Context Size
ขนาดบริบทของพรอมต์ (0 = ขนาดบริบทของโมเดล) Download lora
คลิกเพื่อดาวน์โหลดโมเดล LoRA ในรูปแบบ .gguf
Load lora
คลิกเพื่อโหลดโมเดล LoRA ในรูปแบบ .gguf
Batch Size
ขนาดแบทช์สำหรับการประมวลผลพร้อมท์ (ค่าเริ่มต้น: 512)
Model
เส้นทางของโมเดลที่ใช้งาน (สัมพันธ์กับโฟลเดอร์ Assets/StreamingAssets)
Chat Template
เทมเพลตแชทที่ใช้สำหรับ LLM
Lora
เส้นทางของ LoRA ที่กำลังใช้งาน (สัมพันธ์กับโฟลเดอร์ Assets/StreamingAssets)
Lora Weights
น้ำหนักของ LoRA ที่ใช้
Flash Attention
คลิกเพื่อใช้การสนใจแบบแฟลชในโมเดล (หากเปิดใช้งาน Use extras
)
Base Prompt
พร้อมท์ฐานทั่วไปเพื่อใช้กับวัตถุ LLMCharacter ทั้งหมดโดยใช้ LLM
Show/Hide Advanced Options
สลับเพื่อแสดง/ซ่อนตัวเลือกขั้นสูงจากด้านล่าง
Log Level
เลือกว่าข้อความบันทึกละเอียดเพียงใด
Use extras
เพื่อติดตั้งและอนุญาตให้ใช้คุณสมบัติพิเศษ (ความสนใจแบบแฟลชและปริมาณ IQ)
Remote
ไม่ว่า LLM ที่ใช้จะเป็นระยะไกลหรือในพื้นที่
LLM
the LLM GameObject (หากไม่ได้ตั้ง Remote
)
Hort
ip ของเซิร์ฟเวอร์ LLM (หากตั้งค่า Remote
)
พอร์ต Port
ของเซิร์ฟเวอร์ LLM (หากตั้งค่า Remote
)
Num Retries
จำนวนคำขอ HTTP ที่ลองอีกครั้งจากเซิร์ฟเวอร์ LLM (หากตั้งค่า Remote
)
API key
คีย์ API ของเซิร์ฟเวอร์ LLM (หากตั้งค่า Remote
)
Save
ชื่อไฟล์หรือเส้นทางสัมพันธ์ Save Cache
เลือกเพื่อบันทึกสถานะ LLM พร้อมกับประวัติการแชท โดยทั่วไปสถานะ LLM จะอยู่ที่ประมาณ 100MB+
Debug Prompt
เลือกเพื่อบันทึกพรอมต์ที่สร้างขึ้นใน Unity Editor
Player Name
ชื่อผู้เล่น
AI Name
ชื่อของ AI
คำอธิบายบทบาท AI Prompt
Stream
เลือกเพื่อรับการตอบกลับจากแบบจำลองตามที่ผลิต (แนะนำ!)
หากไม่ได้เลือก จะได้รับการตอบกลับแบบเต็มจากโมเดลในครั้งเดียว
Num Predict
จำนวนโทเค็นสูงสุดที่จะทำนาย (ค่าเริ่มต้น: 256, -1 = อนันต์, -2 = จนกระทั่งบริบทเต็ม) Load grammar
คลิกเพื่อโหลดไวยากรณ์ในรูปแบบ .gbnf
Grammar
เส้นทางของไวยากรณ์ที่ใช้ (สัมพันธ์กับโฟลเดอร์ Assets/StreamingAssets)
Cache Prompt
บันทึกข้อความแจ้งที่กำลังดำเนินอยู่จากการแชท (ค่าเริ่มต้น: จริง) Slot
slot ของเซิร์ฟเวอร์เพื่อใช้ในการคำนวณ สามารถตั้งค่าได้ตั้งแต่ 0 ถึง Parallel Prompts
-1 (ค่าเริ่มต้น: -1 = ช่องใหม่สำหรับอักขระแต่ละตัว)
เมล็ด Seed
เพื่อการสืบพันธุ์ เพื่อสุ่มผลลัพธ์ทุกครั้งให้ใช้ -1
Temperature
อุณหภูมิ LLM ค่าที่ต่ำกว่าจะให้คำตอบที่กำหนดได้มากกว่า (ค่าเริ่มต้น: 0.2)Top K
top-k (ค่าเริ่มต้น: 40, 0 = ปิดใช้งาน)Top P
top-p (ค่าเริ่มต้น: 0.9, 1.0 = ปิดใช้งาน)Min P
ขั้นต่ำสำหรับโทเค็นที่จะใช้ (ค่าเริ่มต้น: 0.05)Repeat Penalty
ควบคุมการทำซ้ำของลำดับโทเค็นในข้อความที่สร้างขึ้น (ค่าเริ่มต้น: 1.1)Presence Penalty
การลงโทษการแสดงตนของโทเค็นซ้ำ (ค่าเริ่มต้น: 0.0, 0.0 = ปิดใช้งาน)Frequency Penalty
การลงโทษความถี่โทเค็นซ้ำ (ค่าเริ่มต้น: 0.0, 0.0 = ปิดใช้งาน) Tfs_z
: เปิดใช้งานการสุ่มตัวอย่างแบบไม่มีหางด้วยพารามิเตอร์ z (ค่าเริ่มต้น: 1.0, 1.0 = ปิดใช้งาน)
Typical P
: เปิดใช้งานการสุ่มตัวอย่างทั่วไปในเครื่องด้วยพารามิเตอร์ p (ค่าเริ่มต้น: 1.0, 1.0 = ปิดใช้งาน)
Repeat Last N
: โทเค็น N สุดท้ายที่ต้องพิจารณาสำหรับการลงโทษการทำซ้ำ (ค่าเริ่มต้น: 64, 0 = ปิดการใช้งาน, -1 = ขนาด ctx)
Penalize Nl
: ลงโทษโทเค็นการขึ้นบรรทัดใหม่เมื่อใช้การลงโทษซ้ำ (ค่าเริ่มต้น: true)
Penalty Prompt
: แจ้งเพื่อวัตถุประสงค์ในการประเมินบทลงโทษ สามารถเป็นได้ทั้ง null
สตริงหรืออาร์เรย์ของตัวเลขที่แสดงถึงโทเค็น (ค่าเริ่มต้น: null
= use original prompt
)
Mirostat
: เปิดใช้งานการสุ่มตัวอย่าง Mirostat ควบคุมความฉงนสนเท่ห์ในระหว่างการสร้างข้อความ (ค่าเริ่มต้น: 0, 0 = ปิดใช้งาน, 1 = Mirostat, 2 = Mirostat 2.0)
Mirostat Tau
: ตั้งค่าเอนโทรปีเป้าหมาย Mirostat พารามิเตอร์ tau (ค่าเริ่มต้น: 5.0)
Mirostat Eta
: ตั้งค่าอัตราการเรียนรู้ Mirostat, พารามิเตอร์ eta (ค่าเริ่มต้น: 0.1)
N Probs
: หากมากกว่า 0 การตอบสนองจะมีความน่าจะเป็นของโทเค็น N อันดับแรกสำหรับโทเค็นที่สร้างขึ้นแต่ละรายการด้วย (ค่าเริ่มต้น: 0)
Ignore Eos
: เปิดใช้งานเพื่อละเว้นโทเค็นการสิ้นสุดสตรีมและสร้างต่อไป (ค่าเริ่มต้น: false)
ใบอนุญาตของ LLM สำหรับ Unity คือ MIT (LICENSE.md) และใช้ซอฟต์แวร์บุคคลที่สามพร้อมใบอนุญาต MIT และ Apache โมเดลบางรุ่นรวมอยู่ในเนื้อหาจะกำหนดเงื่อนไขสิทธิ์การใช้งานของตนเอง โปรดตรวจสอบก่อนใช้งานแต่ละรุ่น ใบอนุญาตของบุคคลที่สามสามารถพบได้ใน (Third Party Notices.md)