Skip to main content
Mistral AI

Installation

Install both the Netra SDK and Mistral SDK:
pip install netra-sdk mistralai
npm install netra-sdk @mistralai/mistralai

Usage

Initialize the Netra SDK with Mistral instrumentation enabled. The SDK automatically traces all Mistral API calls once initialized.
from netra import Netra
from mistralai.client import MistralClient
import os

# Initialize Netra with Mistral instrumentation
Netra.init(
    app_name="my-ai-app",
    headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
    trace_content=True
)

# Use Mistral client as usual - all calls are automatically traced
client = MistralClient(api_key=os.environ.get("MISTRAL_API_KEY"))

response = client.chat(
    model="mistral-large-latest",
    messages=[
        {"role": "user", "content": "What is observability?"}
    ]
)

print(response.choices[0].message.content)
import { Netra } from "netra-sdk";
import MistralClient from "@mistralai/mistralai";

async function main() {
  // Initialize Netra with Mistral instrumentation (must await)
  await Netra.init({
    appName: "my-ai-app",
    headers: `x-api-key=${process.env.NETRA_API_KEY}`,
    traceContent: true
  });

  // Use Mistral client as usual - all calls are automatically traced
  const mistral = new MistralClient(process.env.MISTRAL_API_KEY);

  const response = await mistral.chat({
    model: "mistral-large-latest",
    messages: [
      { role: "user", content: "What is observability?" }
    ]
  });

  console.log(response.choices[0].message.content);
}

main();

Streaming Responses

The SDK automatically handles streaming responses and captures the complete output:
stream = client.chat_stream(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "Tell me a story"}]
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
const stream = await mistral.chatStream({
  model: "mistral-large-latest",
  messages: [{ role: "user", content: "Tell me a story" }]
});

for await (const chunk of stream) {
  if (chunk.choices[0]?.delta?.content) {
    process.stdout.write(chunk.choices[0].delta.content);
  }
}

Embeddings

Embedding operations are also automatically instrumented:
embeddings = client.embeddings(
    model="mistral-embed",
    input=["The quick brown fox jumps over the lazy dog"]
)

print(embeddings.data[0].embedding)
const embeddings = await mistral.embeddings({
  model: "mistral-embed",
  input: ["The quick brown fox jumps over the lazy dog"]
});

console.log(embeddings.data[0].embedding);

Selective Instrumentation

Control which integrations are enabled using the instruments or blockInstruments configuration:
from netra import Netra
from netra.instrumentation.instruments import InstrumentSet

# Only enable Mistral instrumentation
Netra.init(
    headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
    instruments={InstrumentSet.MISTRALAI}
)

# Or block specific instrumentations
Netra.init(
    headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
    block_instruments={InstrumentSet.HTTPX}
)
import { Netra, NetraInstruments } from "netra-sdk";

// Only enable Mistral instrumentation
await Netra.init({
  headers: `x-api-key=${process.env.NETRA_API_KEY}`,
  instruments: new Set([NetraInstruments.MISTRALAI])
});

// Or block specific instrumentations
await Netra.init({
  headers: `x-api-key=${process.env.NETRA_API_KEY}`,
  blockInstruments: new Set([NetraInstruments.HTTP])
});

Next Steps

Last modified on March 17, 2026