deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

llamadart 0.11, offline model yükleme, sohbet geçmişi ve runtime kontrollerini tek bir Dart API'de topluyor

Dart ve Flutter paketi llamadart 0.11, tek çağrıyla model yükleyici, geçmişi hatırlayan sohbet oturumları, kesintisiz model değiştirme ve offline yapay zeka uygulamaları için runtime yetenek raporlaması sunuyor.

llamadart 0.11, offline model yükleme, sohbet geçmişi ve runtime kontrollerini tek bir Dart API'de topluyor

Yükleme artık tek bir çağrı

dev.to'da yayımlanan bir yazıya göre llamadart, bir yazım asistanına offline mod kazandırma girişimi olarak doğdu — uçuşta, dengesiz bir bağlantıda ya da giden API erişiminin engellendiği bir ağda kullanılabilecek bir şey. Yazıda belirtildiği üzere 0.11 sürümü, yeni yeteneklerden çok günlük entegrasyon işini daha küçük ve daha net bir API'de toplamakla ilgili.

En büyük değişiklik model yüklemesi. 0.10'da bir uygulama, bir backend etrafında bir engine oluşturuyor ve ardından ayrı bir load metodu çağırıyordu. 0.11'de LlamaEngine.load, ModelSource'u yerel bir yol, bir URL veya bir Hugging Face referansı olabilen bir LlamaModel kabul ediyor ve kullanıma hazır bir engine döndürüyor. Sahiplik artık açık: yükleme bir hata fırlatırsa, oluşturulan engine ve backend zaten dispose edilmiş oluyor; başarı durumunda tamamlanmış engine'in sahibi çağıran taraftır. İndirme ilerlemesi ve iptal, aynı işlem üzerinden onProgress ve indirme seçenekleriyle ortaya çıkıyor; böylece kullanıcının ilk üretilen token'dan önce gördüğü indirme arayüzü, yüklemenin kendisiyle bir yaşam döngüsünü paylaşıyor.

Yazıda ayrıca paketin native build hook'unun runtime varlıklarını çözdüğü, yani yaygın kurulum için yerel bir C++ toolchain'e gerek kalmadığı belirtiliyor. Model dosyaları ise uygulama düzeyinde bir sorumluluk olmaya devam ediyor.

Prompt'tan sohbet'e

'Kısalt' gibi bir devam isteği, yalnızca önceki etkileşim hâlâ bağlam içindeyse işe yarar. ChatSession bu geçmişi tutuyor; yeni pratik metot session.send tamamlanmış yanıtı döndürüyor ve session.create üzerinden yapılan streaming artık metni, bir chunk'ın choices dizisine uzanmak yerine chunk.text olarak ortaya koyuyor.

Oturum ayrıca bağlam sınırlarını da yönetiyor: system prompt'u korurken bağlam bütçesi içinde kalmak için en eski tur atılıyor. Kendi transkriptlerini tutan uygulamalar oturumu atlayıp doğrudan engine'e tam bir mesaj listesi verebilir.

Yazıdaki örnek, bilinçli olarak çok küçük bir model yüklüyor — Q2_K quantization'da GGUF formatında SmolLM2-135M-Instruct, 1024 token'lık bir bağlam ve GPU katmanı olmadan — ve yazar, talimatları gerçekten iyi takip eden bir model seçmenin ayrı bir değerlendirme görevi olduğunu dikkatle belirtiyor.

Kararmadan model değiştirme

Model seçicileri bir yaşam döngüsü sorunu doğuruyor: yerine yenisini indirmeden önce mevcut modeli kaldırmak, yavaş bir bağlantıda kullanıcıyı hiçbir seçeneği olmadan bırakıyor. dev.to'da açıklandığı gibi, native hedeflerde setModel, yenisinin dosyaları indirilirken mevcut modeli yüklü tutuyor; bu indirme başarısız olursa veya iptal edilirse eski model yerinde kalıyor. Sınır dürüstçe belgelenmiş — sonraki yükleme aşamasında bir hata yine de hiçbir şeyin yüklenmemesiyle sonuçlanabilir ve web runtime'ları indirmeden önce unload ediyor.

Yazı ayrıca yerleştirme önerisi de veriyor: bir Flutter engine'i build() içinde değil, bir service, provider veya state nesnesinde yaşamalı ve sahibi işini bitirdiğinde dispose edilmelidir.

Daha fazla runtime, açık farklar

llamadart özgün llama.cpp yolunu aşmış durumda. LiteRT-LM desteği 0.7'de geldi; 0.8, Apple runtime yardımcılarını çekirdek paketten ayırdı, böylece saf Dart kullanıcıları Flutter SDK'sına zorlanmıyor; 0.10, opsiyonel bir stable-diffusion.cpp runtime'ı üzerinden önizleme amaçlı görsel üretim ekledi.

Uygulamaların bu farklar üzerinde akıl yürütebilmesi için 0.11, etkin runtime'ı tanımlayan engine.runtime ve hangi işlemleri desteklediğini bildiren await engine.capabilities sunuyor — örneğin bir görsel ekleme düğmesinin anlamlı olup olmadığı gibi. ModelParams.device, paylaşılan CPU, GPU veya NPU seçimi sağlıyor: açık bir istek ya o cihazda çalışıyor ya da desteklenmiyor diye hata veriyor; auto ise runtime'ın varsayılanına bırakıyor.

Sınırlar saklanmak yerine açıkça belirtilmiş: Android'in llama.cpp Vulkan yolu deneysel ve cihaza bağımlı, web desteği deneysel ve otomatik tool döngüleri, token limiti kesilmesini güvenilir biçimde bildiremedikleri için sabitlenmiş LiteRT-LM runtime'larını reddediyor. Çalıştırmak için llamadart: ^0.11.0 ile eklenen Dart 3.10.7 veya daha yeni bir sürüm gerekiyor.

Neden önemli

Cihaz üstü yapay zeka haberlerinin çoğu hangi modelin belleğe sığdığına odaklanıyor; ama dev.to'daki yazı, offline yapay zeka sevkiyatının çoğunlukla uygulama mühendisliği olduğunu hatırlatan yararlı bir kaynak: iptal edilebilen indirmeler, kaynakları deterministik olarak sahiplenen engine'ler, bir bağlam penceresine uyan sohbet durumu ve gerçekten farklı davranan runtime'lar arası yetenek kontrolleri. Hata modlarını açık hale getirerek — kendi kendini dispose eden bir yükleme, eski modeli sıcak tutan bir model değişimi, sessizce geri düşmek yerine sesli biçimde başarısız olan bir cihaz isteği — llamadart 0.11, hangi stack'i kullanırsa kullansın yerel çıkarımı bir uygulamaya bağlayan her geliştiricinin ödünç alabileceği bir örüntü sunuyor.

  • #dart
  • #flutter
  • #local-ai
  • #on-device-inference
  • #llama-cpp

İlgili yazılar