Skip to content

verl 0.7.x embedded vLLM server cannot load custom tool parser plugins (tool_parser_plugin import step skipped) #592

Description

@zzzhang1127

Summary

On the verl 0.7.x/0.8.x line that Agent Lightning pins, a custom vLLM tool-call parser plugin (--tool-parser-plugin / config tool_parser_plugin) can never be used with the embedded vLLM OpenAI server: verl's custom server entrypoint skips the plugin-import step that vllm serve performs, so the server dies at startup with:

ValueError: --enable-auto-tool-choice requires tool_parser:'<name>' which has not been registered

This matters for agent RL on models whose tool-call format has no built-in vLLM parser (in our case a MiniCPM-family model) — exactly the population Agent Lightning serves.

Root cause

Fix we run in production

A 4-line patch at the top of verl's run_server (applied to site-packages):

if getattr(args, "tool_parser_plugin", None):
    from vllm.entrypoints.openai.tool_parsers import ToolParserManager
    ToolParserManager.import_tool_parser(args.tool_parser_plugin)

With this, actor_rollout_ref.rollout.multi_turn.tool_config-style configs with a custom parser plugin work end-to-end (running in our GRPO training since 09-08).

Proposal

This fits the same pattern as #589 / PR #590: a runtime shim in agentlightning/verl/vllm_compat.py that wraps vLLMHttpServer.run_server to perform the plugin import before delegating (strict no-op when no plugin is configured or the attribute doesn't exist). I'm happy to submit that PR — it builds on the compat module introduced in #590, so I'd stack it once #590 has a verdict.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions