Chuyển tới nội dung chính

Cách sử dụng plugin

Hướng dẫn này bao gồm toàn bộ API runtime: tạo một phiên bản LLM, tải mô hình, gửi tin nhắn, tải mô hình trong runtime, quản lý trạng thái và các hàm tiện ích.

Tạo một phiên bản LLM

Bắt đầu bằng cách tạo một đối tượng Runtime Local LLM. Duy trì một tham chiếu đến nó (ví dụ: như một biến trong Blueprints hoặc UPROPERTY trong C++) để ngăn chặn việc thu gom rác sớm.

Create Runtime Local LLM

Tải một Mô hình

Bạn phải tải một mô hình trước khi gửi tin nhắn. Plugin cung cấp một số phương pháp tải tùy thuộc vào quy trình làm việc của bạn.

Tải theo Tên

Nếu bạn quản lý các mô hình thông qua bảng cài đặt trình chỉnh sửa, hãy sử dụng Load Model (By Name).

Trong UE 5.4 trở lên, Load Model (By Name) hiển thị danh sách thả xuống tất cả các model có trên ổ đĩa - chỉ cần chọn model bạn muốn tải.

Load Model By Name UE 5.4+

Tải từ Đường dẫn Tệp

Tải một mô hình trực tiếp từ đường dẫn tệp tuyệt đối đến tệp .gguf:

Load Model From File

Tải từ URL (Tải xuống và Tải lên)

Tải mô hình từ một URL (nếu chưa có trên ổ đĩa) và tự động tải nó lên. Nếu tệp đã tồn tại cục bộ, quá trình tải xuống sẽ được bỏ qua.

Biến thể đơn giản nhất chỉ yêu cầu một URL - siêu dữ liệu được suy ra từ tên tệp:

Load Model From URL Simple

Bạn cũng có thể sử dụng Load Model From URL với đầy đủ siêu dữ liệu mô hình để có thông tin mô hình phong phú hơn:

Load Model From URL

Tải Bất Đồng Bộ (Blueprint)

Để xử lý việc hoàn tất tải và lỗi thông qua các chân đầu ra thay vì tự ràng buộc delegate, có sẵn hai node bất đồng bộ.

Load Model By Name (Async) phản chiếu Load Model (By Name) - trong UE 5.4+, nó hiển thị danh sách thả xuống tất cả các model trên đĩa:

Load Model By Name Async UE 5.4+

Load Model From File (Async) nhận một đường dẫn tệp tuyệt đối thay vào đó:

Load Model From File Async

Ràng buộc Sự kiện

Gắn kết với các delegate của phiên bản LLM để nhận callback. Tất cả callback đều được kích hoạt trên luồng game.

Bind Events

Các delegate có sẵn:

  • Khi Token Được Tạo: Kích hoạt cho mỗi token đầu ra
  • Khi Hoàn Tất Sinh: Kích hoạt khi phản hồi đầy đủ đã sẵn sàng, kèm thời lượng, số lượng token và token mỗi giây
  • Khi Prompt Được Xử Lý: Kích hoạt sau khi prompt đầu vào được xử lý, trước khi bắt đầu sinh
  • Khi Có Lỗi: Kích hoạt nếu xảy ra lỗi trong bất kỳ thao tác nào
  • Khi Model Đã Tải: Kích hoạt khi một model hoàn tất tải
  • Khi Model Đã Gỡ Tải: Kích hoạt khi model được gỡ tải
  • Khi Tiến Trình Tải Xuống: Kích hoạt định kỳ trong quá trình tải model (phần trăm tiến trình, số byte đã nhận, tổng số byte)
  • Khi Model Đã Tải Xuống: Kích hoạt khi một thao tác chỉ tải xuống hoàn tất
  • Khi Hội Thoại Đã Lưu: Kích hoạt khi một hội thoại đã được ghi vào tệp JSON
  • Khi Hội Thoại Đã Tải: Kích hoạt khi một hội thoại đã được tải từ tệp hoặc ảnh chụp bộ nhớ
  • Khi Lịch Sử Đã Tóm Tắt: Kích hoạt khi tính năng tự động tóm tắt nén các tin nhắn cũ hơn (báo cáo số lượng tin nhắn, số token đã tiết kiệm và bản tóm tắt)

