[Back to AI Framework Overview](../../README.md) | [All Providers](../README.md) # @memberjunction/ai-mistral MemberJunction AI provider for Mistral AI. Provides both LLM and embedding capabilities, implementing `BaseLLM` and `BaseEmbeddings` from `@memberjunction/ai`. ## Architecture ```mermaid graph TD A["MistralLLM
(Provider)"] -->|extends| B["BaseLLM
(@memberjunction/ai)"] C["MistralEmbedding
(Provider)"] -->|extends| D["BaseEmbeddings
(@memberjunction/ai)"] A -->|wraps| E["Mistral Client
(@mistralai/mistralai)"] C -->|wraps| E A -->|provides| F["Chat Completions
+ Streaming"] C -->|provides| G["Text Embeddings"] B -->|registered via| H["@RegisterClass"] D -->|registered via| H style A fill:#7c5295,stroke:#563a6b,color:#fff style C fill:#7c5295,stroke:#563a6b,color:#fff style B fill:#2d6a9f,stroke:#1a4971,color:#fff style D fill:#2d6a9f,stroke:#1a4971,color:#fff style E fill:#2d8659,stroke:#1a5c3a,color:#fff style F fill:#b8762f,stroke:#8a5722,color:#fff style G fill:#b8762f,stroke:#8a5722,color:#fff style H fill:#b8762f,stroke:#8a5722,color:#fff ``` ## Features - **Chat Completions**: Conversational AI with Mistral Large, Medium, Small, and Codestral models - **Streaming**: Real-time response streaming support - **Text Embeddings**: Vector embeddings via Mistral's embedding models - **Thinking/Reasoning**: Extraction of thinking content from reasoning models - **JSON Mode**: Response format control for structured outputs - **Multimodal Support**: Handling of image content in messages ## Installation ```bash npm install @memberjunction/ai-mistral ``` ## Usage ### Chat Completion ```typescript import { MistralLLM } from "@memberjunction/ai-mistral"; const llm = new MistralLLM("your-mistral-api-key"); const result = await llm.ChatCompletion({ model: "mistral-large-latest", messages: [ { role: "user", content: "Explain transformers in machine learning." }, ], temperature: 0.7, }); if (result.success) { console.log(result.data.choices[0].message.content); } ``` ### Streaming ```typescript const result = await llm.ChatCompletion({ model: "mistral-small-latest", messages: [{ role: "user", content: "Write a poem." }], streaming: true, streamingCallbacks: { OnContent: (content) => process.stdout.write(content), OnComplete: () => console.log("\nDone!"), }, }); ``` ### Embeddings ```typescript import { MistralEmbedding } from "@memberjunction/ai-mistral"; const embedder = new MistralEmbedding("your-mistral-api-key"); const result = await embedder.EmbedText({ text: "Sample text for embedding", model: "mistral-embed", }); console.log(`Dimensions: ${result.vector.length}`); ``` ## Supported Parameters | Parameter | Supported | Notes | |-----------|-----------|-------| | temperature | Yes | Controls randomness | | maxOutputTokens | Yes | Maximum response length | | topP | Yes | Nucleus sampling | | seed | Yes | Deterministic outputs | | stopSequences | Yes | Custom stop sequences | | assistantPrefill | Yes | Pre-seed the start of the assistant's response via Mistral's `prefix` flag ([guide](../../Prompts/PREFILL_AND_STOP_SEQUENCES.md)) | | responseFormat | Yes | JSON mode support | | streaming | Yes | Real-time streaming | ## Class Registration - `MistralLLM` -- Registered via `@RegisterClass(BaseLLM, 'MistralLLM')` - `MistralEmbedding` -- Registered via `@RegisterClass(BaseEmbeddings, 'MistralEmbedding')` ## Dependencies - `@memberjunction/ai` - Core AI abstractions - `@memberjunction/global` - Class registration - `@mistralai/mistralai` - Official Mistral AI SDK