Ana içeriğe geç

Eklentinin nasıl kullanılacağı

Bu kılavuz, tam çalışma zamanı API'sini kapsar: bir LLM örneği oluşturma, modeller yükleme, mesajlar gönderme, çalışma zamanında modeller indirme, durum yönetimi ve yardımcı işlevler.

Bir LLM Örneği Oluşturun

Öncelikle bir Runtime Local LLM nesnesi oluşturun. Erken çöp toplamayı önlemek için ona bir referans tutun (örneğin Blueprint'lerde bir değişken veya C++'ta bir UPROPERTY olarak).

Create Runtime Local LLM

Bir Model Yükle

Mesaj göndermeden önce bir model yüklemeniz gerekir. Eklenti, iş akışınıza bağlı olarak çeşitli yükleme yöntemleri sunar.

İsme Göre Yükle

Modelleri editör ayarları paneli üzerinden yönetiyorsanız, Load Model (By Name) kullanın.

UE 5.4 ve sonrasında, Load Model (By Name) diskteki tüm modellerin bir açılır listesini sunar - yüklemek istediğiniz modeli seçmeniz yeterlidir.

Load Model By Name UE 5.4+

Dosya Yolundan Yükle

Bir .gguf dosyasına ait mutlak dosya yolundan doğrudan bir model yükleyin:

Load Model From File

URL'den Yükle (İndir ve Yükle)

Bir modeli bir URL'den indir (henüz diskte yoksa) ve otomatik olarak yükle. Dosya yerel olarak zaten mevcutsa, indirme atlanır.

En basit varyant yalnızca bir URL alır - meta veriler dosya adından türetilir:

Load Model From URL Simple

Ayrıca daha zengin model bilgisi için tam model meta verileriyle birlikte Load Model From URL'yi de kullanabilirsiniz:

Load Model From URL

Asenkron Yükleme (Blueprint)

Yük tamamlama ve hataları manuel olarak temsilci bağlamak yerine çıktı pinleri aracılığıyla ele almak için iki adet async düğümü mevcuttur.

Load Model By Name (Async), Load Model (By Name) işlevini yansıtır - UE 5.4+ sürümünde, diskteki tüm modellerin bir açılır listesini sunar.

Load Model By Name Async UE 5.4+

Load Model From File (Async) mutlak bir dosya yolu alır:

Load Model From File Async

Olayları Bağla

LLM örneğinin delegelerine bağlanarak geri çağrımlar alın. Tüm geri çağrımlar oyun iş parçacığında tetiklenir.

Bind Events

Mevcut delegeler:

  • Token Oluşturulduğunda: Her çıktı token'ı için tetiklenir
  • Oluşturma Tamamlandığında: Tam yanıt hazır olduğunda, süre, token sayısı ve saniye başına token ile tetiklenir
  • İstek İşlendiğinde: Giriş istemi işlendikten sonra, oluşturma başlamadan önce tetiklenir
  • Hata Durumunda: Herhangi bir işlem sırasında hata oluşursa tetiklenir
  • Model Yüklendiğinde: Bir model yüklemeyi tamamladığında tetiklenir
  • Model Kaldırıldığında: Model kaldırıldığında tetiklenir
  • İndirme İlerlemesinde: Model indirme sırasında periyodik olarak tetiklenir (ilerleme oranı, alınan bayt sayısı, toplam bayt)
  • Model İndirildiğinde: Yalnızca indirme işlemi tamamlandığında tetiklenir
  • Konuşma Kaydedildiğinde: Bir konuşma JSON dosyasına yazıldığında tetiklenir
  • Konuşma Yüklendiğinde: Bir konuşma bir dosyadan veya bellek anlık görüntüsünden yüklendiğinde tetiklenir
  • Geçmiş Özetlendiğinde: Otomatik özetleme eski mesajları sıkıştırdığında tetiklenir (mesaj sayısı, kaydedilen token ve özeti raporlar)

Mesaj Gönder

Bir model yüklendikten sonra, bir yanıt oluşturmak için bir kullanıcı mesajı gönderin:

Send Message

Belirli bir mesaj için sistem yönergesini geçersiz kılmak üzere Send Message With System Prompt'u kullanın:

Send Message With System Prompt

Token'lar üretildikçe OnTokenGenerated üzerinden akar. Üretim tamamlandığında, OnGenerationComplete tam yanıt, süre, token sayısı ve saniye başına token ile tetiklenir.

Asenkron Mesaj Gönder (Blueprint)