Gửi Tin Nhắn

Khi một mô hình đã được tải, hãy gửi một tin nhắn người dùng để tạo phản hồi:

Send Message

Để ghi đè lời nhắc hệ thống cho một tin nhắn cụ thể, hãy sử dụng Send Message With System Prompt:

Send Message With System Prompt

Các token được truyền qua OnTokenGenerated khi chúng được tạo ra. Khi quá trình tạo hoàn tất, OnGenerationComplete sẽ kích hoạt với phản hồi đầy đủ, thời lượng, số lượng token và số token mỗi giây.

Gửi Tin Nhắn Bất Đồng Bộ (Blueprint)

Nút Send LLM Message (Async) cung cấp các chân đầu ra chuyên dụng cho token, kết quả hoàn thành và lỗi.

Async Send Message

Tải mô hình khi chạy

Ngoài luồng tải xuống và tải lên được mô tả ở trên, bạn có thể tải một mô hình xuống đĩa mà không cần tải nó. Điều này hữu ích cho việc lưu trước các mô hình trong màn hình tải hoặc menu cài đặt.

Download Model

Một biến thể chỉ có URL cũng có sẵn:

Download Model From URL

Nút Download LLM Model (Async)Download LLM Model From URL (Async) cung cấp các chân đầu ra cho tiến trình, hoàn thành và lỗi:

Async Download Model

Ủy quyền OnDownloadProgress báo cáo tiến trình trong quá trình tải xuống. OnModelDownloaded được kích hoạt khi tệp được lưu vào đĩa.

Để hủy một quá trình tải xuống đang diễn ra:

Cancel Download

Plugin tự động ngăn chặn việc tải xuống trùng lặp - nếu một quá trình tải xuống cho cùng một mô hình đang diễn ra, các yêu cầu tiếp theo sẽ bị bỏ qua.

Dừng tạo

Để ngắt một quá trình tạo đang diễn ra:

Stop Generation

Đặt lại Ngữ cảnh Hội thoại

Xóa lịch sử hội thoại để bắt đầu một cuộc trò chuyện mới:

Reset Context

Lưu và Tải Lại Cuộc Hội Thoại

Plugin có thể lưu trữ lịch sử hội thoại vào đĩa dưới dạng JSON hoặc giữ nó trong bộ nhớ như một ảnh chụp nhanh. Theo mặc định, prompt hệ thống được loại trừ khỏi các lần lưu, do đó cùng một lịch sử hội thoại có thể được tải vào các phiên bản LLM khác nhau với các quy tắc hệ thống khác nhau. Điều này hữu ích cho các kịch bản nhiều NPC, nơi mỗi nhân vật có bộ nhớ riêng nhưng có thể chia sẻ hoặc khác biệt trong các hướng dẫn hệ thống của chúng.

Lưu vào Tệp

Lưu cuộc trò chuyện hiện tại vào một tệp JSON trên đĩa:

Save Conversation To File

Tham số Include System Prompt kiểm soát việc có ghi thông báo hệ thống (nếu có) vào tệp hay không. Mặc định là false để đảm bảo tính tương thích giữa các NPC.

On Conversation Saved được kích hoạt khi tệp được ghi.

Tải từ Tệp

Tải lại một cuộc hội thoại từ tệp JSON:

Load Conversation From File

Tham số Preserve Current System Prompt (mặc định là true) giữ nguyên lời nhắc hệ thống hiện tại trong khi hoán đổi lịch sử hội thoại đã lưu. Đây là cài đặt được khuyến nghị cho việc hoán đổi bộ nhớ NPC.

