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).
- Blueprint
- C++

UPROPERTY()
URuntimeLocalLLM* LLM;
LLM = URuntimeLocalLLM::CreateRuntimeLocalLLM();
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.
- Blueprint
- C++
- UE 5.3 ve öncesi
- UE 5.4+
UE 5.3 ve öncesinde açılır menü görünmez, bu nedenle mevcut modelleri manuel olarak almanız gerekir. Get All Downloaded Model Metadata kullanarak 0. indeksteki (veya ihtiyacınız olan modeldeki) öğeyi alın, Get Model File Name'e geçirerek ad dizesini alın, ardından bunu Load Model (By Name)'e iletin.

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.

C++ dilinde, mevcut modelleri almak için GetAllDownloadedModelMetadata ve LoadModelByName'e aktarılacak adı almak için GetModelFileName kullanın:
FLLMInferenceParams Params;
Params.MaxTokens = 512;
Params.Temperature = 0.7f;
Params.SystemPrompt = TEXT("You are a helpful assistant.");
TArray<FLLMModelMetadata> DownloadedModels = URuntimeLLMLibrary::GetAllDownloadedModelMetadata();
if (DownloadedModels.Num() > 0)
{
const FLLMModelMetadata& Model = DownloadedModels[0]; // Select the first available model
FString ModelFileName = URuntimeLLMLibrary::GetModelFileName(Model);
LLM->LoadModelByName(FName(*ModelFileName), Params);
}
Dosya Yolundan Yükle
Bir .gguf dosyasına ait mutlak dosya yolundan doğrudan bir model yükleyin:
- Blueprint
- C++

FLLMInferenceParams Params;
LLM->LoadModelFromFile(TEXT("/path/to/model.gguf"), Params);
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.
- Blueprint
- C++
En basit varyant yalnızca bir URL alır - meta veriler dosya adından türetilir:

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

FLLMInferenceParams Params;
// Simple: URL only - metadata is derived from the filename
LLM->LoadModelFromURLSimple(
TEXT("https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf"), Params);
// With full metadata
FLLMModelMetadata Metadata;
Metadata.ModelFamilyName = TEXT("Llama3_2_1B_Instruct");
Metadata.ModelDisplayName = TEXT("Llama 3.2 1B Instruct");
Metadata.Description = TEXT("Meta's Llama 3.2 1B parameter instruction-tuned model. Lightweight and fast, suitable for simple tasks.");
Metadata.ParameterCount = TEXT("1B");
Metadata.Variant.VariantName = TEXT("Q4_K_M");
Metadata.Variant.ModelURL = TEXT("https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf");
Metadata.Variant.ApproximateSizeBytes = 776LL * 1024 * 1024;
Metadata.Variant.QuantizationType = ELLMQuantizationType::Q4_K_M;
LLM->LoadModelFromURL(Metadata, Params);
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.
- UE 5.4+
- UE 5.3 ve öncesi

UE 5.3 ve öncesinde açılır menü görünmez. Get All Downloaded Model Metadata kullanın, 0. indeksteki (veya ihtiyacınız olan modeldeki) öğeyi alın, Get Model File Name'e iletin, ardından bunu Load Model By Name (Async)'ye iletin.

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

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.
- Blueprint
- C++

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)
LLM->OnTokenGeneratedNative.AddLambda([](const FString& Token)
{
});
LLM->OnGenerationCompleteNative.AddLambda(
[](const FString& FullResponse, float DurationSeconds, int32 TokensGenerated, float TokensPerSecond)
{
});
LLM->OnPromptProcessedNative.AddLambda([](int32 TokensProcessed, float TokensPerSecond)
{
});
LLM->OnErrorNative.AddLambda([](ELLMErrorCode ErrorCode)
{
});
LLM->OnModelLoadedNative.AddLambda([](const FLLMModelMetadata& ModelMetadata)
{
});
LLM->OnModelUnloadedNative.AddLambda([]()
{
});
LLM->OnDownloadProgressNative.AddLambda([](float Progress, int64 BytesReceived, int64 TotalBytes)
{
});
LLM->OnModelDownloadedNative.AddLambda([](const FString& FilePath, const FLLMModelMetadata& ModelMetadata)
{
});
LLM->OnConversationSavedNative.AddLambda([](const FString& FilePath)
{
});
LLM->OnConversationLoadedNative.AddLambda([](const FLLMConversationSnapshot& Snapshot)
{
});
LLM->OnHistorySummarizedNative.AddLambda([](int32 MessagesRemoved, int32 TokensSaved, const FString& Summary)
{
});
Mesaj Gönder
Bir model yüklendikten sonra, bir yanıt oluşturmak için bir kullanıcı mesajı gönderin:
- Blueprint
- C++

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

