rodloboz

rodloboz

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

https://github.com/rodloboz/mistral

{:mistral, “~> 0.5.0”}

Feedback, issues, and PRs are very welcome!

Where Next?

Popular in Announcing Top

mischov
import Meeseeks.CSS html = HTTPoison.get!("https://news.ycombinator.com/").body for story <- Meeseeks.all(html, css("tr.athing")) do...
New
bryanjos
Hi, I wanted share a small library we at Revelry Labs made for rendering react components from the server side. There are instructions fo...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36128 110
New
aditya7iyengar
Rummage.Ecto and Rummage.Phoenix provide ways to perform Searching, Sorting and Pagination over Ecto queries and Phoenix collections. Fo...
New
Azolo
Hey everyone, I just released WebSockex which is a Elixir WebSocket client. WebSockex strives to work as a OTP special process, be RFC6...
New
OvermindDL1
Been making an MLElixir thing (not released yet…) for fun in spare time in the past day. I’m just trying to see how much I can get an ML...
132 13966 106
New
scohen
Lexical Lexical is a next-generation language server for the Elixir programming language. Features Context aware code completion As-you...
New
anshuman23
Hello all, I have been working on my proposed project called Tensorflex as part of Google Summer of Code 2018.. Tensorflex can be used f...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
pkrawat1
Hey guyz We at @aviabird are working on a payment library in elixir/phoenix. We are targeting March 2018 to add 56 Gateways to it. Have...
New

Other popular topics Top

marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

We're in Beta

About us Mission Statement