44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
"""vLLM-specific helpers for the vllm and vllm-omni gRPC backends.
|
|
|
|
Generic helpers (``parse_options``, ``messages_to_dicts``) live in
|
|
``python_utils`` and are re-exported here for backwards compatibility with
|
|
existing imports in both backends.
|
|
"""
|
|
import sys
|
|
|
|
from python_utils import messages_to_dicts, parse_options
|
|
|
|
__all__ = ["parse_options", "messages_to_dicts", "setup_parsers"]
|
|
|
|
|
|
def setup_parsers(opts):
|
|
"""Return ``(tool_parser_cls, reasoning_parser_cls)`` from an opts dict.
|
|
|
|
Uses vLLM's native ``ToolParserManager`` / ``ReasoningParserManager``.
|
|
Returns ``(None, None)`` if vLLM isn't installed or the requested
|
|
parser name can't be resolved.
|
|
"""
|
|
tool_parser_cls = None
|
|
reasoning_parser_cls = None
|
|
|
|
tool_parser_name = opts.get("tool_parser")
|
|
reasoning_parser_name = opts.get("reasoning_parser")
|
|
|
|
if tool_parser_name:
|
|
try:
|
|
from vllm.tool_parsers import ToolParserManager
|
|
tool_parser_cls = ToolParserManager.get_tool_parser(tool_parser_name)
|
|
print(f"[vllm_utils] Loaded tool_parser: {tool_parser_name}", file=sys.stderr)
|
|
except Exception as e:
|
|
print(f"[vllm_utils] Failed to load tool_parser {tool_parser_name}: {e}", file=sys.stderr)
|
|
|
|
if reasoning_parser_name:
|
|
try:
|
|
from vllm.reasoning import ReasoningParserManager
|
|
reasoning_parser_cls = ReasoningParserManager.get_reasoning_parser(reasoning_parser_name)
|
|
print(f"[vllm_utils] Loaded reasoning_parser: {reasoning_parser_name}", file=sys.stderr)
|
|
except Exception as e:
|
|
print(f"[vllm_utils] Failed to load reasoning_parser {reasoning_parser_name}: {e}", file=sys.stderr)
|
|
|
|
return tool_parser_cls, reasoning_parser_cls
|