工具调用解析器

Twinkle 的模板系统包含模块化的工具调用解析框架,用于训练具有函数调用能力的模型。

架构

ToolCallRegistry
├── HermesQwenParser  — Hermes/Qwen 风格 <tool_call>...</tool_call>
├── ReActParser       — ReAct Thought/Action/Observation
├── ClineParser       — Cline XML 工具调用
└── VCPParser         — VCP 协议

ToolCallParser 接口

from twinkle.template.tools import ToolCallParser

class ToolCallParser(ABC):
    name: str = ''

    def detect(self, text: str) -> bool:
        """检查文本是否包含此格式的标记"""

    def parse(self, text: str) -> List[Dict[str, Any]]:
        """提取 OpenAI 格式的工具调用"""

    def clean(self, text: str) -> str:
        """去除标记,返回纯内容"""

ToolCallRegistry

注册表自动发现解析器并路由检测:

from twinkle.template.tools import ToolCallRegistry

# 检测补全使用了哪种格式
parser = ToolCallRegistry.detect_first(completion_text)
if parser:
    tool_calls = parser.parse(completion_text)

内置解析器

解析器 格式说明
HermesQwenParser <tool_call>{"name": "...", "arguments": {...}}</tool_call>
ReActParser Thought/Action/Action Input/Observation
ClineParser Cline XML 结构化参数
VCPParser Visual Code Protocol