netdur/llama_cpp_dart

dart binding for llama.cpp

解決的問題

llama_cpp_dart 提供了 llama.cpp 的高性能 Dart FFI 綁定,特別針對在 iOS 與 Android 的 Flutter 移動應用中直接整合大型語言模型(LLMs)進行優化。它透過提供適用於各種行動平台(包括對 Snapdragon Hexagon NPU 的專用支援)的預建二進位檔,消除了手動管理原生建置工具鏈(如 CMake 或 Android NDK)的複雜性。

工作原理

此專案扮演 Dart 與 C++ llama.cpp 庫之間的橋樑。它使用工作 isolate 在背景執行推論,確保在產生 token 時使用者介面(UI)仍能保持回應性。支援透過 Dart Streams 實現串流輸出,並透過 mtmd 庫處理多模態輸入(影像與音訊)。為在資源受限的行動裝置上管理記憶體,它實作 KV 快取量化,使更長的上下文能適應有限的 RAM。

適用對象

希望在行動應用中嵌入本地、裝置端 AI 功能(如聊天、視覺與音訊處理)而無需依賴雲端 API 的 Flutter 開發者。

主要亮點

  • 行動端優先加速:支援 Apple Metal、Android CPU 以及 Snapdragon Hexagon NPU/OpenCL。
  • 背景推論:使用專用的 LlamaEngine 工作 isolate,防止 UI 阻塞。
  • 多模態支援:可直接在模型內處理影像與音訊位圖。
  • 記憶體優化:KV 快取量化(如 q8_0iq4_nl)可減少長上下文的 RAM 使用量。
  • 狀態持久化:可將對話歷程與 KV 快取儲存並還原至單一經過元資料驗證的檔案中。
  • 進階 LLM 功能:包含推測解碼、上下文移位(自動移位)以及整合的 Jinja 聊天範本。

相關

  • 專案
  • 專案
  • 專案
  • Dispatch
  • 專案