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
- 项目