Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/add-ai-mistral.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/ai-mistral': minor
---

Add new `@tanstack/ai-mistral` adapter package for Mistral models using the `@mistralai/mistralai` SDK. Supports streaming chat, tool calling, vision input (Pixtral / Mistral Medium / Small), and structured output via JSON Schema. Includes model metadata for Mistral Large, Medium, Small, Ministral 3B/8B, Codestral, Pixtral, Magistral, and Open Mistral Nemo.
89 changes: 89 additions & 0 deletions packages/typescript/ai-mistral/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# @tanstack/ai-mistral

Mistral adapter for TanStack AI.

## Installation

```bash
npm install @tanstack/ai-mistral
# or
pnpm add @tanstack/ai-mistral
# or
yarn add @tanstack/ai-mistral
```

## Setup

Get your API key from [Mistral Console](https://console.mistral.ai/) and set it as an environment variable:

```bash
export MISTRAL_API_KEY="..."
```

## Usage

### Text/Chat Adapter

```typescript
import { mistralText } from '@tanstack/ai-mistral'
import { generate } from '@tanstack/ai'

const adapter = mistralText('mistral-large-latest')

const result = await generate({
adapter,
model: 'mistral-large-latest',
messages: [
{ role: 'user', content: 'Explain quantum computing in simple terms' },
],
})

console.log(result.text)
```

### With Explicit API Key

```typescript
import { createMistralText } from '@tanstack/ai-mistral'

const adapter = createMistralText('mistral-large-latest', 'api_key')
```

## Supported Models

### Chat Models

- `mistral-large-latest` - Frontier flagship model (128k context)
- `mistral-medium-latest` - Balanced multimodal model (vision)
- `mistral-small-latest` - Fast, affordable multimodal model (vision)
- `ministral-8b-latest` - 8B edge model
- `ministral-3b-latest` - 3B edge model
- `codestral-latest` - Code-specialized model (256k context)
- `pixtral-large-latest` - Large vision model
- `pixtral-12b-2409` - 12B vision model
- `magistral-medium-latest` - Reasoning model
- `magistral-small-latest` - Small reasoning model
- `open-mistral-nemo` - Open 12B model

See [Mistral model comparison](https://docs.mistral.ai/getting-started/models/compare) for full details.

## Features

- ✅ Streaming chat completions
- ✅ Structured output (JSON Schema)
- ✅ Function/tool calling
- ✅ Multimodal input (text + images for vision models)
- ❌ Embeddings (use the Mistral SDK directly)
- ❌ Image generation

## Tree-Shakeable Adapters

This package uses tree-shakeable adapters, so you only import what you need:

```typescript
import { mistralText } from '@tanstack/ai-mistral'
```

## License

MIT
56 changes: 56 additions & 0 deletions packages/typescript/ai-mistral/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"name": "@tanstack/ai-mistral",
"version": "0.1.0",
"type": "module",
"description": "Mistral adapter for TanStack AI",
"author": "",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/TanStack/ai.git",
"directory": "packages/typescript/ai-mistral"
},
"module": "./dist/esm/index.js",
"types": "./dist/esm/index.d.ts",
"exports": {
".": {
"types": "./dist/esm/index.d.ts",
"import": "./dist/esm/index.js"
},
"./adapters/text": {
"types": "./dist/esm/adapters/text.d.ts",
"import": "./dist/esm/adapters/text.js"
}
},
Comment thread
coderabbitai[bot] marked this conversation as resolved.
"files": [
"dist",
"src"
],
"scripts": {
"build": "vite build",
"clean": "premove ./build ./dist",
"lint:fix": "eslint ./src --fix",
"test:build": "publint --strict",
"test:eslint": "eslint ./src",
"test:lib": "vitest run",
"test:lib:dev": "pnpm test:lib --watch",
"test:types": "tsc"
},
"keywords": [
"ai",
"mistral",
"tanstack",
"adapter"
],
"devDependencies": {
"@vitest/coverage-v8": "4.0.14",
"vite": "^7.2.7"
},
"peerDependencies": {
"@tanstack/ai": "workspace:^",
"zod": "^4.0.0"
},
"dependencies": {
"@mistralai/mistralai": "^2.2.0"
}
}
Loading