llama.rn

在 React Native 应用里跑本地大模型,离线也能对话

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开发框架 🍴 复刻 132 🐛 待处理 18 👀 关注 13
GitHub ↗
GitHub 星标 ★ 1065
维护状态 活跃
是否开源 开源
定价模式 🏷️完全免费 开源免费,遵循 MIT 许可证

项目预览

llama.rn 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开发框架
开发团队mybigday
定价模式🏷️完全免费
价格说明开源免费,遵循 MIT 许可证
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言C
技术栈/模型android,ios,llama,llama-cpp,llm,react-native
GitHub 星标★ 1065
上线时间2023-08-02 00:00:00
代码更新2026-11-02
仓库体积20.9 MB
本站数据更新2026-11-03
维护状态活跃
收录时间2026-09-16
浏览次数1

项目介绍

llama.rn 是 llama.cpp 的 React Native 绑定库,让开发者能在 iOS 和 Android 原生应用里直接运行本地大语言模型,无需依赖云端 API。它把 llama.cpp 的 C/C++ 推理能力封装成 JavaScript/TypeScript 接口,支持加载 GGUF 格式模型、流式生成 token、多轮对话上下文管理,以及可调用的底层参数(如温度、top-k、线程数)。核心价值在于把端侧 LLM 推理带进跨平台移动开发流程,开发者用熟悉的 React Native 技术栈就能做出离线可用的 AI 聊天、文本补全、摘要等应用,避免网络延迟、隐私外泄和调用费用。项目以 C 语言实现核心,提供 Android 与 iOS 双端支持,适合需要本地推理、数据不出设备的移动场景。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-09-16 · 当前星标 ★ 1065

技术标签

使用教程

ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。

难度:进阶 约 15 分钟 部署方式:库/依赖 6 步

环境要求

  • 已创建的 React Native 项目(v0.10 起要求启用新架构)
  • Node.js 与 npm 环境(使用 Bun 时需将 llama.rn 标记为受信任包)
  • iOS/Android 原生构建环境(Xcode 或 Android 构建工具链)
  • 已准备好 GGUF 格式的模型文件,多模态还需对应 mmproj 文件

安装与启动步骤

  1. 1安装 llama.rn

    在 React Native 项目根目录执行。postinstall 会自动下载 iOS 与 Android 预编译产物并做 SHA-256 校验,已下载的会复用。

    npm install llama.rn
  2. 2确认新架构

    v0.10 起必须使用 React Native 新架构;若需旧架构支持或 v0.9.x 文档,请改用 v0.9 分支。

  3. 3准备 GGUF 模型

    把下载好的 GGUF 模型放到应用可访问的路径,代码中以 file:// 开头的完整路径引用。多模态场景还需额外准备 mmproj 投影文件。

  4. 4读取模型信息

    先用 loadLlamaModelInfo 验证模型文件路径正确、可被解析,控制台会打印出模型元信息。

    import { loadLlamaModelInfo } from 'llama.rn'
    
    const modelPath = 'file:///your/path/model.gguf'
    console.log('Model Info:', await loadLlamaModelInfo(modelPath))
  5. 5初始化上下文

    用 initLlama 加载模型创建上下文,首次加载耗时较长;n_gpu_layers 控制放入 GPU 的层数,可按设备调整。

    import { initLlama } from 'llama.rn'
    
    const context = await initLlama({
      model: modelPath,
      use_mlock: true,
      n_ctx: 2048,
      n_gpu_layers: 99,
    })
  6. 6发起对话补全

    向 context.completion 传入 messages 做聊天补全,或传 prompt 做文本补全;第二个参数是流式 token 回调。

    const stopWords = ['</s>', '<|end|>', '<|eot_id|>', '<|end_of_text|>', '<|im_end|>']
    
    const msgResult = await context.completion(
      {
        messages: [
          { role: 'system', content: 'This is a conversation between user and assistant, a friendly chatbot.' },
          { role: 'user', content: 'Hello!' },
        ],
        n_predict: 100,
        stop: stopWords,
      },
      (data) => {
        const { token } = data
      },
    )
    console.log('Result:', msgResult.text)

关键配置

