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_0、iq4_nl)可減少長上下文的 RAM 使用量。 - 狀態持久化:可將對話歷程與 KV 快取儲存並還原至單一經過元資料驗證的檔案中。
- 進階 LLM 功能:包含推測解碼、上下文移位(自動移位)以及整合的 Jinja 聊天範本。
相關
- 專案
- 專案
- 專案
- Dispatch
- 專案