Send LLM Message (Async) düğümü, token'lar, tamamlama ve hatalar için özel çıkış pinleri sağlar:

Async Send Message

Modelleri Çalışma Zamanında İndir

Yukarıda açıklanan indir ve yükle akışının yanı sıra, bir modeli yüklemeden diske indirebilirsiniz. Bu, bir yükleme ekranında veya ayarlar menüsünde modelleri önceden önbelleğe almak için kullanışlıdır.

Download Model

Bir URL yalnızca varyantı da mevcuttur:

Download Model From URL

Download LLM Model (Async) ve Download LLM Model From URL (Async) düğümleri, ilerleme, tamamlanma ve hatalar için çıkış pinleri sağlar:

Async Download Model

OnDownloadProgress temsilcisi, indirme sırasında ilerlemeyi bildirir. OnModelDownloaded ise dosya diske kaydedildiğinde tetiklenir.

Devam eden bir indirmeyi iptal etmek için:

Cancel Download

Eklenti, yinelenen indirmeleri otomatik olarak engeller - aynı model için devam eden bir indirme zaten varsa, sonraki çağrılar yok sayılır.

Durdurma Oluşturma

Devam eden bir oluşturmayı kesmek için:

Stop Generation

Konuşma Bağlamını Sıfırla

Yeni bir sohbet başlatmak için sohbet geçmişini temizleyin:

Reset Context

Konuşmaları Kaydet ve Yükle

Eklenti, konuşma geçmişini diskte JSON olarak kalıcı hale getirebilir veya bellekte anlık görüntü olarak tutabilir. Varsayılan olarak, sistem istemi kayıtlardan hariç tutulur, böylece aynı konuşma geçmişi, farklı sistem kurallarına sahip farklı LLM örneklerine yüklenebilir. Bu, her karakterin kendi belleğine sahip olduğu ancak sistem talimatlarını paylaşabildiği veya farklılaştırabildiği çoklu NPC senaryoları için kullanışlıdır.

Dosyaya Kaydet

Mevcut konuşmayı diske bir JSON dosyasına kaydedin:

Save Conversation To File

Include System Prompt parametresi, sistem mesajının (varsa) dosyaya yazılıp yazılmayacağını kontrol eder. NPC'ler arasında taşınabilirlik için varsayılan değer false'dur.

Konuşma Kaydedildiğinde dosya yazıldığında tetiklenir.

Dosyadan Yükle

Bir konuşmayı bir JSON dosyasından geri yükleyin:

Load Conversation From File

Preserve Current System Prompt parametresi (varsayılan true), kaydedilmiş konuşma geçmişini değiştirirken mevcut sistem yönergesini korur. Bu, NPC bellek değişimi için önerilen ayardır.

Konuşma Yüklendiğinde yüklenen anlık görüntüyle tetiklenir.

Bellek İçi Anlık Görüntüler (Çoklu NPC İş Akışı)

Oyun sırasında hızlı NPC değişimi için, mevcut konuşmayı diske yazmak yerine belleğe anlık olarak kaydedin. Bu desen, tek bir yüklenmiş modeli paylaşan çok sayıda NPC'yi yönetmek için önerilen yöntemdir.

Tipik çoklu NPC deseni, NPC yöneticinizde veya oyun durumunuzda bir İsim → LLM Konuşma Anlık Görüntüsü Haritası kullanır:

  1. Bir NPC'den ayrılırken: Save Conversation To Memory'i çağırın, ardından On Conversation Loaded (bu aynı zamanda anlık görüntü teslimi için de tetiklenir) içinde, anlık görüntüyü NPC adına göre anahtarlanmış haritanızda saklayın.
  2. Başka bir NPC'ye geçerken: haritanızdan anlık görüntüyü okuyun ve Preserve Current System Prompt etkinken Load Conversation From Memory'i çağırın.

Multi NPC Pattern

