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 The Fire Company. 🔥
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?​
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 The Fire Company. 🔥
License​
This project is licensed under the Apache 2.0 License.