LLM->SendMessage(TEXT("Tell me a short story about a brave knight."));
// With a custom system prompt override
LLM->SendMessageWithSystemPrompt(
TEXT("Translate this to French: Hello world"),
TEXT("You are a professional translator.")
);
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:

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.
- Blueprint
- C++

Bir URL yalnızca varyantı da mevcuttur:

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

// With full metadata
FLLMModelMetadata Metadata;
Metadata.ModelFamilyName = TEXT("Llama3_2_1B_Instruct");
Metadata.ModelDisplayName = TEXT("Llama 3.2 1B Instruct");
Metadata.Description = TEXT("Meta's Llama 3.2 1B parameter instruction-tuned model. Lightweight and fast, suitable for simple tasks.");
Metadata.ParameterCount = TEXT("1B");
Metadata.Variant.VariantName = TEXT("Q4_K_M");
Metadata.Variant.ModelURL = TEXT("https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf");
Metadata.Variant.ApproximateSizeBytes = 776LL * 1024 * 1024;
Metadata.Variant.QuantizationType = ELLMQuantizationType::Q4_K_M;
LLM->DownloadModel(Metadata);
// URL only
LLM->DownloadModelFromURL(
TEXT("https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf"));
OnDownloadProgress temsilcisi, indirme sırasında ilerlemeyi bildirir. OnModelDownloaded ise dosya diske kaydedildiğinde tetiklenir.
Devam eden bir indirmeyi iptal etmek için:
- Blueprint
- C++

LLM->CancelDownload();
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:
- Blueprint
- C++

LLM->StopGeneration();
Konuşma Bağlamını Sıfırla
Yeni bir sohbet başlatmak için sohbet geçmişini temizleyin:
- Blueprint
- C++

// Keep the system prompt
LLM->ResetContext(true);
// Clear everything including the system prompt
LLM->ResetContext(false);
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:
- Blueprint
- C++

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.
// Excludes system prompt by default
LLM->SaveConversationToFile(TEXT("/path/to/conversation.json"));
// Include the system prompt in the file
LLM->SaveConversationToFile(TEXT("/path/to/conversation.json"), /*bIncludeSystemPrompt=*/ true);
Dosyadan Yükle
Bir konuşmayı bir JSON dosyasından geri yükleyin:
- Blueprint
- C++

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.
// Keep current system prompt, swap in the saved history
LLM->LoadConversationFromFile(TEXT("/path/to/conversation.json"));
// Replace the system prompt with whatever's in the file
LLM->LoadConversationFromFile(TEXT("/path/to/conversation.json"), /*bPreserveCurrentSystemPrompt=*/ false);
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.
- Blueprint
- C++
Tipik çoklu NPC deseni, NPC yöneticinizde veya oyun durumunuzda bir İsim → LLM Konuşma Anlık Görüntüsü Haritası kullanır:
- Bir NPC'den ayrılırken:
Save Conversation To Memory'i çağırın, ardındanOn 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. - Başka bir NPC'ye geçerken: haritanızdan anlık görüntüyü okuyun ve
Preserve Current System PromptetkinkenLoad Conversation From Memory'i çağırın.

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.
// Maintain per-NPC snapshots
UPROPERTY()
TMap<FName, FLLMConversationSnapshot> NPCMemories;
// Save the currently active NPC's memory before switching
LLM->OnConversationLoadedNative.AddLambda([this](const FLLMConversationSnapshot& Snapshot)
{
NPCMemories.Add(CurrentNPC, Snapshot);
});
LLM->SaveConversationToMemory();
// Activate another NPC's memory
if (const FLLMConversationSnapshot* Found = NPCMemories.Find(NextNPC))
{
LLM->LoadConversationFromMemory(*Found, /*bPreserveCurrentSystemPrompt=*/ true);
CurrentNPC = NextNPC;
}
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
- Blueprint
- C++

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

