rodloboz
Mistral - Elixir client for the Mistral AI API
Hey everyone! ![]()
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
- Hex: mistral | Hex
- Docs: Mistral v0.5.0 — Documentation
- GitHub:
https://github.com/rodloboz/mistral
{:mistral, “~> 0.5.0”}
Feedback, issues, and PRs are very welcome!
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








