Skip to content

fix: DeepSeek V3 parser drops multi-tool calls (greedy regex)#992

Open
Himess wants to merge 1 commit intoNousResearch:mainfrom
Himess:fix/deepseek-v3-multi-tool-parse
Open

fix: DeepSeek V3 parser drops multi-tool calls (greedy regex)#992
Himess wants to merge 1 commit intoNousResearch:mainfrom
Himess:fix/deepseek-v3-multi-tool-parse

Conversation

@Himess
Copy link
Contributor

@Himess Himess commented Mar 12, 2026

Fixes #989

Greedy .* in the PATTERN regex causes findall() to merge multiple tool calls into one match — only the last tool call survives. Switching to non-greedy .*? fixes multi-tool-call extraction.

Also adds test coverage for the DeepSeek V3 parser (previously had none).

Change: 1 line regex fix + 52 lines of tests.

The greedy `.*` captures with `re.DOTALL` cause `findall()` to merge
multiple tool calls into a single match — silently dropping all but the
last tool call. Switching to `.*?` (non-greedy) fixes extraction when
models return multiple tool calls in one response.

Adds test coverage for the DeepSeek V3 parser including a multi-tool
call regression test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DeepSeek V3 parser drops tool calls when model returns multiple

1 participant