FLLMSummarizationConfig Config = URuntimeLocalLLM::GetDefaultSummarizationConfig();
Config.TriggerTokenThreshold = 1500;
Config.KeepRecentMessageCount = 4;
Config.MinMessagesToSummarize = 6;
LLM->EnableAutoSummarization(Config);
Etkinleştirildiğinde, özetleme her SendMessage çağrısından önce gerektiğinde otomatik olarak çalışır, başka bir işlem gerekmez.
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ı
| Parametre | Type | Varsayılan | Açıklama |
|---|---|---|---|
| Tetikleyici Token Eşiği | int32 | 1500 | Ö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ı Koru | int32 | 4 | En son N mesaj asla özetlenmez, böylece anlık konuşma bütünlüğü korunur. |
| Özetlenecek Minimum Mesaj Sayısı | int32 | 6 | Bu kadar eski mesaj uygun olduğunda özetlemeyi atla (anlamsız küçük özetlerden kaçınmak için) |
| Maksimum Özet Tokenları | int32 | 256 | Oluşturulan özetin token cinsinden maksimum uzunluğu |
| Sistem İstemini Koru | bool | true | Her 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 Öneki | FString | "[Ö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.
- Blueprint
- C++

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.

LLM->SummarizeNow();
LLM->OnHistorySummarizedNative.AddLambda(
[](int32 MessagesRemoved, int32 TokensSaved, const FString& Summary)
{
UE_LOG(LogTemp, Log, TEXT("Summarized %d messages, saved %d tokens"), MessagesRemoved, TokensSaved);
});
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.
- Blueprint
- C++

LLM->GetUsedContextLengthNative([](int32 UsedTokens)
{
UE_LOG(LogTemp, Log, TEXT("Used context: %d tokens"), UsedTokens);
});
Otomatik Özetlemeyi Devre Dışı Bırak
- Blueprint
- C++

LLM->DisableAutoSummarization();
Devre dışı bırakmak, sohbete zaten uygulanmış özetleri geri almaz.
Ö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:
- Blueprint
- C++

LLM->UnloadModel();
Sorgu Durumu
LLM örneğinin mevcut durumunu kontrol edin:
- Blueprint
- C++

- 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
// Is Model Loaded - true if a model is ready for inference
if (LLM->IsModelLoaded())
{
FLLMModelMetadata Metadata = LLM->GetLoadedModelMetadata();
UE_LOG(LogTemp, Log, TEXT("Model: %s"), *Metadata.ModelDisplayName);
FLLMInferenceParams Params = LLM->GetAppliedInferenceParams();
UE_LOG(LogTemp, Log, TEXT("Context size: %d"), Params.ContextSize);
}
// Is Generating - true if token generation is currently active
if (LLM->IsGenerating())
{
UE_LOG(LogTemp, Log, TEXT("Generation in progress..."));
}
// Is Busy - true if any operation (loading, generating, downloading) is active
if (LLM->IsBusy())
{
UE_LOG(LogTemp, Log, TEXT("LLM is busy, deferring request"));
}
// Is Downloading - true if a model download is currently in progress
if (LLM->IsDownloading())
{
UE_LOG(LogTemp, Log, TEXT("Model download in progress..."));
}
// Safe to send a new message or load a different model
if (!LLM->IsGenerating() && !LLM->IsBusy())
{
UE_LOG(LogTemp, Log, TEXT("LLM is idle and ready"));
}
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
- Blueprint
- C++


