Skip to main content

Overview

Mistral AI provides powerful open-source and proprietary models including Mistral Large, Mixtral, and specialized coding models.

Installation

npm install @llamaindex/mistral

Basic Usage

import { MistralAI } from "@llamaindex/mistral";

const llm = new MistralAI({
  model: "mistral-large-latest",
  apiKey: process.env.MISTRAL_API_KEY
});

const response = await llm.chat({
  messages: [
    { role: "user", content: "Explain AI safety" }
  ]
});

console.log(response.message.content);

Constructor Options

model
string
required
Mistral model name
apiKey
string
Mistral API key (defaults to MISTRAL_API_KEY env variable)
temperature
number
Sampling temperature
maxTokens
number
Maximum tokens in response
topP
number
default:1
Nucleus sampling

Supported Models

Proprietary Models

  • mistral-large-latest: Most capable model
  • mistral-medium-latest: Balanced performance
  • mistral-small-latest: Fast and efficient

Open Models

  • open-mixtral-8x7b: Mixtral 8x7B MoE
  • open-mixtral-8x22b: Mixtral 8x22B MoE
  • open-mistral-7b: Mistral 7B
  • open-mistral-nemo: Mistral Nemo 12B

Specialized Models

  • codestral-latest: Code generation
  • mistral-embed: Embeddings

Streaming

const stream = await llm.chat({
  messages: [{ role: "user", content: "Write code for..." }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.delta);
}

Function Calling

import { tool } from "@llamaindex/core/tools";
import { z } from "zod";

const searchTool = tool({
  name: "search",
  description: "Search for information",
  parameters: z.object({
    query: z.string()
  }),
  execute: async ({ query }) => {
    return `Search results for: ${query}`;
  }
});

const response = await llm.chat({
  messages: [{ role: "user", content: "Search for AI news" }],
  tools: [searchTool]
});

Codestral

Specialized model for code generation:
const codeLLM = new MistralAI({
  model: "codestral-latest"
});

const response = await codeLLM.chat({
  messages: [
    {
      role: "user",
      content: "Write a function to calculate fibonacci numbers"
    }
  ]
});

console.log(response.message.content);

Mistral Embeddings

import { MistralAIEmbedding } from "@llamaindex/mistral";

const embedModel = new MistralAIEmbedding({
  model: "mistral-embed",
  apiKey: process.env.MISTRAL_API_KEY
});

const embedding = await embedModel.getTextEmbedding(
  "LlamaIndex is a data framework"
);

console.log(embedding.length); // 1024

Configuration

Environment Variables

MISTRAL_API_KEY=...
Get API key: Mistral AI Console

Global Settings

import { Settings } from "llamaindex";
import { MistralAI, MistralAIEmbedding } from "@llamaindex/mistral";

Settings.llm = new MistralAI({ model: "mistral-large-latest" });
Settings.embedModel = new MistralAIEmbedding();

With LlamaIndex

import { Settings, VectorStoreIndex } from "llamaindex";
import { MistralAI } from "@llamaindex/mistral";

Settings.llm = new MistralAI({ model: "mistral-large-latest" });

const index = await VectorStoreIndex.fromDocuments(documents);
const queryEngine = index.asQueryEngine();

const response = await queryEngine.query({
  query: "Summarize the documents"
});

Model Selection Guide

Use CaseRecommended Model
Complex reasoningmistral-large-latest
General purposemistral-medium-latest
Speed criticalmistral-small-latest
Code generationcodestral-latest
MoE architectureopen-mixtral-8x22b
Budget-friendlyopen-mistral-7b

Best Practices

  1. Use appropriate model: Balance cost, speed, and capability
  2. Leverage Codestral: Best-in-class code generation
  3. Monitor API usage: Track costs in console
  4. Stream responses: Better UX for long outputs
  5. Use function calling: Reliable tool integration

See Also

Build docs developers (and LLMs) love