genkitx-mistral
Firebase Genkit - Mistral AI Plugin
Mistral AI Community Plugin for Google Firebase Genkit
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-mistralyarn add genkitx-mistralpnpm 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?​
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.