React Native Transformers 开源项目教程

React Native Transformers 开源项目教程

react-native-transformers Run local LLM from Huggingface in React-Native or Expo using onnxruntime. react-native-transformers 项目地址: https://gitcode.com/gh_mirrors/re/react-native-transformers

1. 项目介绍

react-native-transformers 是一个开源项目,它允许开发者在 React Native 和 Expo 应用程序中直接运行基于 ONNX Runtime 的 Hugging Face 转换器模型。通过在设备上进行推理,这个库为移动应用提供了 AI 能力,可以实现文本生成、回答问题以及处理语言等功能,而无需将数据发送到外部服务器,从而增强隐私性,减少延迟,并支持离线功能。

2. 项目快速启动

安装依赖

首先,确保安装了必要的 peer dependencies:

npm install onnxruntime-react-native

然后,安装 react-native-transformers

  • 对于 React Native:
npm install react-native-transformers
  • 对于 Expo:
npx expo install react-native-transformers

平台配置

  • React Native CLI:链接 onnxruntime-react-native 库:
npx react-native link onnxruntime-react-native
  • Expo:在 app.jsonapp.config.js 中添加 Expo 插件配置:
{
  "expo": {
    "plugins": [
      "onnxruntime-react-native"
    ]
  }
}

Babel 配置

添加 babel-plugin-transform-import-meta 插件到 Babel 配置中:

// babel.config.js
module.exports = {
  // ... 你现有的配置
  plugins: [
    // ... 你现有的插件
    "babel-plugin-transform-import-meta"
  ]
};

之后,运行以下命令清除 Metro bundler 缓存:

npx expo start --clear

开发环境设置

由于 ONNX Runtime 和 react-native-transformers 包含原生代码,开发和使用时需要使用开发客户端而不是 Expo Go。

可以使用以下方法之一设置开发客户端:

  • EAS Development Build:使用 EAS Build 创建自定义开发客户端。
  • Expo Prebuild:弹出为裸机工作流程以访问原生代码。

使用示例

以下是一个简单的 React 组件,它加载了一个文本生成模型,并使用该模型生成文本:

import React, { useState, useEffect } from 'react';
import { View, Text, Button } from 'react-native';
import { Pipeline } from 'react-native-transformers';

export default function App() {
  const [output, setOutput] = useState('');
  const [isLoading, setIsLoading] = useState(false);
  const [isModelReady, setIsModelReady] = useState(false);

  // 在组件挂载时加载模型
  useEffect(() => {
    loadModel();
  }, []);

  const loadModel = async () => {
    setIsLoading(true);
    try {
      // 加载一个小型 Llama 模型
      await Pipeline.TextGeneration.init(
        "Felladrin/onnx-Llama-160M-Chat-v1",
        "onnx/decoder_model_merged.onnx",
        {
          // 需要一个 fetch 函数来下载模型文件
          fetch: async (url) => {
            // 在真实应用中,你可能想要缓存下载的文件
            const response = await fetch(url);
            return response.url;
          }
        }
      );
      setIsModelReady(true);
    } catch (error) {
      console.error("Error loading model:", error);
      alert("Failed to load model: " + error.message);
    } finally {
      setIsLoading(false);
    }
  };

  const generateText = () => {
    setOutput('');
    // 从提示生成文本并更新 UI
    Pipeline.TextGeneration.generate(
      "Write a short poem about programming:",
      (text) => setOutput(text)
    );
  };

  return (
    <View style={{ padding: 20 }}>
      <Button
        title={isModelReady ? "Generate Text" : "Load Model"}
        onPress={isModelReady ? generateText : loadModel}
        disabled={isLoading}
      />
      <Text style={{ marginTop: 20 }}>
        {output || "Generated text will appear here"}
      </Text>
    </View>
  );
}

3. 应用案例和最佳实践

在实际开发中,以下是一些最佳实践:

  • 离线推理:确保模型文件在应用安装时已经下载并存储在设备上,以支持离线推理。
  • 资源管理:合理管理模型的加载和卸载,以避免内存泄漏。
  • 用户交互:在模型加载和文本生成过程中提供清晰的反馈,例如进度条或加载指示器。

4. 典型生态项目

react-native-transformers 可以与其他开源项目结合使用,以下是一些典型的生态项目:

  • Expo: 提供一个快速开发、部署和测试 React Native 应用的平台。
  • ONNX Runtime: 用于在不同平台和设备上执行 ONNX 模型的推理引擎。
  • Hugging Face Transformers: 一个提供预训练模型和转换器架构的库。

react-native-transformers Run local LLM from Huggingface in React-Native or Expo using onnxruntime. react-native-transformers 项目地址: https://gitcode.com/gh_mirrors/re/react-native-transformers

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜薇剑Dale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值