On Conversation Loaded kích hoạt cùng với snapshot đã được tải.

Ảnh chụp trong bộ nhớ (Quy trình làm việc đa NPC)

Để chuyển đổi NPC nhanh trong khi chơi, hãy chụp nhanh cuộc hội thoại hiện tại vào bộ nhớ thay vì ghi ra đĩa. Mô hình này là cách được khuyến nghị để quản lý nhiều NPC dùng chung một mô hình đã tải:

Mô hình nhiều NPC điển hình sử dụng Bản đồ Tên → Ảnh chụp Hội thoại LLM trên trình quản lý NPC hoặc trạng thái trò chơi của bạn:

  1. Khi chuyển khỏi một NPC: gọi Save Conversation To Memory, sau đó trong On Conversation Loaded (cũng được kích hoạt khi gửi snapshot), lưu snapshot vào map của bạn với khóa là tên NPC.
  2. Khi chuyển sang một NPC khác: đọc snapshot từ map của bạn và gọi Load Conversation From Memory với tùy chọn Preserve Current System Prompt được bật.

Multi NPC Pattern

Vì system prompt vẫn được tải qua các lần hoán đổi, "tính cách" của mỗi NPC có thể được mã hóa trong system prompt riêng cho từng NPC (gọi Send Message With System Prompt một lần sau khi hoán đổi để cập nhật) hoặc được chia sẻ cho tất cả các NPC.

mẹo

Snapshot (ảnh chụp nhanh) không phụ thuộc vào mô hình - chúng lưu trữ tin nhắn, không phải trạng thái bộ nhớ đệm KV. Cùng một snapshot có thể được tải vào một mô hình khác (mặc dù phong cách hội thoại có thể thay đổi). Trường OriginModelFamilyName trên snapshot cho phép bạn kiểm tra mô hình nào đã tạo ra nó, nếu bạn muốn thực thi tính tương thích.

Tự động Tóm tắt Ngữ cảnh

Các cuộc trò chuyện dài cuối cùng sẽ vượt quá cửa sổ ngữ cảnh của mô hình, điều này thông thường sẽ cắt bớt lịch sử hoặc gây ra lỗi. Tính năng tự động tóm tắt của plugin giám sát việc sử dụng ngữ cảnh và khi vượt quá ngưỡng đã cấu hình, nó sẽ tóm tắt các tin nhắn cũ hơn thành một tin nhắn "bộ nhớ" duy nhất trước khi tạo phản hồi tiếp theo. Điều này giúp giữ chi phí token và độ trễ ổn định trong suốt các cuộc trò chuyện dài vô hạn.

Việc tóm tắt được thực hiện bởi cùng một mô hình đã tải, do đó không cần mô hình thứ hai hay lệnh gọi API nào khác.

Bật Tự động Tóm tắt

Enable Auto Summarization

Sử dụng Get Default Summarization Config để có các thiết lập mặc định hợp lý, sau đó điều chỉnh khi cần thiết:

Get Default Summarization Config

Khi được bật, tính năng tóm tắt sẽ tự động chạy trước mỗi lần gọi SendMessage khi cần, không yêu cầu thao tác thêm nào.

mẹo

Theo mặc định, tính năng tự động tóm tắt chạy trước khi một tin nhắn mới được xử lý, vì nó cần xây dựng lại ngữ cảnh, điều không thể thực hiện an toàn cùng lúc với việc tạo phản hồi. Nếu bạn muốn nó chạy sau khi có phản hồi, trong khi người chơi đang đọc và nhập, hãy tắt tự động tóm tắt và điều khiển thủ công: liên kết với On Generation Complete, kiểm tra Get Used Context Length so với ngưỡng của bạn, và gọi Summarize Now nếu vượt quá. Vì Summarize Now xếp hàng đợi trên cùng một hàng đợi tác vụ nền, nó sẽ chạy ngay sau khi phản hồi kết thúc và trước khi tin nhắn tiếp theo được xử lý.

