共 49 个 commit,涉及 282 个文件,+22119/-15901 行变动。
概要
| 统计项 | 数值 |
|---|---|
| Commit 数 | 49 |
| 变更文件 | 282 |
| 新增行数 | +22119 |
| 删除行数 | -15901 |
Commit 列表
📦 Other
- b3f0a0a #45536 — Fix docs build on
main(#45536)- 作者: Harry Mellor | +1/-2 | 2 个文件
We will have to do this periodically now that we’ve stopped building docs on every PR
- 470229c #45252 — [Security] Fix DoS via prompt_embeds on M-RoPE models (#45252)
- 作者: Juan Pérez de Algaba | +94/-4 | 2 个文件
Replace the fatal assertion in _init_mrope_positions that crashes the EngineCore when prompt_token_ids is None. When only prompt_embeds are provided (e.g. /v1/completions with prompt=None + prompt_embeds), derive the sequence length from the embeddings tensor and use dummy token IDs. This is safe because get_mrope_input_positions only needs len(input_tokens) when there are no multimodal features (…
- 2b30060 #45118 — [Security] Add timeout guard for regex compilation in structured outp… (#45118)
- 作者: Juan Pérez de Algaba | +126/-4 | 5 个文件
- Add compile_regex_with_timeout() utility that wraps regex compilation in a thread with a deadline, preventing ReDoS attacks where adversarial patterns cause exponential DFA state-space explosion. - Apply the timeout to compiler.compile_regex() in the xgrammar backend, oc.Index() in the outlines backend, and xgr.Grammar.from_regex() during validation. - Introduce VLLM_REGEX_COMPILATION_TIMEOUT_S …
- 96fa5cd #45478 — [CI Bug] Fix
ValueError: There is no module or parameter named 'model.vision_tower.vision_model'(#45478)- 作者: Wentao Ye | +10/-6 | 2 个文件
Fixes https://buildkite.com/vllm/ci/builds/71235#019ebd0b-5a0c-44e8-9f0c-7a7965833cc8 We reuse the renaming logic from huggingface. Now
- 9261dbb #45491 — Treat null completion max_tokens like the default (#45491)
- 作者: Andreas Karatzas | +8/-0 | 1 个文件
This fixes a Schemathesis failure in the OpenAI API server job: Buildkite: The generated request was: For that exact request, the pre-fix failure is deterministic. The CI job only looks flaky because this is a schema-fuzzing test: Schemathesis does not generate that exact max_tokens: null completion body on every run. The serving code later asserts that CompletionRequest.max_tokens is not None. Th…
- 2ecf7d0 #45467 — [Model Runner V2] Fix
openai.InternalServerError: Error code: 500 - 'list index out of range'(#45467)- 作者: Wentao Ye | +2/-0 | 1 个文件
VLLM_USE_V2_MODEL_RUNNER=1 pytest tests/entrypoints/openai/chat_completion/test_chat_echo.py::test_top_logprobs -xvs Will raise error This is becuase for -1 for logprobs meaning all instead of None, this PR fixed the bug Now
- 43f0e02 #43606 — [Render] Add
/derenderendpoints for disaggregated postprocessing (#43606)- 作者: Martin Hickey | +898/-9 | 7 个文件
Add POST /v1/chat/completions/derender and POST /v1/completions/derender to the render server, completing the render to derender lifecycle for disaggregated serving (RFC #42729). The generate server returns raw token IDs and logprob placeholders (“token_id:N” strings) because it has no tokenizer. The derender endpoints close the loop on the CPU-only render server: detokenize output tokens, resolve…
- c906500 #44260 — Add the QuantizedActivation linear-kernel contract (#44260)
- 作者: Michael Goin | +327/-27 | 13 个文件
First part of #43224 for quant fusion support. Introduce QuantizedActivation: a pre-quantized activation that fused kernel can hand directly to a linear so the linear skips its own input quant. The contract lives in fusion/quant_activation.py with two helpers: 1. expose_input_quant_key (the single scheme->layer bridge advertising the key a kernel can consume) 2. as_quantized_activation (consumer-s…
- 78739c1 #42667 — [Model Runner v2] Migration from v1 to v2, with Qwen and DSv2 MOE models [3/N] (#42667)
- 作者: Wentao Ye | +63/-8 | 2 个文件
Make progress for https://github.com/vllm-project/vllm/issues/41286 Covered in CI
- cf567cb #39336 — [Attention] Improve attention benchmarks: configs and profiling (#39336)
- 作者: Matthew Bonanni | +573/-167 | 15 个文件
- Switch timing to Triton do_bench/do_bench_cudagraph (replaces manual CUDA-event timing; –warmup-ms replaces –repeats/–warmup-iters) - Add –ncu-profile for Nsight Compute profiling with source correlation - Support multi-parameter sweeps (override several model dims per sweep entry) - Add –num-splits for FlashAttention split-K control - Thread –v-head-dim and MLA dims (–kv-lora-rank, –qk-…
- 39cb9bf #45362 — [ROCm] Bump Torch to 2.11 (#45362)
- 作者: Micah Williamson | +2/-4 | 1 个文件
PyTorch 2.11 on ROCm CI build with this base: https://buildkite.com/vllm/amd-ci/builds/9408
- aab639c #43154 — [Core][AMD] Propagate shutdown timeout to MultiprocExecutor (#43154)
- 作者: Ryan Rock | +71/-2 | 5 个文件
rocprofv3 requires a grace period during process shutdown in order to emit trace data. This PR adds the environment variable VLLM_WORKER_SHUTDOWN_TIMEOUT_SECONDS that sets a shutdown grace period for worker processes of MultiProcExecutor. The env var is also passed to the engine manager shutdown. Previously, running a command like the below would fail. Similarly, any rocprofv3 trace command that t…
- 6635279 #39612 — [Migration] Migrate GGUF quantization support to plugin (#39612)
- 作者: Isotr0py | +71/-9047 | 57 个文件
After this PR, GGUF support will be migrated to https://github.com/vllm-project/vllm-gguf-plugin, you can still use GGUF models normally after plugin installation! - Related issues: https://github.com/vllm-project/vllm/issues/39583 and https://github.com/vllm-project/vllm-omni/issues/2700 -
This is a draft PR used to assist with GGUF plugin development.## Test Result All tests pass. — - d6fd7ce #45319 — [Model][Dflash] Enable Dflash support for Qwen3NextForCausalLM targets (#45319)
- 作者: Jonas I. Liechti | +10/-0 | 2 个文件
Enable DFlash (method=“dflash”) speculative decoding for Qwen3NextForCausalLM-based models (Qwen3-Next / Qwen3-Coder-Next 80B-A3B). This addresses #33329 and other failed attempts. ## Problem method=“dflash” crashes at model-load time for any Qwen3NextForCausalLM target with: Crash path (v1/worker/gpu_model_runner.py): 1. Line 593–595: use_dflash() unconditionally sets self.use_aux_hidden_state_ou…
- 053e7da #44930 — [Model] Add encoder CUDA graph support to Lfm2VL (#44930)
- 作者: Yi Zhong | +416/-18 | 1 个文件
@Liquid4All ’s internal commit cut. LFM2 Moe VL: Has SupportsEncoderCudaGraph. Bench latency: ~10-20% lower e2e latency for low bs. Accuracy was tested with internal scripts (i.e logits + rouge) MODEL=/root/.cache/huggingface/hub/models–LiquidAI–LFM2-VL-3B/snapshots/97a81f5c18b73352134099952a4856e2553d42d7 Encoder CG flag ## Test Result — **BEFORE SUBMITTING, PLEASE READ <https://docs.vllm…
- 5af4aec #45216 — [Rust Frontend] Add standalone
granite4tool parser (#45216)- 作者: Tahsin Tunan | +511/-7 | 6 个文件
Summary Adds a standalone granite4 tool parser for the Rust frontend (tracking: #44280). Follow-up of #44713. - Granite 4 tool parser (granite4) — paired <tool_call>…</tool_call> blocks; arguments may be a JSON object or an escaped JSON string. ### Notes - Granite 4 arguments can be an escaped JSON string, not just an object — real model behavior (cf. #36827). We decode the string …
- a30addc #44055 — [Docs][KV Connector][NIXL] document KV Transfer stat logging and Prometheus metrics (#44055)
- 作者: Sai Sridhar Tarra | +48/-0 | 1 个文件
Partially addresses #41230. Adds a Metrics Reference section to docs/features/nixl_connector_usage.md explaining every field in the periodic KV Transfer metrics log line and all seven Prometheus metrics registered by NixlPromMetrics. The descriptions are derived directly from vllm/distributed/kv_transfer/kv_connector/v1/nixl/stats.py (NixlKVConnectorStats.reduce() and NixlPromMetrics). ## What…
- 9ff278b #43877 — [Core][KV Connector] fix scheduler KV connector stats aggregation (#43877)
- 作者: Srinivas Krovvidi | +102/-8 | 3 个文件
Extracts the scheduler KV connector stats ordering/aggregation fix from #35669 into a dedicated PR. This fixes scheduler-side KV connector stats collection so that: - update_connector_output() runs before scheduler-side stats are collected. - worker-side and scheduler-side KV connector stats are aggregated when both are present. - scheduler-only KV connector stats are still emitted when no worker-…
- c7aa3d2 #35022 — [Core] Support structured outputs for beam search (#35022)
- 作者: Guan-Ming (Wesley) Chiu | +405/-70 | 3 个文件
Support structured outputs (e.g., JSON schema) for beam search. Previously, beam search had no way to constrain generation to valid JSON or other grammar-defined formats. This adds grammar-based constrained decoding to the beam search loop. Related: https://github.com/vllm-project/vllm/issues/34782 pytest tests/samplers/test_beam_search.py::test_beam_search_structured_output -v ## Test Result Loca…
- fbc3a19 #42759 — [Bug] Migrate Reset cache for both v2 and v1 model runner (#42759)
- 作者: Wentao Ye | +3/-2 | 2 个文件
Migrate Reset cache for both v2 and v1 model runner Solve https://github.com/vllm-project/vllm/pull/42673#issuecomment-4461618459
- 4171ae4 #39457 — [V1][Metrics] Add MLA attention metrics for DeepSeek MFU estimation (#39457)
- 作者: Thillai Chithambaram | +600/-0 | 2 个文件
Adds MLAAttentionMetrics to the V1 performance metrics module to correctly estimate FLOPs and memory bandwidth for models using Multi-Latent Attention (MLA), such as DeepSeek-V2, DeepSeek-V3, and DeepSeek-R1. The existing AttentionMetrics assumes standard MHA or GQA attention patterns with separate K/V projections and large KV cache representations. MLA introduces a fundamentally different archite…
- b7f9b6a #42206 — [Metrics] Add group-aware KV cache capacity to vllm:cache_config_info (#42206)
- 作者: Ethan Feng | +75/-26 | 7 个文件
Addresses the Prometheus vs. startup-log discrepancy for KV cache capacity in #42024. The startup log already reports the correct group-aware KV cache capacity for hybrid models, but Prometheus did not expose matching info in ‘vllm:cache_config_info. This PR adds two: - kv_cache_size_tokens : Per-DP-engine KV cache capacity in tokens (group-aware). Uses group-aware capacity since num_gpu_blocks * …
- f1e13f7 #45129 — [Model] Remove Mono-InternVL (InternLM2VEForCausalLM) (#45129)
- 作者: Tiezhen WANG | +53/-262 | 9 个文件
Removes the InternLM2VEForCausalLM Visual-Expert variant used only by OpenGVLab/Mono-InternVL-2B (~415 HF downloads, model abandoned upstream). Per vllm-release telemetry: 0 instances / 0 GPU-hours across the last 6 months of releases. The model is also blocked under Transformers v5 (the test registry pinned it to max_transformers_version=“4.57”). Also strips the Mono-InternVL branches from Intern…
- 88ed636 #35264 — [KV Connector]: Support KV push from Prefill to Decode node using Nixl KV Connector (#35264)
- 作者: snadampal | +6335/-3370 | 26 个文件
RFC https://github.com/vllm-project/vllm/issues/36923 Implemented KV push feature where Prefill node pushes its KV blocks to Decode node as soon as the model executor completes the forward pass and finishes request. The implementation supports heterogeneous TP and heterogeneous block sizes between P and D nodes And it covers both the scenarios: Scenario 1: D registers blocks with P before P finish…
- a014ddd #45304 — [11b/n] Migrate Machete kernels to torch stable ABI (#45304)
- 作者: Chris Leonard | +341/-323 | 17 个文件
This PR continues the libtorch stable ABI migration (see #26946) for vLLM Machete CUDA kernels by moving the Machete tree (host entry point, launchers, CUTLASS/CuTe device headers, and codegen) into csrc/libtorch_stable/quantization/machete/, registering machete_mm, machete_prepack_B, and machete_supported_schedules on _C_stable_libtorch, and removing them from legacy _C. CMake Machete generation …
- f715f25 #45113 — Fix misleading error for audio duration limit rejection (#45113)
- 作者: Juan Pérez de Algaba | +11/-6 | 2 个文件
Let the descriptive ValueError from load_audio propagate directly instead of catching it and re-raising a generic “Invalid or unsupported audio file” message. Also update the error messages to mention the VLLM_MAX_AUDIO_DECODE_DURATION_S env var so users know how to increase the limit.
- 462ef83 #45294 — Update hidden states extraction integration test triggers (#45294)
- 作者: Fynn Schmitt-Ulms | +15/-0 | 1 个文件
The example_hidden_states_connector.py file is used significantly by the hidden states extraction system. This pr ensures that changes to it also trigger the integration tests. This pr also adds a second job that runs just the multi-gpu tests in tests/v1/kv_connector/extract_hidden_states_integration which are currently not run. #43805 added a test that requires TP=2 but didn’t add this trigger. E…
- 04cec9e #45240 — [XPU][DeepSeek-V4] Fix MTP: sync with upstream fixes #44821 and #43746 (#45240)
- 作者: Ma Jian | +29/-18 | 1 个文件
Sync the XPU DeepSeek V4 MTP implementation with two upstream fixes: 1. #44821 — fix: prefix DeepSeek V4 MTP projections - Pass explicit prefix= to e_proj and h_proj ReplicatedLinear layers so compressed-tensors can match artifact-side ignore/target rules. 2. #43746 — [Model Refactoring] Remove torch compile dependency in DSv4 - Remove @support_torch_compile decorator, align with breakable…
- 0cd9b7a #43409 — [CPU] Support CPU W4A16 INT4 MoE (#43409)
- 作者: Yuwen Zhou | +685/-22 | 8 个文件
Support cpu AWQ, GPTQ & compressed-tensor W4A16 INT4 MoE for Intel CPUs. python -m pytest tests/kernels/moe/test_cpu_quant_fused_moe.py -v ## Test Result 1. AWQ W4A16 INT4 MoE python examples/basic/offline_inference/generate.py –model QuixiAI/Qwen3-30B-A3B-AWQ –max-model-len 512 –enforce-eager 2. GPTQ W4A16 INT4 MoE python examples/basic/offline_inference/generate.py –model Qwen/Qwen3-…
📖 Documentation
- 0d29612 #45412 — [Doc] Fix uv dependency resolution failure for setuptools during CPU source builds (x86 & ARM) (#45412)
- 作者: midas | +4/-4 | 2 个文件
Fixes an immediate uv dependency resolution failure encountered when users follow the official documentation to build the CPU backend from source (impacting both Intel/AMD x86 and ARM AArch64). The uv pip install commands utilize the –torch-backend cpu flag, pointing uv to the PyTorch wheel index. Due to uv’s strict default security policy preventing dependency confusion, it checks the PyTorch in…
- a37b4a9 #45301 — [Doc] AGENTS.md: add section about coding style (#45301)
- 作者: Thomas Parnell | +9/-0 | 1 个文件
Add instructions to AGENTS.md to steer agent-assisted contributions away from inserting excessively long comments and docstrings. Adapted from PyTorch’s CLAUDE.md: https://github.com/pytorch/pytorch/blob/main/CLAUDE.md#coding-style-guidelines n/a ## Test Result n/a —
🐛 Bug Fix
- 5b2943f #45460 — [Bugfix] Return the tokenizer from maybe_make_thread_pool so it survives pickling (#45460)
- 作者: WEI CHENG CHIU | +28/-1 | 2 个文件
Fix #45433: tokenizers wrapped by maybe_make_thread_pool (every fast tokenizer returned by LLM.get_tokenizer() / AsyncLLM.get_tokenizer() since the thread-pool wrapper landed) unpickle to None, breaking tokenizer retrieval across Ray actors, multiprocessing, and any cloudpickle path. Mechanism: TokenizerPool.reduce reconstructs via maybe_make_thread_pool(og_tokenizer, copies), but the PreT…
- ff5a30c #42700 — [Bugfix] Replace deprecated Qwen2VLImageProcessorFast with Qwen2VLImageProcessor (#42700)
- 作者: longguo | +3/-3 | 1 个文件
Closes #42688. transformers#43514 (released in transformers 5.4.0) deprecated the Fast suffix for image processors. Importing qwen3_vl.py directly, or transitively from any module that touches it, now eats a deprecation warning on every load: Swap the three references in vllm/model_executor/models/qwen3_vl.py (1 import + 2 type hints) to use the current Qwen2VLImageProcessor name. The deprecated a…
- 17ee5b1 #45376 — [Bugfix] Set type/role explicitly in streaming message_start event (#45376)
- 作者: WEI CHENG CHIU | +43/-0 | 2 个文件
Fix #45367: the /v1/messages streaming path builds the message_start event without explicitly setting the nested message’s type/role, then serializes it with model_dump_json(exclude_unset=True). Since AnthropicMessagesResponse declares type: Literal[“message”] = “message” and role: Literal[“assistant”] = “assistant” as defaults, exclude_unset=True drops both from the wire. Strict Anthropic SDK cli…
- 1a36978 #45347 — [BugFix] Avoid prematurely freeing cached mm encoder outputs (#45347)
- 作者: Nick Hill | +182/-3 | 2 个文件
Can happen in async scheduling + spec decoding case. Hopefully addresses https://github.com/vllm-project/vllm/issues/38551. Claude was used for the tests.
- e3e31e5 #45401 — [Bugfix][CPU] Don’t build triton-cpu on arm64 release image (#45401)
- 作者: Kevin H. Luu | +11/-0 | 1 个文件
The arm64 CPU release image build fails while compiling triton-cpu: (seen in the v0.23.0 release pipeline: release-v2 build 2626, job “Build release image - arm64 - CPU”) triton-cpu is an x86/CPU-only component and should not be built on arm64 at all. It is gated by: ### Root cause VLLM_CPU_X86 is declared (ARG/ENV, default 0) only in the vllm-build stage. The vllm-triton-cpu-build and vllm-op…
- 8af550b #45394 — [BUGFIX][XPU] Update fa interface for compatibility (#45394)
- 作者: liuzhenwei | +2/-0 | 1 个文件
Test Result —
- 1ae1051 #45286 — [Bugfix][Rust Frontend] Return 400 for prompt-validation submit errors (#45286)
- 作者: JinYan Su | +89/-18 | 4 个文件
Tokenized-prompt validation failures raised during request lowering (PromptTooLong, EmptyPromptTokenIds) are wrapped in the blanket server_error! at the three submit sites, so a client sending a prompt over max_model_len receives HTTP 500 server_error instead of the 400 invalid_request_error the Python frontend returns for the same mistake: Clients can’t distinguish “my request is invalid” from “t…
- 87b98d6 #45300 — [Rust Frontend][Bugfix] Forward –shutdown-timeout and –disable-log-stats to the managed Python engine (#45300)
- 作者: Will Eaton | +47/-0 | 3 个文件
In vllm-rs serve (managed mode), recognized frontend flags are kept on the Rust side by the CLI splitter, so flags the spawned Python engine must also see have to be re-forwarded explicitly in into_config. Two flags were missing from that list: - –shutdown-timeout: the engine core always ran with its default shutdown_timeout=0 (abort mode), so on SIGTERM it killed all in-flight requests immediate…
- a2c72d4 #45374 — [Bugfix] Fix Dockerfile dependency graph pre-commit error (#45374)
- 作者: Isotr0py | +0/-0 | 1 个文件
- Fix pre-commit error on main branch: https://github.com/vllm-project/vllm/actions/runs/27395278734/job/80961192173?pr=45129 ## Test Result All tests pass —
🧪 CI/Tests
- 1033ffa #45489 — [CI] Wait for SSL cert refresher events in the test (#45489)
- 作者: Andreas Karatzas | +37/-7 | 1 个文件
This PR fixes a rare failure in the AMD API server job: Buildkite: The test was touching the watched cert files, sleeping for one second, and then asserting that the mock SSL context had reloaded. That is a little too hopeful for an async file watcher on a busy CI machine. In the failing run, the cert file change was observed, but the CA reload had not happened before the fixed sleep expired. This…
- bd59c91 #45274 — [CI] ci-fetch-log.sh: fetch all failed jobs from a build URL or PR number (#45274)
- 作者: Michael Goin | +174/-50 | 4 个文件
Make CI log fetching one obvious command for humans and agents. Previously ci-fetch-log.sh required a job UUID, and web-UI URLs (/list?sid=<step_uuid>) failed with a 403 because the sid is a step uuid, not a job uuid. Now: Logs are saved as ci-
- .log with \t printed per job; - streams a single job to stdout; reruns keep existing files unless CI_FETCH_LOG_FORCE=1. Th…
⚡ Performance
- badddd2 #45103 — [ROCm][DSV4][Perf] Fuse inverse-RoPE and cache bf16 wo_a in o-projection (#45103)
- 作者: Fangzhou Ai | +341/-59 | 2 个文件
The ROCm DeepSeek V4 o-projection (rocm_inv_rope_einsum, run once per decode layer) ran the inverse GPT-J RoPE as ~10 small PyTorch kernels (clone, index_select, 2x repeat_interleave, neg, stack, cat, casts) and re-dequantized the static fp8 wo_a weight every step (fp8->fp32->*scale ->bf16), which showed up in the decode profile as the two largest copy/mul kernels. - Add _inverse_rope_gptj_kernel …
- efe7adb #45322 — [Perf] Use native DSA indexer decode path for next_n > 2 on SM100 (#45322)
- 作者: qizixi | +15/-11 | 1 个文件
On SM100, the DeepGEMM paged MQA logits kernels support any next_n natively (multi-atom decomposition, FP8 and FP4 indexer caches), so the FP4 indexer cache no longer needs the flattening fallback for next_n > 2 — flattening is kept only outside the SM100 family, where the FP8 kernel requires next_n ∈ (1, 2) (deepgemm smxx_fp8_fp4_paged_mqa_logits.hpp:233). Implements the in-tree TODO (matt): inte…
🖥️ Kernel
- 9eaacb2 #45295 — [Kernel] Consolidate Marlin thread-tile padding across all dense Marlin paths (#45295)
- 作者: Michael Goin | +770/-66 | 7 个文件
Marlin GEMM/repack require the rank-local (N, K) to match a thread-tile family: (n%64, k%128) or (n%128, k%64). TP sharding can produce shapes satisfying neither — FP4/FP8 paths crash at repack (e.g. nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4 at TP4) and GPTQ/AWQ/WNA16 reject Marlin and fall back to slower kernels. Fix: zero-pad weights/scales to the nearest valid tile with one shared mechanis…
- 272c169 #33790 — [Kernel][Helion][1/N] Add Helion kernel for dynamic_per_token_scaled_fp8_quant (#33790)
- 作者: Xiaohong (Sean) Chen | +7540/-0 | 4 个文件
This PR is to add Helion kernel for operation. It follows the implementation from the vllm c version. This is a subtask for https://github.com/vllm-project/vllm/issues/32962. ### Kernel level benchmark Environment Python: 3.12.12 Pytorch: 2.11.0 Cuda: 13.0 Helion: 1.0.0 Benchmark Setup Latency measure: Baseline: and Autotuning Setup Default “full” autotuning effort. i.e. LFBOTreeSearch…
🔧 Refactor
- 6e4a547 #45431 — [Refactor] Deprecate ResponsesParser wrapper, inline parsing into ParsableContext (#45431)
- 作者: Flora Feng | +169/-308 | 5 个文件
ResponsesParser was an unnecessary indirection layer between ParsableContext and Parser. It held state (response_messages, finish_reason) that logically belongs on ParsableContext, and its process() method was just three lines delegating to Parser.parse() + build_response_output_items(). Removing it simplifies the call chain from ParsableContext → ResponsesParser → Parser to ParsableContext → Pars…
🦀 Rust Frontend
- 3b8fc3f #45396 — [Frontend] Support strict mode for tool calling with ResponsesAPI (#45396)
- 作者: Chauncey | +98/-23 | 5 个文件
Follow up https://github.com/vllm-project/vllm/pull/45003 [Frontend] Support strict mode for tool calling with ResponsesAPI see e2e ## Test Result —
- 2043258 #45003 — [Frontend] Support strict mode for tool calling (#45003)
- 作者: Chauncey | +672/-1936 | 29 个文件
Co-authored-by: @cjackal 44624812+cjackal@users.noreply.github.com [Frontend] Support strict mode for tool calling I tested it locally with Minimax 2.5,Qwen2.5, Qwen3.5, Qwen3.6, Qwen3, and DeepSeek V3.2. I also tested the tool_choice modes required, auto, and named tool selection, and all of them worked correctly. ## Test Result main: this pr —