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

[Bug] Anthropic models: tool calls fail with "Input tag 'input_json_delta' ... does not match any of the expected tags" (streamed tool_use never assembled)

Offen
#6,480 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
68/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python

Rechercherichtung

Beginne in apps/application/flow/tools.py bei _yield_mcp_response(), suche dann wie beschrieben im gesamten Baum nach input_json_delta und partial_json. Reproduziere einen gestreamten Anthropic-Tool-Aufruf und vergleiche ihn mit dem funktionierenden OpenAI-förmigen Provider; erledigt ist es, wenn der Tool-Wert die Antwort erreicht, ohne dass ein Anthropic BadRequestError auftritt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Type: To Be Verified
MaxKB Version

v2.10.4-lts (also reproduced on v2.10.2-lts)

Problem Description

When an application has a custom tool attached and uses an Anthropic model (model_anthropic_provider), every message that triggers a tool call fails. The Anthropic API rejects MaxKB's follow-up request:

BadRequestError: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error',
'message': "messages.1.content.1: Input tag 'input_json_delta' found using 'type' does not match any of the expected tags"}}

and, in the other variant:

BadRequestError: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error',
'message': 'messages: text content blocks must be non-empty'}}

MaxKB returns this to the caller as HTTP 200 with the error text as the answer body, so it reaches end users as the assistant's reply.

Cause

input_json_delta is an Anthropic streaming event type, not a message content type. Anthropic streams tool arguments as a series of content_block_delta events of type input_json_delta, each carrying a partial_json fragment. These must be accumulated and assembled into a completed tool_use content block before the assistant turn is replayed in messages.

MaxKB appears to replay the raw streamed deltas instead. A search of the v2.10.4-lts tree finds no handling for either field:

grep -rn "input_json_delta\|partial_json" apps/     # zero hits

_yield_mcp_response() in apps/application/flow/tools.py handles only OpenAI-shaped tool deltas (tool_call_chunks / tool_calls / invalid_tool_calls). There is no branch for Anthropic content blocks, which is consistent with both error messages: the unassembled delta is sent verbatim, and the accompanying text block is empty.

Steps to Reproduce
  1. Register an Anthropic model (reproduced with claude-sonnet-5, model_anthropic_provider).
  2. Create a SIMPLE agent using that model.
  3. Create a custom Python tool and attach it (tool_enable: true), e.g.
def live_price(query):
    return 'DJI Neo: 4242.42 GEL, in stock.'
  1. Set the system prompt so the tool is actually used, e.g. "For any question about price or stock you MUST call the live_price tool."
  2. Call the OpenAI-compatible endpoint with stream: true (required — with tools attached, stream: false is unsupported per #6300 / #4846 / #4363):
curl -N "$MAXKB/chat/api/$APP_ID/chat/completions" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"model":"gpt-3.5-turbo","stream":true,"messages":[{"role":"user","content":"How much is the DJI Neo?"}]}'

Expected: the answer quotes the tool's value (4242.42 GEL).
Actual: the answer is the BadRequestError text above.

The same setup works on an OpenAI-shaped provider

Identical agent, identical tool, identical prompt, only the model swapped to model_openai_provider (gpt-4o-mini): no error, and the answer contains 4242.42 GEL, confirming the tool executed. This isolates the defect to the Anthropic provider's streamed tool-call handling rather than to tools, sandboxing, or the endpoint.

Impact

Custom tools and MCP cannot be used at all with Anthropic models. Because tools require stream: true, and streaming is exactly where the assembly fails, there is no working combination for Anthropic users.

Tested on v2.10.2-lts and v2.10.4-lts (CE), Docker, single-node.

Vorherrschende Sprache
Python
Sterne
22.8k
Forks
3.2k
Ø Merge
46 Min.
Gemergte PRs (30 T.)
322

Beitragsleitfaden

Beitragsleitfaden öffnen

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 1Panel-dev/MaxKB

Alle Issues in 1Panel-dev/MaxKB

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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