Tài liệu tham khảo cấu hình

Tham sốTypeMặc địnhMô tả
Ngưỡng Token Kích Hoạtint321500Tóm tắt sẽ chạy khi số token ngữ cảnh được sử dụng vượt quá giá trị này. Đặt giá trị này tương đối với Kích thước Ngữ cảnh của bạn, khoảng 60-75% là một nguyên tắc tốt.
Giữ Số Lượng Tin Nhắn Gần Đâyint324N tin nhắn gần đây nhất không bao giờ bị tóm tắt, giúp duy trì sự mạch lạc ngay lập tức trong hội thoại.
Số Tin Nhắn Tối Thiểu Để Tóm Tắtint326Bỏ qua tóm tắt nếu số lượng tin nhắn cũ hơn đủ điều kiện ít hơn mức này (tránh tóm tắt nhỏ vô ích)
Token Tóm Tắt Tối Đaint32256Số token tối đa của bản tóm tắt được tạo ra
Bảo toàn Prompt Hệ ThốngbooltrueLuôn giữ nguyên thông điệp hệ thống (chỉ mục 0).
Hướng dẫn Tóm tắtFString(see default)Hướng dẫn gửi đến mô hình để tạo bản tóm tắt
Tiền tố tin nhắn tóm tắtFString"[Tóm tắt bộ nhớ dài hạn của cuộc trò chuyện trước đó]: "Được thêm vào đầu bản tóm tắt đã tạo khi nó được chèn vào cuộc trò chuyện dưới dạng tin nhắn bộ nhớ có vai trò trợ lý.

Kích hoạt Thủ công và Lắng nghe Tóm tắt

Bạn có thể kích hoạt tính năng tóm tắt thủ công bất kỳ lúc nào, bất kể ngưỡng quy định.

Summarize Now

Liên kết với On History Summarized để được thông báo khi một lượt tóm tắt hoàn tất. Sự kiện này báo cáo số lượng tin nhắn đã bị xóa, số lượng token đã được tiết kiệm và văn bản tóm tắt được tạo ra, hữu ích để hiển thị một chỉ báo tinh tế trong giao diện trò chuyện:

On History Summarized

Truy vấn độ dài ngữ cảnh đã sử dụng

Sử dụng Get Used Context Length để kiểm tra số lượng token hiện đang chiếm trong cửa sổ ngữ cảnh của mô hình. Đây là giá trị tương tự mà cơ chế tự động tóm tắt tích hợp sẵn kiểm tra với Trigger Token Threshold.

Get Used Context Length

Tắt tính năng Tự động Tóm tắt

Disable Auto Summarization

Việc tắt tính năng này sẽ không hoàn tác các bản tóm tắt đã được áp dụng cho cuộc trò chuyện.

ghi chú

Việc tóm tắt mất một chút thời gian để chạy trên luồng nền (mô hình đang tạo bản tóm tắt). Các callback luồng token bị tạm ngưng trong quá trình tạo nội bộ này để chúng không xuất hiện trong giao diện trò chuyện của bạn. On History Summarized được kích hoạt một khi quá trình ghép nối hoàn tất.

Dỡ một Mô hình

Giải phóng tài nguyên khi một mô hình không còn cần thiết:

Unload Model

Trạng thái truy vấn

Kiểm tra trạng thái hiện tại của phiên bản LLM:

Query State

  • Đã tải mô hình: True nếu mô hình đã sẵn sàng để suy luận
  • Đang tạo sinh: True nếu quá trình tạo sinh đang diễn ra
  • Đang bận: True nếu bất kỳ thao tác nào (tải, tạo sinh, tải xuống) đang hoạt động
  • Đang tải xuống: True nếu quá trình tải xuống mô hình đang diễn ra
  • Lấy siêu dữ liệu mô hình đã tải: Trả về siêu dữ liệu của mô hình hiện tại
  • Lấy tham số suy luận đã áp dụng: Trả về các tham số được áp dụng khi tải

