Mistral - Elixir client for the Mistral AI API

Hey everyone! :wave:

I’d like to share Mistral, an Elixir client for the Mistral AI API. The library has been on Hex for a while, but I haven’t posted about it here until now — and we just shipped v0.5.0 with a big batch of new features, so it felt like a good time.

With this release, Mistral covers almost all of the Mistral AI platform endpoints, making it the most complete Mistral client available for Elixir.

What it does

Mistral provides a simple, idiomatic Elixir interface to the Mistral AI platform:

client = Mistral.init("your_api_key")

{:ok, response} = Mistral.chat(client,
model: "mistral-small-latest",
messages: [
%{role: "user", content: "Write a haiku about Elixir"}
]
)

Features

  • Chat Completions with function calling / tool use
  • FIM (Fill-in-the-Middle) code completions
  • Streaming with utilities for collecting, accumulating, and transforming chunks
    (Mistral.Streaming)
  • Conversations API with multi-turn state management and helper utilities
    (Mistral.Conversations)
  • Agents API (full CRUD, versioning, aliases, completions)
  • Embeddings with similarity/distance utilities (Mistral.Embeddings)
  • Classification & Moderation
  • Batch Processing
  • Fine-tuning
  • File Operations (upload, download, list, delete)
  • OCR
  • Response Caching via ETS (Mistral.Cache)
  • Automatic retry with exponential backoff and jitter
  • Structured output (JSON mode + JSON Schema validation)

What’s new in v0.5.0

This release adds 48+ new API functions and 5 utility modules. The highlights:

  • Conversations, Agents, Classification, Batch, FIM, and Fine-tuning APIs —
    near-complete coverage of the Mistral platform
  • Mistral.Streaming — collect_content/1, accumulate_response/1, tee/2, merge/1,
    and more for working with SSE streams
  • Mistral.Embeddings — cosine similarity, euclidean distance, ranking, and batch
    comparisons
  • Mistral.Cache — optional ETS-based response caching for deterministic endpoints
  • Mistral.Conversations — helpers for extracting content, managing history, and
    sliding window context
  • Automatic retry — transient errors (408, 429, 5xx) are retried with exponential
    backoff by default

Full changelog: mistral/CHANGELOG.md at main · rodloboz/mistral · GitHub

Links

{:mistral, “~> 0.5.0”}

Feedback, issues, and PRs are very welcome!

5 Likes