LocalMode
React

Generation & Text

Hooks for text generation, summarization, translation, and OCR.

Generation & Text Processing Hooks

See it in action

Try LLM Chat and Data Extractor for working demos of these hooks.

useGenerateText

Non-streaming text generation.

import { useGenerateText } from '@localmode/react';
import { webllm } from '@localmode/webllm';

const model = webllm.languageModel('Llama-3.2-1B-Instruct-q4f16_1-MLC');

function Demo() {
  const { data, isLoading, execute } = useGenerateText({ model, maxTokens: 200 });

  return (
    <div>
      <button onClick={() => execute('Write a haiku about AI')}>Generate</button>
      {data && <p>{data.text}</p>}
    </div>
  );
}

For streaming generation, use useChat instead.

useGenerateObject

Generate typed, validated JSON objects from a language model using a Zod schema.

import { useGenerateObject } from '@localmode/react';
import { z } from 'zod';

const schema = z.object({ name: z.string(), age: z.number() });

const { data, isLoading, execute } = useGenerateObject({ model, schema });
await execute('Extract: John is 30 years old');
// data.object = { name: 'John', age: 30 }

useAnswerQuestion

Extractive question answering from a context passage.

import { useAnswerQuestion } from '@localmode/react';

const { data, execute } = useAnswerQuestion({ model });
await execute({ question: 'Who founded Apple?', context: 'Apple was founded by Steve Jobs...' });
// data.answer = 'Steve Jobs', data.score = 0.95

useAskDocument

Question answering on document images (receipts, forms, invoices).

import { useAskDocument } from '@localmode/react';

const { data, execute } = useAskDocument({ model });
await execute({ image: imageDataUrl, question: 'What is the total amount?' });
// data.answer = '$42.50'

useFillMask

Masked token prediction (BERT-style).

import { useFillMask } from '@localmode/react';

const { data, execute } = useFillMask({ model });
await execute('The capital of France is [MASK].');
// data.predictions = [{ token: 'Paris', score: 0.98 }, ...]

useSummarize

Summarize long text.

import { useSummarize } from '@localmode/react';

const { data, execute } = useSummarize({ model });
await execute('Long article text...');
// data.summary = "A concise summary..."

useTranslate

Translate text between languages.

import { useTranslate } from '@localmode/react';

const { data, execute } = useTranslate({ model });
await execute({ text: 'Hello world', targetLanguage: 'fr' });
// data.translation = "Bonjour le monde"

useExtractText

Extract text from images (OCR).

import { useExtractText } from '@localmode/react';

const { data, execute } = useExtractText({ model });
await execute(imageDataUrl);
// data.text = "Text extracted from the image"

For full API reference on these functions, see the Core docs.

Showcase Apps

AppDescriptionLinks
LLM ChatStream text generation with useChat (supports vision image input)Demo · Source
Data ExtractorStructured output extraction with useGenerateObjectDemo · Source
LangChain RAGGenerate RAG answers with useGenerateTextDemo · Source

On this page