refactor(tool_parser): CCCL agent_radix_sort_downsweep union TempStorage — phased state
Applies CCCL cub/agent/agent_radix_sort_downsweep.cuh design: - union TempStorage reuses same shared memory across load/rank/scatter phases - Translated: streaming parse state organized into 4 phases (DETECT/HEADER/PARAMS/CLOSE) matching the tool call parse lifecycle - Clear documentation of which state belongs to which parse phase - Reset clears all phases at once like union initialization on new tile
This commit is contained in:
@@ -104,21 +104,33 @@ class Qwen3CoderToolParser(ToolParser):
|
|||||||
return f"call_{uuid.uuid4().hex[:24]}"
|
return f"call_{uuid.uuid4().hex[:24]}"
|
||||||
|
|
||||||
def _reset_streaming_state(self) -> None:
|
def _reset_streaming_state(self) -> None:
|
||||||
|
"""CCCL agent_radix_sort_downsweep union TempStorage pattern:
|
||||||
|
Streaming parse state is organized in phases like CUDA shared memory
|
||||||
|
that gets reused across load/rank/scatter phases. Each tool call
|
||||||
|
transitions through phases: DETECT → HEADER → PARAMS → CLOSE.
|
||||||
|
Reset all phase state at once (like clearing the union on new tile)."""
|
||||||
|
# Phase: DETECT (looking for <tool_call>)
|
||||||
self.current_tool_index = 0
|
self.current_tool_index = 0
|
||||||
self.is_tool_call_started = False
|
self.is_tool_call_started = False
|
||||||
|
self.accumulated_text: str = ""
|
||||||
|
self.streaming_request: Optional[ChatCompletionRequest] = None
|
||||||
|
|
||||||
|
# Phase: HEADER (parsing <function=name>)
|
||||||
self.header_sent = False
|
self.header_sent = False
|
||||||
self.current_tool_id = None
|
self.current_tool_id = None
|
||||||
self.current_function_name: Optional[str] = None
|
self.current_function_name: Optional[str] = None
|
||||||
|
|
||||||
|
# Phase: PARAMS (parsing <parameter=key>value</parameter>)
|
||||||
self.current_param_name: Optional[str] = None
|
self.current_param_name: Optional[str] = None
|
||||||
self.current_param_value: str = ""
|
self.current_param_value: str = ""
|
||||||
self.param_count = 0
|
self.param_count = 0
|
||||||
self.in_param = False
|
self.in_param = False
|
||||||
self.in_function = False
|
self.in_function = False
|
||||||
self.accumulated_text: str = ""
|
self.accumulated_params: Dict[str, Any] = {}
|
||||||
|
|
||||||
|
# Phase: CLOSE (emitting JSON and transitioning to next tool)
|
||||||
self.json_started = False
|
self.json_started = False
|
||||||
self.json_closed = False
|
self.json_closed = False
|
||||||
self.accumulated_params: Dict[str, Any] = {}
|
|
||||||
self.streaming_request: Optional[ChatCompletionRequest] = None
|
|
||||||
|
|
||||||
def _get_arguments_config(
|
def _get_arguments_config(
|
||||||
self, func_name: str,
|
self, func_name: str,
|
||||||
|
|||||||
Reference in New Issue
Block a user