UNPKG

genkitx-mistral

Version:

Firebase Genkit AI framework plugin for Mistral AI APIs.

203 lines (154 loc) 5.35 kB
![Firebase Genkit + Mistral AI](https://github.com/BloomLabsInc/genkit-plugins/blob/main/assets/genkit-mistral.png?raw=true) <h1 align="center">Firebase Genkit <> Mistral AI Plugin</h1> <h4 align="center">Mistral AI Community Plugin for Google Firebase Genkit</h4> <div align="center"> <img alt="Github lerna version" src="https://img.shields.io/github/lerna-json/v/BloomLabsInc/genkit-plugins?label=version"> <img alt="NPM Downloads" src="https://img.shields.io/npm/dw/genkitx-mistral"> <img alt="GitHub Org's stars" src="https://img.shields.io/github/stars/BloomLabsInc?style=social"> <img alt="GitHub License" src="https://img.shields.io/github/license/BloomLabsInc/genkit-plugins"> <img alt="Static Badge" src="https://img.shields.io/badge/yes-a?label=maintained"> </div> <div align="center"> <img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/BloomLabsInc/genkit-plugins?color=blue"> <img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues-pr/BloomLabsInc/genkit-plugins?color=blue"> <img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/BloomLabsInc/genkit-plugins"> </div> **`genkitx-mistral`** is a community plugin for using Mistral AI APIs with [Firebase Genkit](https://github.com/firebase/genkit). Built by [**Bloom Labs Inc**](https://github.com/BloomLabsInc). 🔥 ## 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 ```typescript 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: ```typescript const response = await ai.generate({ model: openMixtral8x22B, // model imported from genkitx-mistral prompt: 'Tell me a joke.', }); console.log(response.text); ``` ### Text Embeddings ```typescript import { mistralembed } from 'genkitx-mistral'; const embedding = await ai.embed({ embedder: mistralembed, content: 'Hello world', }); console.log(embedding); ``` ## Vision ```typescript 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 ```typescript 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: ```typescript 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 ```typescript 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](https://github.com/BloomLabsInc/genkit-plugins/blob/main/CONTRIBUTING.md). ## 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](https://github.com/firebase/genkit). Reach out by opening a discussion on [Github Discussions](https://github.com/BloomLabsInc/genkit-plugins/discussions). ## Credits This plugin is proudly maintained by the team at [**Bloom Labs Inc**](https://github.com/BloomLabsInc). 🔥 ## License This project is licensed under the [Apache 2.0 License](https://github.com/BloomLabsInc/genkit-plugins/blob/main/LICENSE).