easydel.inference.tools.parsers.step3_tool_parser#

class easydel.inference.tools.parsers.step3_tool_parser.Step3ToolParser(tokenizer: AutoTokenizer)[source]#

Bases: ToolParser

Tool parser for Step3 models with XML-like format.

Uses a robust, stateful, cursor-based streaming parser that consolidates tool arguments into single messages. Handles complex nested tool call structures with special delimiters.

Features: - Cursor-based position tracking - Hierarchical token structure with special characters - steptml:invoke format parsing - Automatic type casting based on schema - State machine for streaming parsing

Format: <|tool_calls_begin|> <|tool_call_begin|> function<|tool_sep|> <steptml:invoke name=”func”> <steptml:parameter name=”param”>value</steptml:parameter> </steptml:invoke> <|tool_call_end|> <|tool_calls_end|>

Note: Uses fullwidth vertical line characters (|) as delimiters.

SPECIAL_TOKENS = ['<|tool_calls_begin|>', '<|tool_calls_end|>', '<|tool_call_begin|>', '<|tool_call_end|>']#
TOOL_CALLS_BEGIN = '<|tool_calls_begin|>'#
TOOL_CALLS_END = '<|tool_calls_end|>'#
TOOL_CALL_BEGIN = '<|tool_call_begin|>'#
TOOL_CALL_END = '<|tool_call_end|>'#
TOOL_SEP = '<|tool_sep|>'#
adjust_request(request: ChatCompletionRequest) ChatCompletionRequest[source]#

Adjust request parameters for model-specific requirements.

Override this method to modify request parameters like system prompts, tool definitions, or formatting before processing. Default implementation returns the request unchanged.

Parameters

request – Original chat completion request

Returns

Potentially modified request

Return type

ChatCompletionRequest

Example

Some models may need to reformat tool definitions or add specific system instructions for proper tool calling.

extract_tool_calls(model_output: str, request: ChatCompletionRequest) ExtractedToolCallInformation[source]#

Extract tool calls from complete model output (batch mode).

Parses the entire model response to identify and extract tool/function calls. This method is used for non-streaming responses where the complete output is available.

Parameters
  • model_output – Complete text generated by the model

  • request – Original request containing tool definitions

Returns

Parsed tool calls and remaining content

Return type

ExtractedToolCallInformation

Raises

NotImplementedError – Must be implemented by subclasses

Note

This method is stateless - it doesn’t use instance state. Each parser implements model-specific extraction logic.

extract_tool_calls_streaming(previous_text: str, current_text: str, delta_text: str, previous_token_ids: Sequence[int], current_token_ids: Sequence[int], delta_token_ids: Sequence[int], request: ChatCompletionRequest) easydel.inference.openai_api_modules.DeltaMessage | None[source]#

Extract tool calls from streaming model output.

Processes incremental model output to identify partial tool calls and emit appropriate streaming updates. Maintains state across calls to handle incomplete JSON/XML structures.

Parameters
  • previous_text – Text accumulated up to previous call

  • current_text – Text accumulated including current chunk

  • delta_text – New text in current chunk

  • previous_token_ids – Token IDs up to previous call

  • current_token_ids – Token IDs including current chunk

  • delta_token_ids – New token IDs in current chunk

  • request – Original request with tool definitions

Returns

Incremental tool call update, or None if no update

Return type

DeltaMessage

Raises

NotImplementedError – Must be implemented by subclasses

Note

This method is stateful - it uses instance variables to track parsing progress across streaming chunks.