Sistem istemi değişimler arasında yüklü kaldığından, her NPC'nin "kişiliği" ya NPC'ye özel bir sistem isteminde kodlanabilir (bir değişimden sonra güncellemek için Send Message With System Prompt'u bir kez çağırın) ya da tüm NPC'ler arasında paylaşılabilir.

ipucu

Anlık görüntüler modelden bağımsızdır - KV önbellek durumunu değil, mesajları saklarlar. Aynı anlık görüntü farklı bir modele yüklenebilir (ancak konuşma tarzı değişebilir). Anlık görüntüdeki OriginModelFamilyName alanı, uyumluluğu zorunlu kılmak isterseniz hangi modelin ürettiğini kontrol etmenizi sağlar.

Otomatik Bağlam Özetleme

Uzun sohbetler, modelin bağlam penceresini aşar ve bu normalde geçmişi kesintiye uğratır veya hatalara neden olur. Eklentinin otomatik özetleme özelliği, bağlam kullanımını izler ve yapılandırılmış bir eşik aşıldığında, bir sonraki yanıt oluşturulmadan önce eski mesajları tek bir "bellek" mesajında özetler. Bu, süresiz olarak uzun sohbetlerde token maliyetlerini ve gecikmeyi sabit tutar.

Özetleme, yüklenen aynı model tarafından gerçekleştirilir, bu nedenle ikinci bir modele veya API çağrısına gerek yoktur.

Otomatik Özetlemeyi Etkinleştir

Enable Auto Summarization

Varsayılan başlangıç ayarları için Get Default Summarization Config kullanın, ardından gerektiği gibi ayarlayın:

Get Default Summarization Config

Etkinleştirildiğinde, özetleme her SendMessage çağrısından önce gerektiğinde otomatik olarak çalışır, başka bir işlem gerekmez.

ipucu

Varsayılan olarak, otomatik özetleme yeni bir mesaj işlenmeden önce çalışır, çünkü bağlamı yeniden oluşturması gerekir ve bu, yanıt oluşturma ile aynı anda güvenli bir şekilde gerçekleşemez. Bunun yerine, oyuncu okurken ve yazarken yanıttan sonra çalışmasını istiyorsanız, otomatik özetlemeyi devre dışı bırakın ve manuel olarak yönlendirin: On Generation Complete olayına bağlanın, Get Used Context Length değerini eşiğinize göre kontrol edin ve aşıldıysa Summarize Now fonksiyonunu çağırın. Summarize Now aynı arka plan görev kuyruğunda sıraya alındığından, yanıt tamamlandıktan hemen sonra ve bir sonraki mesaj işlenmeden önce çalışacaktır.

Yapılandırma Referansı

ParametreTypeVarsayılanAçıklama
Tetikleyici Token Eşiğiint321500Özetleme, kullanılan bağlam tokenları bu değeri aştığında çalışır. Bunu Context Size değerinize göre ayarlayın; %60-75 civarı iyi bir kuraldır.
Son Mesaj Sayısını Koruint324En son N mesaj asla özetlenmez, böylece anlık konuşma bütünlüğü korunur.
Özetlenecek Minimum Mesaj Sayısıint326Bu kadar eski mesaj uygun olduğunda özetlemeyi atla (anlamsız küçük özetlerden kaçınmak için)
Maksimum Özet Tokenlarıint32256Oluşturulan özetin token cinsinden maksimum uzunluğu
Sistem İstemini KorubooltrueHer zaman sistem mesajını (index 0) olduğu gibi koru
Özetleme TalimatıFString(see default)Özete üretmek için modele gönderilen talimat
Özet Mesaj ÖnekiFString"[Önceki konuşmanın uzun süreli hafıza özeti]: "Asistan rolündeki bir bellek mesajı olarak sohbete eklendiğinde, oluşturulan özete ön ek olarak eklenir.

Manuel Tetikleme ve Özetler için Dinleme

Eşiği ne olursa olsun, özetlemeyi istediğiniz zaman manuel olarak tetikleyebilirsiniz.

Summarize Now

On History Summarized öğesine bağlanarak bir özetleme geçişi tamamlandığında bildirim alın. Olay, kaç mesajın kaldırıldığını, kaç token'ın tasarruf edildiğini ve oluşturulan özet metnini raporlar; bu, sohbet arayüzünde ince bir gösterge göstermek için kullanışlıdır.

On History Summarized

Kullanılan Bağlam Uzunluğu Sorgulanıyor

Get Used Context Length kullanarak modelin bağlam pencerisinde şu anda kaç token bulunduğunu kontrol edin. Bu değer, yerleşik otomatik özetleme tetikleyicisinin Trigger Token Threshold ile karşılaştırdığı değerle aynıdır.

Get Used Context Length

Otomatik Özetlemeyi Devre Dışı Bırak

Disable Auto Summarization

Devre dışı bırakmak, sohbete zaten uygulanmış özetleri geri almaz.

not

Özetleme, arka plan iş parçacığında çalışırken bir an sürer (model özeti oluşturuyor). Bu dahili oluşturma sırasında token akışı geri çağrımları bastırılır, böylece sohbet arayüzünüzde görünmezler. On History Summarized, birleştirme tamamlandığında tetiklenir.

Bir Modeli Kaldır

Bir model artık gerekli olmadığında kaynakları serbest bırakma:

Unload Model

Sorgu Durumu

LLM örneğinin mevcut durumunu kontrol edin:

Query State

  • Model Yüklendi: Bir model çıkarım için hazırsa True
  • Üretiliyor: Üretim devam ediyorsa True
  • Meşgul: Herhangi bir işlem (yükleme, üretim, indirme) aktifse True
  • İndiriliyor: Bir model indirmesi devam ediyorsa True
  • Yüklenen Model Meta Verilerini Al: Mevcut modelin meta verilerini döndürür
  • Uygulanan Çıkarım Parametrelerini Al: Yükleme sırasında uygulanan parametreleri döndürür

Model Kütüphanesi Fonksiyonları

Disk üzerindeki model dosyalarını yönetmek için bir dizi statik yardımcı işlev sağlanmıştır. Bunlar, model seçim arayüzü oluşturmak veya çalışma zamanında model kullanılabilirliğini kontrol etmek için kullanışlıdır.

İndirilen Model Adlarını / Meta Verileri Al

Get Downloaded Model Names

Get All Downloaded Model Metadata

Bir Modelin Disk Üzerinde Olup Olmadığını Kontrol Et

Is Model On Disk

Model dosya yolunu al

Get Model File Path

Model Dosyalarını Sil

Delete Model Files

Önceden Tanımlanmış ve Mevcut Modelleri Alın

Get Predefined Models

Get All Available Models

Bir URL'den Meta Veri Oluşturma

Bir ham URL'den model meta verisi oluşturun (alanlar dosya adından türetilir):

Make Metadata From URL

Yardımcı Fonksiyonlar

Biçimlendirme ve hata görüntüleme için bir dizi yardımcı işlev sağlanmıştır.

Baytları Okunabilir Dizeye Çevir

Bir bayt sayısını insan tarafından okunabilir bir dizeye dönüştürür (ör. "4.07 GB"). Model boyutlarını kullanıcı arayüzünde görüntülemek için kullanışlıdır.

Bytes to Readable String

İndirme İlerlemesini Biçimlendir

"1.23 GB / 4.07 GB (%30.2)" şeklinde bir indirme ilerleme dizesi biçimlendirir. Toplam boyut bilinmiyorsa, yalnızca alınan miktarı döndürür.

Format Download Progress

Hata Açıklamasını Al / Hata Kodu Dizesi

Get LLM Error Description bir hata kodu için insan tarafından okunabilir bir metin açıklaması döndürür. Get LLM Error Code String ise enum değer adını bir dize olarak döndürür (günlüğe kaydetme için kullanışlıdır).

Get Error Description

Hata Kodları Referansı

CodeDeğerAçıklama
Bilinmiyor0Belirtilmemiş bir hata
ModelLoadFailed10GGUF dosyası yüklenemedi (bozuk dosya, uyumsuz format vb.)
ContextCreateFailed11Çıkarım bağlamı oluşturulamadı
ModelNotLoaded20Model yüklenmeden çıkarım yapılmaya çalışıldı.
ChatTemplateBaşarısız21Model sohbet şablonu uygulanamadı
TokenizationFailed22Giriş metni tokenize edilemedi.
ContextOverflow23İstem + bağlam, yapılandırılmış bağlam boyutunu aşıyor.
PromptDecodeFailed24İstem belirteçlerinin kod çözümü başarısız oldu.
ContextTooFullToGenerate25Çıktı üretmek için yeterli bağlam alanı kalmadı.
GenerationDecodeFailed30Bir token oluşturma sırasında çözülemedi.
GenerationTruncated31Üretim, maksimum token sınırına ulaşıldığı için durduruldu.
LLMInstanceNull40LLM örneği null veya geçersiz.
ModelNotFoundOnDisk41Beklenen yolda model dosyası bulunamadı.
ModelURLEmpty42Boş bir URL ile indirme isteği yapıldı.
ModelDownloadCancelled43İndirme iptal edildi.
ModelDownloadEmptyData44İndirme tamamlandı ancak yanıt gövdesi boştu.
ModelDownloadSaveFailed45İndirme tamamlandı ancak dosya diske kaydedilemedi.