Files
agent/langgraph_qwen/prebuilt.py
2025-08-30 23:29:26 +08:00

37 lines
1.2 KiB
Python

from typing import Any, Dict, Iterable, List, Optional
from .factory import get_qwen_chat_model, bind_qwen_tools
from .validators import validate_tool_names, ToolValidationError
def create_qwen_react_agent(
tools: List[Any],
*,
model: Optional[Any] = None,
prefer: str = "custom",
tool_choice: Optional[str] = "auto",
model_kwargs: Optional[Dict[str, Any]] = None,
enforce_tool_name_check: bool = True,
**agent_kwargs: Any,
):
"""
Sugar around langgraph.prebuilt.create_react_agent configured for Qwen.
- If `model` is None, constructs one via get_qwen_chat_model(prefer=..., **model_kwargs).
- Binds tools and applies `tool_choice`.
- Returns a LangGraph ReAct agent ready to invoke/stream.
"""
from langgraph.prebuilt import create_react_agent as _create
model_kwargs = model_kwargs or {}
# Strictly validate tool names before binding, if enabled
if enforce_tool_name_check:
validate_tool_names(tools, strict=True)
if model is None:
model = get_qwen_chat_model(prefer=prefer, **model_kwargs)
model = bind_qwen_tools(model, tools, tool_choice=tool_choice)
return _create(model, tools, **agent_kwargs)