TArray<FName> ModelNames = URuntimeLLMLibrary::GetDownloadedModelNames();
TArray<FLLMModelMetadata> AllModels = URuntimeLLMLibrary::GetAllDownloadedModelMetadata();
for (const FLLMModelMetadata& Model : AllModels)
{
UE_LOG(LogTemp, Log, TEXT("Model: %s (%s)"), *Model.ModelDisplayName, *Model.Variant.VariantName);
}
Bir Modelin Disk Üzerinde Olup Olmadığını Kontrol Et
- Blueprint
- C++

bool bExists = URuntimeLLMLibrary::IsModelOnDisk(Metadata);
Model dosya yolunu al
- Blueprint
- C++

FString FilePath = URuntimeLLMLibrary::GetModelFilePath(Metadata);
Model Dosyalarını Sil
- Blueprint
- C++

bool bDeleted = URuntimeLLMLibrary::DeleteModelFiles(Metadata);
Önceden Tanımlanmış ve Mevcut Modelleri Alın
- Blueprint
- C++


// Built-in catalog only
TArray<FLLMModelFamily> Predefined = URuntimeLLMLibrary::GetPredefinedModels();
// Catalog + custom imports
TArray<FLLMModelFamily> All = URuntimeLLMLibrary::GetAllAvailableModels();
Bir URL'den Meta Veri Oluşturma
Bir ham URL'den model meta verisi oluşturun (alanlar dosya adından türetilir):
- Blueprint
- C++

FLLMModelMetadata Metadata = URuntimeLocalLLM::MakeMetadataFromURL(
TEXT("https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf")
);
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.

İ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.

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).

Hata Kodları Referansı
| Code | Değer | Açıklama |
|---|---|---|
| Bilinmiyor | 0 | Belirtilmemiş bir hata |
| ModelLoadFailed | 10 | GGUF dosyası yüklenemedi (bozuk dosya, uyumsuz format vb.) |
| ContextCreateFailed | 11 | Çıkarım bağlamı oluşturulamadı |
| ModelNotLoaded | 20 | Model yüklenmeden çıkarım yapılmaya çalışıldı. |
| ChatTemplateBaşarısız | 21 | Model sohbet şablonu uygulanamadı |
| TokenizationFailed | 22 | Giriş metni tokenize edilemedi. |
| ContextOverflow | 23 | İstem + bağlam, yapılandırılmış bağlam boyutunu aşıyor. |
| PromptDecodeFailed | 24 | İstem belirteçlerinin kod çözümü başarısız oldu. |
| ContextTooFullToGenerate | 25 | Çıktı üretmek için yeterli bağlam alanı kalmadı. |
| GenerationDecodeFailed | 30 | Bir token oluşturma sırasında çözülemedi. |
| GenerationTruncated | 31 | Üretim, maksimum token sınırına ulaşıldığı için durduruldu. |
| LLMInstanceNull | 40 | LLM örneği null veya geçersiz. |
| ModelNotFoundOnDisk | 41 | Beklenen yolda model dosyası bulunamadı. |
| ModelURLEmpty | 42 | Boş bir URL ile indirme isteği yapıldı. |
| ModelDownloadCancelled | 43 | İndirme iptal edildi. |
| ModelDownloadEmptyData | 44 | İndirme tamamlandı ancak yanıt gövdesi boştu. |
| ModelDownloadSaveFailed | 45 | İndirme tamamlandı ancak dosya diske kaydedilemedi. |