react-native-transformers
is a React Native library for running Large Language Models (LLMs) from Hugging Face on your mobile applications locally. It supports both iOS and Android platforms, allowing you to leverage advanced AI models directly on your device without requiring an internet connection.
To use react-native-transformers
, you need to install onnxruntime-react-native
as a peer dependency. Follow the steps below:
npm install onnxruntime-react-native
react-native-transformers
:npm install react-native-transformers
Link the onnxruntime-react-native
library:
npx react-native link onnxruntime-react-native
Install the Expo plugin configuration in app.json
or app.config.js
:
{
"expo": {
"plugins": [
"onnxruntime-react-native"
],
}
}
You need to add the babel-plugin-transform-import-meta
plugin to your Babel configuration (e.g., .babelrc
or babel.config.js
):
{
"plugins": ["babel-plugin-transform-import-meta"]
}
import React from "react";
import { View, Text, Button } from "react-native";
import { Pipeline } from "react-native-transformers";
export default function App() {
const [output, setOutput] = React.useState("");
// Function to initialize the model
const loadModel = async () => {
await Pipeline.TextGeneration.init("Felladrin/onnx-Llama-160M-Chat-v1", "onnx/decoder_model_merged.onnx");
};
// Function to generate text
const generateText = () => {
Pipeline.TextGeneration.generate("Hello world", setOutput);
};
return (
<View>
<Button title="Load Model" onPress={loadModel} />
<Button title="Generate Text" onPress={generateText} />
<Text>Output: {output}</Text>
</View>
);
}
import React from "react";
import { View, Text, Button } from "react-native";
import { Pipeline } from "react-native-transformers";
export default function App() {
const [embedding, setEmbedding] = React.useState([]);
// Function to initialize the model
const loadModel = async () => {
await Pipeline.TextEmbedding.init("Xenova/all-MiniLM-L6-v2");
};
// Function to generate embeddings
const generateEmbedding = async () => {
const result = await Pipeline.TextEmbedding.generate("Hello world");
setEmbedding(result);
};
return (
<View>
<Button title="Load Model" onPress={loadModel} />
<Button title="Generate Embedding" onPress={generateEmbedding} />
<Text>Embedding Length: {embedding.length}</Text>
</View>
);
}
For detailed API documentation, please visit our TypeDoc documentation.
Contributions are welcome! See the contributing guide to learn how to contribute to the repository and the development workflow.
This project is licensed under the MIT License. See the LICENSE file for details.
These links provide additional information on how to configure and utilize the various components used by react-native-transformers
.