Chức năng Thư viện Mô hình

Một tập hợp các hàm tiện ích tĩnh được cung cấp để quản lý các tệp mô hình trên đĩa. Các hàm này hữu ích cho việc xây dựng giao diện người dùng chọn mô hình hoặc kiểm tra tính khả dụng của mô hình trong thời gian chạy.

Lấy Tên / Siêu Dữ Liệu của Mô Hình Đã Tải Xuống

Get Downloaded Model Names

Get All Downloaded Model Metadata

Kiểm tra xem một Model có trên ổ đĩa hay không

Is Model On Disk

Lấy Đường Dẫn Tệp Mô Hình

Get Model File Path

Xóa tệp mô hình

Delete Model Files

Lấy các Mô hình Đã được Xác định trước và Có sẵn

Get Predefined Models

Get All Available Models

Xây dựng Metadata từ một URL

Xây dựng siêu dữ liệu mô hình từ URL thô (các trường được suy ra từ tên tệp):

Make Metadata From URL

Các Hàm Tiện Ích

Một bộ các hàm trợ giúp được cung cấp để định dạng và hiển thị lỗi.

Chuỗi Bytes thành Chuỗi Có Thể Đọc

Chuyển đổi số byte thành chuỗi có thể đọc được (ví dụ: "4.07 GB"). Hữu ích để hiển thị kích thước mô hình trong giao diện người dùng.

Bytes to Readable String

Định dạng Tiến trình Tải xuống

Định dạng chuỗi tiến trình tải xuống như "1.23 GB / 4.07 GB (30.2%)". Nếu tổng dung lượng không xác định, chỉ trả về dung lượng đã nhận được.

Format Download Progress

Lấy Mô tả Lỗi / Chuỗi Mã Lỗi

Get LLM Error Description trả về mô tả văn bản dễ đọc cho mã lỗi. Get LLM Error Code String trả về tên giá trị enum dưới dạng chuỗi (hữu ích cho việc ghi log).

Get Error Description

Tài liệu Tham khảo Mã Lỗi

CodeGiá trịMô tả
Không xác định0Một lỗi không xác định
ModelLoadFailed10Tệp GGUF không thể tải được (tệp bị hỏng, định dạng không tương thích, v.v.)
ContextCreateFailed11Không thể tạo ngữ cảnh suy luận.
ModelNotLoaded20Đã thử suy luận nhưng không có mô hình nào được tải.
ChatTemplateFailed21Mẫu chat của mô hình không thể áp dụng.
TokenizationFailed22Đầu vào văn bản không thể được mã hóa.
ContextOverflow23Lời nhắc + ngữ cảnh vượt quá kích thước ngữ cảnh đã cấu hình.
PromptDecodeFailed24Các token prompt không thể giải mã được.
ContextTooFullToGenerate25Không đủ không gian ngữ cảnh để tạo đầu ra.
GenerationDecodeFailed30Một token không thể giải mã trong quá trình sinh.
GenerationTruncated31Quá trình tạo bị dừng lại vì đã đạt đến giới hạn token tối đa.
LLMInstanceNull40Phiên bản LLM bị null hoặc không hợp lệ.
ModelNotFoundOnDisk41Tệp mô hình không tồn tại tại đường dẫn mong đợi.
ModelURLEmpty42Yêu cầu tải xuống với URL trống.
ModelDownloadCancelled43Tải xuống đã bị hủy.
ModelDownloadEmptyData44Tải xuống hoàn tất nhưng nội dung phản hồi trống rỗng.
ModelDownloadSaveFailed45Tải xuống hoàn tất nhưng không thể lưu tệp vào đĩa.