OhBrian's picture
更新为llm判断工具函数调用
e7e1e90
Raw
History Blame Contribute Delete
671 Bytes
from dataclasses import dataclass
from typing import Any, Callable
ToolContext = dict[str, Any]
ToolArgs = dict[str, Any]
ToolRunner = Callable[[ToolArgs, ToolContext], dict[str, Any]]
@dataclass(frozen=True)
class ToolSpec:
name: str
description: str
input_schema: dict[str, Any]
run: ToolRunner
enabled: bool = True
cost_level: str = "low"
def prompt_block(self) -> str:
enabled_text = "enabled" if self.enabled else "disabled"
return (
f"- {self.name} ({enabled_text}, cost={self.cost_level})\n"
f" description: {self.description}\n"
f" args_schema: {self.input_schema}"
)