Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Bug: long running agent tasks in Ollama leads to unexpected stop tokens before tool calls

Offen
#672 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
74/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
clojure, ollama
Bereich
ai, backend

Rechercherichtung

Start in src/eca/llm_providers/ollama.clj and read normalize-messages, comparing its message handling with the Anthropic adapter’s merge-adjacent-assistants. Check how request JSON keys are encoded and how assistant history items become Ollama chat messages. Done means prior tool calls are sent with the expected key and consecutive assistant content and tool calls are grouped as described; the issue names no test file, so locate the relevant provider tests.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

To upvote this issue, give it a thumbs up. See this list for the most upvoted issues.

Describe the bug

When using the Ollama API and long running agent tasks, the models (tested on qwen 3.5/3.8) emit unexpected stop tokens where a tool call is expected.

To Reproduce

Steps to reproduce the behavior:

  1. Use a model hosted by Ollama with the Ollama Api
  2. Start a long running task
  3. At some point the model outputs: Now I edit file X <stop_token>

Expected behavior

The model emits a tool call request instead of the stop token.

Cause and fix

The reason for the behavior is twofold. Both problems are in normalize-messages in src/eca/llm_providers/ollama.clj.

  1. Previous tool calls are silently dropped. The assistant tool-call messages are built with the key :tool-calls, and the body is encoded with a plain (json/generate-string body) (no key-fn), so the wire key is "tool-calls". Ollama's /api/chat expects tool_calls (API docs) and silently ignores unknown fields, so the request succeeds but the model never sees its earlier tool calls. (The response side already reads :tool_calls correctly.)

  2. One model response is sent as several assistant turns. Each history item becomes its own message: the reasoning (as plain content), the visible text, and the tool call. Ollama renders every assistant message as its own finished turn. The model's history therefore contains many turns of the form "I'll do X now", followed by an end-of-turn marker. That never happened during generation, where the call followed in the same turn. The model imitates the pattern and ends its turn right after announcing the action, so the stop token becomes likely. Each failure also adds another such example, which is why it gets worse in long sessions.

Fix

  • Use :tool_calls instead of :tool-calls.
  • Merge consecutive assistant messages into one (reasoning first, then text, joined by a blank line, with all tool calls concatenated). A tool message between two responses keeps them separate. The Anthropic adapter already does this with merge-adjacent-assistants.

Workaround until released

Pointing the provider at Ollama with "api": "anthropic" avoids the problem, because that adapter already merges messages and sends tool_use blocks (Ollama converts them to tool_calls).

Vorherrschende Sprache
Clojure
Sterne
1k
Forks
82
Ø Merge
2 T. 1 Std.
Gemergte PRs (30 T.)
23

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus editor-code-assistant/eca

Alle Issues in editor-code-assistant/eca

Ähnliche Issues

Weitere Issues zu Clojure

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.