Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Mistral API does not accept `reasoning_content` field

Ouverte
#674 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

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
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
clojure
Domaine
api, backend

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

bug

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:

  1. Select a model hosted by Mistral that supports reasoning (e.g. mistral/zai-glm-5-3).
  2. Write and send a simple user prompt (e.g. "Hello")
  3. Wait the model to think and reply (the reply must include a "thought" block).
  4. 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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de editor-code-assistant/eca

Toutes les issues de editor-code-assistant/eca

Issues similaires

Plus d'issues Clojure

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.