Mistral API does not accept `reasoning_content` field
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 54/100
Piste de recherche
Start by tracing how the Mistral provider builds assistant messages for the next request, especially messages containing reasoning from the previous response. The issue reports a 422 because reasoning_content is sent as an extra field and suggests Mistral's thinking content format as a possible direction. Done means a follow-up prompt works after a reasoning response.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
To upvote this issue, give it a thumbs up. See this list for the most upvoted issues.
Please avoid AI slops, be concise, and focus on what matters for this issue.
Describe the bug
When working with models provided via Mistral's API that support thinking/reasoning (GLM 5.3, Mistral Large 4, etc) and reasoning is enabled (e.g. reasoning_effort: high), the second prompt send by the user always fails with response status code 422 and message and an error message of the sort:
{"detail":[{"type":"extra_forbidden","loc":["body","messages",2,"assistant","reasoning_content"],"msg":"Extra inputs are not permitted","input":"The user just said \"Hello.\" with no specific task. I should respond briefly and greet them, maybe noting what I can see in their workspace. No need for tools here. Keep it short."}]}
To Reproduce
Steps to reproduce the behavior:
- Select a model hosted by Mistral that supports reasoning (e.g.
mistral/zai-glm-5-3). - Write and send a simple user prompt (e.g. "Hello")
- Wait the model to think and reply (the reply must include a "thought" block).
- Write and send another user prompt (e.g. "Hi again").
Expected behavior
Receive a proper response from the model and resume the conversation.
Doctor
ECA version: 0.166.0
Server cmd: ~/.cache/emacs/eca/eca server
Logged providers:
mistral: API key (XXX**********XXX)
Screenshots
Additional context
I have encountered the same issue with other frameworks and the problem there was caused by Mistral's API not expecting a reasoning_content field, like Deepseek's and OpenAI's APIs. Not sure if that is the proper solution or just a workaround but, it appears that placing reasoning content inside a "thinking" element (seems unique to Mistral's API spec) which is placed inside the content of a regular "assistant" message, works. For example:
{
"model": "mistral-small-latest",
"messages": [
{
"role": "system",
"content": "You are a large language model living in Emacs and a helpful assistant. Respond concisely."
},
{
"role": "user",
"content": "Hello. Please list the files in the current directory and report them to me."
},
{
"role": "assistant",
"tool_calls": [
{
"id": "oagouVY1Z",
"type": "function",
"function": {
"name": "list_directory",
"arguments": "{\"path\": \".\"}"
},
"index": 0
}
],
"content": [
{
"type": "thinking",
"thinking": [
{
"type": "text",
"text": "The user wants me to list the files in the current directory. I need to use the list_directory tool to do this. Since they said \"current directory\", I should use \".\" as the path to represent the current directory."
}
],
"closed": true
}
]
},
{
"role": "tool",
"tool_call_id": "oagouVY1Z",
"content": "..."
}
],
"stream": false,
"tools": [
{
"type": "function",
"function": {
"name": "list_directory",
"description": "List the contents of a specified directory.",
"parameters": {
"type": "object",
"properties": {
"path": {
"description": "Path to the directory. Supports relative paths and '~'.",
"type": "string"
}
},
"required": [
"path"
],
"additionalProperties": false
}
}
}
],
"parallel_tool_calls": true,
"reasoning_effort": "high"
}
- Langage dominant
- Clojure
- Étoiles
- 1k
- Forks
- 82
- Merge moyen
- 2 j 1 h
- PR mergées (30 j)
- 23
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de editor-code-assistant/eca
-
Models doesn't work when fetchModels: false is usedPeut-être pris @zikajk l’a pris il y a 9 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
editor-code-assistant/eca#661 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
editor-code-assistant/eca#685 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
editor-code-assistant/eca#684 · 4 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
editor-code-assistant/eca#683 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 74/100
editor-code-assistant/eca#672 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de editor-code-assistant/eca
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
module:rest-api
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
WG adoption
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 4 jours