README.md

September 8, 2025 ยท View on GitHub

Firebase Genkit + Mistral AI

Firebase Genkit <> Mistral AI Plugin

Mistral AI Community Plugin for Google Firebase Genkit

Github lerna version NPM Downloads GitHub Org's stars GitHub License Static Badge
GitHub Issues or Pull Requests GitHub Issues or Pull Requests GitHub commit activity

genkitx-mistral is a community plugin for using Mistral AI APIs with Firebase Genkit. Built by Bloom Labs Inc. ๐Ÿ”ฅ

Installation

Install the plugin in your project with your favorite package manager:

  • npm install genkitx-mistral
  • yarn add genkitx-mistral
  • pnpm add genkitx-mistral

Usage

Initialize

import { genkit } from 'genkit';
import mistral, { openMistral7B } from 'genkitx-mistral';

const ai = genkit({
  plugins: [mistral({ apiKey: 'your-api-key' })],
  model: openMistral7B,
});

Basic examples

The simplest way to generate text is by using the generate method:

const response = await ai.generate({
  model: openMixtral8x22B, // model imported from genkitx-mistral
  prompt: 'Tell me a joke.',
});

console.log(response.text);

Text Embeddings

import { mistralembed } from 'genkitx-mistral';

const embedding = await ai.embed({
  embedder: mistralembed,
  content: 'Hello world',
});

console.log(embedding);

Vision

import { openPixtral } from 'genkitx-mistral';

const { text } = await ai.generate({
  prompt: [{ media: { url: 'https://my-photo.jpg' } }, { text: input }],
  model: openPixtral,
  config: {
    version: 'pixtral-12b-2409',
  },
});

return JSON.stringify(text);

OCR

import { ocr } from 'genkitx-mistral';

export const ocrFlow = ai.defineFlow(
  {
    name: 'ocrFlow',
    inputSchema: z.string(),
    outputSchema: z.string(),
  },
  async (input) => {
    const { text } = await ai.generate({
      model: ocr,
      prompt: 'parse the document',
      config: {
        document: {
          documentUrl: input,
          type: 'document_url',
        },
      },
    });

    return JSON.stringify(text);
  }
);

Adding a model

To add a new model, you can import it from genkitx-mistral and use it in the generate method:

import { GenerationCommonConfigSchema, genkit } from 'genkit';
import { modelRef } from 'genkit/model';
import mistral from 'genkitx-mistral';

export const customLarge2411 = modelRef({
  name: 'mistral/mistral-large-2411',
  info: {
    versions: ['mistral-large-2411'],
    label: 'Mistral - Mistral Large 2411',
    supports: {
      multiturn: true,
      tools: true,
      media: false,
      systemRole: true,
      output: ['text', 'json'],
    },
  },
  configSchema: GenerationCommonConfigSchema,
});
const ai = genkit({
  plugins: [
    mistral({
      apiKey: process.env.CLIENT_ID as string,
      serverURL: process.env.MISTRAL_ENDPOINT as string,
      customModels: {
        'mistral-large-2411': customLarge2411,
      },
    }),
  ],
  model: customLarge2411,
});

const response = await ai.generate({
  prompt: 'Tell me a joke.',
});

console.log(response.text);

Within a flow

import { z } from 'genkit';

// ...initialize genkit as above...

export const jokeFlow = ai.defineFlow(
  {
    name: 'jokeFlow',
    inputSchema: z.string(),
    outputSchema: z.string(),
  },
  async (subject) => {
    const llmResponse = await ai.generate({
      prompt: `tell me a joke about ${subject}`,
    });
    return llmResponse.text;
  }
);

// Run the flow using the CLI:
// genkit flow:run jokeFlow "chicken"

Contributing

Want to contribute to the project? That's awesome! Head over to our Contribution Guidelines.

Need support?

Note


This repository depends on Google's Firebase Genkit. For issues and questions related to Genkit, please refer to instructions available in Genkit's repository.

Reach out by opening a discussion on Github Discussions.

Credits

This plugin is proudly maintained by the team at Bloom Labs Inc. ๐Ÿ”ฅ

License

This project is licensed under the Apache 2.0 License.