File size: 852 Bytes
7d7bc87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from dataclasses import dataclass, field
from typing import Any, Dict, Optional, Set


@dataclass
class ToolMetadata:
    name: str
    requires_env: Set[str] = field(default_factory=set)
    defaults: Dict[str, Any] = field(default_factory=dict)
    enable_reformat: bool = False
    flow: Optional[str] = None  # 例如 "navigation"


@dataclass
class ToolResult:
    name: str
    message: str
    data: Optional[Any] = None
    raw: Optional[Dict[str, Any]] = None
    metadata: Optional[Dict[str, Any]] = None

    def to_dict(self) -> Dict[str, Any]:
        payload: Dict[str, Any] = {
            "message": self.message,
            "tool_name": self.name,
        }
        if self.data is not None:
            payload["tool_data"] = self.data
        if self.metadata:
            payload["metadata"] = self.metadata
        return payload