配置项必填说明示例
model是GGUF 模型文件的本地路径,以 file:// 开头file:///your/path/model.gguf
n_ctx否上下文窗口长度,越大占用内存越多2048
n_gpu_layers否放入 GPU 显存的层数(Metal/OpenCL)99
use_mlock否是否锁定内存防止被换出true
embedding否是否启用 embedding 输出,TTS 连续模型需要true
n_parallel否并行槽最大数量,配合 parallel.enable 使用4

如何确认成功

调用 loadLlamaModelInfo 打印出模型信息,或 initLlama 成功返回 context 并输出 completion 的 text 与 timings,即表示推理链路可用。

常见问题

Q:安装后没有下载到 iOS/Android 预编译产物怎么办?

A:这些产物由 postinstall 从对应 GitHub release 下载并用 SHA-256 校验,已存在会复用。若因网络中断失败,删除后重新执行 npm install 即可。

Q:用 Bun 安装后提示找不到二进制文件?

A:Bun 默认不执行依赖的生命周期脚本。需要先把 llama.rn 标记为受信任包,再重新安装以触发 postinstall 下载。

Q:能用旧架构的 React Native 吗?

A:v0.10 起要求新架构。需要旧架构支持时,改用仓库的 v0.9 分支及其文档。

Q:如何让模型只输出指定结构的内容?

A:llama.rn 支持 GBNF 语法与 JSON schema 语法采样,可在生成时约束输出格式,适合工具调用等结构化场景。

Q:怎么支持图片或音频输入?

A:需要多模态模型并准备对应的 mmproj 投影文件,通过 mmproj 集成启用视觉/音频理解。

注意事项

  • 首次 initLlama 加载模型可能耗时较久,需耐心等待。
  • 模型必须放在应用可访问的路径,并以 file:// 形式传入。
  • Android 的 Hexagon NPU 加速目前为实验特性。
  • TTS 为实验功能,用完 vocoder 后应调用 releaseVocoder 释放资源。

核心亮点

  • 直接复用 llama.cpp 的推理内核,支持 GGUF 量化模型,端侧性能有保障
  • 提供 React Native 原生模块,JS/TS 调用简单,能流式返回 token 做打字机效果
  • 同时覆盖 Android 和 iOS,一套代码跨平台,适合已有 RN 技术栈的团队快速集成

不足之处

  • 模型文件需自行准备并打包或下载,体积大,对 App 包体和存储有压力
  • 端侧推理速度受手机芯片限制,大参数模型体验有限,文档和示例相对精简

适用场景

  • 离线 AI 聊天助手:在无网或弱网环境下用本地模型完成对话
  • 隐私敏感场景:医疗、法律等文本在设备内处理,不上传云端
  • 移动端文本工具:本地摘要、改写、翻译等轻量 AI 功能嵌入 App

替代项目

llama.cpp、mlc-llm、react-native-executorch

上一篇:guardrails

下一篇:awesome-dsh-plugin

同类项目推荐

ZombieBuddy 开源

不改源码,运行时直接改游戏逻辑

Java agent framework for Project Zomboid that enables runtime bytecode patching usin···

★ 295 2026-10-13
Turing.jl 开源

用几行 Julia 代码写概率模型,自动完成贝叶斯推断

Bayesian inference with probabilistic programming.

★ 2263 2026-10-25
instructor-php 开源

PHP 开发者也能轻松获得结构化 AI 输出,快速构建 Agent 应用。

Unified LLM API, structured data outputs with LLMs, and agent SDK - in PHP

★ 328 2026-08-09
openai-async 开源

异步调用 OpenAI,不阻塞,高并发轻松搞定

A light-weight, asynchronous client for OpenAI API - text completion, image generati···

★ 56 2026-08-09
Arcade-Learning-Environment 开源

用 Atari 2600 游戏快速搭建和评测强化学习智能体

A simple framework that allows researchers and hobbyists to develop AI agents for At···

★ 2464 2026-09-22
agentscope-studio 开源

可视化多智能体运行轨迹,调试 LLM 应用更直观

A development-oriented visualization toolkit

★ 664 2026-08-09
codex-multi-auth 开源

多账号一键切换,Codex 登录永不掉线

Codex CLI multi-account OAuth manager with account switching, health checks, runtime···

★ 561 2026-08-09
superduper 开源

把 AI 模型直接跑在数据库上,快速搭建生产级智能应用。

Superduper: End-to-end framework for building custom AI applications and agents.

★ 5328 2026-08-09