此文档由 make doc-gen 命令从 Python 源码注释自动生成。
Tool
通用工具定义和转换模块
提供跨框架的通用工具定义和转换功能。
支持多种定义方式:
- 使用 @tool 装饰器 - 最简单,推荐
- 使用 Pydantic BaseModel - 类型安全
- 使用 ToolParameter 列表 - 灵活但繁琐
支持转换为以下框架格式:
- OpenAI Function Calling
- Anthropic Claude Tools
- LangChain Tools
- Google ADK Tools
- AgentScope Tools
类
ToolParameter
class ToolParameter
工具参数定义
Attributes:
name: 参数名称param_type: 参数类型(string, integer, number, boolean, array, object)description: 参数描述required: 是否必填default: 默认值enum: 枚举值列表items: 数组元素类型(当 param_type 为 array 时使用)properties: 对象属性(当 param_type 为 object 时使用)format: 额外的格式限定(如 int32、int64 等)nullable: 是否允许为空
方法
🔹 构造函数
def __init__(self, name: str, param_type: str, description: str = '', required: bool = False, default: Any = None, enum: Optional[List[Any]] = None, items: Optional[Dict[str, Any]] = None, properties: Optional[Dict[str, Any]] = None, format: Optional[str] = None, nullable: bool = False)
🔹 to_json_schema
def to_json_schema(self) -> Dict[str, Any]
转换为 JSON Schema 格式
Tool
class Tool
通用工具定义
支持多种参数定义方式:
- 使用 parameters 列表(ToolParameter)
- 使用 args_schema(Pydantic BaseModel)
Attributes:
name: 工具名称description: 工具描述parameters: 参数列表(使用 ToolParameter 定义)args_schema: 参数模型(使用 Pydantic BaseModel 定义)func: 工具执行函数
方法
🔹 构造函数
def __init__(self, name: str, description: str = '', parameters: Optional[List[ToolParameter]] = None, args_schema: Optional[Type[BaseModel]] = None, func: Optional[Callable] = None)
🔹 get_parameters_schema
def get_parameters_schema(self) -> Dict[str, Any]
获取参数的 JSON Schema
🔹 to_openai_function
def to_openai_function(self) -> Dict[str, Any]
转换为 OpenAI Function Calling 格式
🔹 to_anthropic_tool
def to_anthropic_tool(self) -> Dict[str, Any]
转换为 Anthropic Claude Tools 格式
🔹 to_langchain
def to_langchain(self) -> Any
转换为 LangChain Tool 格式
优先使用适配器模式,如果适配器未注册则回退到旧实现。
🔹 to_google_adk
def to_google_adk(self) -> Callable
转换为 Google ADK Tool 格式
优先使用适配器模式,如果适配器未注册则回退到旧实现。 Google ADK 直接使用 Python 函数作为工具。
🔹 to_agentscope
def to_agentscope(self) -> Dict[str, Any]
转换为 AgentScope Tool 格式
🔹 to_langgraph
def to_langgraph(self) -> Any
转换为 LangGraph Tool 格式
LangGraph 与 LangChain 完全兼容,因此使用相同的接口。
🔹 to_crewai
def to_crewai(self) -> Any
转换为 CrewAI Tool 格式
CrewAI 内部使用 LangChain,因此使用相同的接口。
🔹 to_pydanticai
def to_pydanticai(self) -> Any
转换为 PydanticAI Tool 格式
🔹 bind
def bind(self, instance: Any) -> 'Tool'
绑定工具到实例,便于在类中定义工具方法
🔹 openai
def openai(self) -> Dict[str, Any]
to_openai_function 的别名
🔹 langchain
def langchain(self) -> Any
to_langchain 的别名
🔹 google_adk
def google_adk(self) -> Callable
to_google_adk 的别名
🔹 pydanticai
def pydanticai(self) -> Any
to_pydanticai 的别名(暂未实现)
CommonToolSet
class CommonToolSet
工具集
管理多个工具,提供批量转换和过滤功能。
默认会收集子类中定义的 Tool 属性,因此简单的继承即可完成
工具集的声明。也可以通过传入 tools_list 或调用 register
方法来自定义工具集合。
Attributes:
tools_list: 工具列表
方法
🔹 构造函数
def __init__(self, tools_list: Optional[List[Tool]] = None)
🔹 tools
def tools(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None)
获取工具列表
Args:
prefix: 为所有工具名称添加前缀modify_tool_name: 自定义工具修改函数filter_tools_by_name: 工具名称过滤函数
Returns:
处理后的工具列表
🔹 from_agentrun_toolset
def from_agentrun_toolset(cls, toolset: ToolSet, config: Optional[Any] = None, refresh: bool = False) -> 'CommonToolSet'
从 AgentRun ToolSet 创建通用工具集
Args:
toolset: agentrun.toolset.toolset.ToolSet 实例config: 额外的请求配置,调用工具时会自动合并refresh: 是否先刷新最新信息
Returns:
通用 ToolSet 实例,可直接调用 .to_openai_function()、.to_langchain() 等
Example:
>>> from agentrun.toolset.client import ToolSetClient
>>> from agentrun.integration.common import from_agentrun_toolset
>>>
>>> client = ToolSetClient()
>>> remote_toolset = client.get(name="my-toolset")
>>> common_toolset = from_agentrun_toolset(remote_toolset)
>>>
>>> # 使用已有的转换方法
>>> openai_tools = common_toolset.to_openai_function()
>>> google_adk_tools = common_toolset.to_google_adk()
🔹 to_openai_function
def to_openai_function(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Dict[str, Any]]
批量转换为 OpenAI Function Calling 格式
🔹 to_anthropic_tool
def to_anthropic_tool(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Dict[str, Any]]
批量转换为 Anthropic Claude Tools 格式
🔹 to_langchain
def to_langchain(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Any]
批量转换为 LangChain Tool 格式
优先使用适配器模式进行批量转换,提高效率。
🔹 to_google_adk
def to_google_adk(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None)
批量转换为 Google ADK Tool 格式
优先使用适配器模式进行批量转换,提高效率。
🔹 to_agentscope
def to_agentscope(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None)
批量转换为 AgentScope Tool 格式
🔹 to_langgraph
def to_langgraph(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Any]
批量转换为 LangGraph Tool 格式
LangGraph 与 LangChain 完全兼容,因此使用相同的接口。
🔹 to_crewai
def to_crewai(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Any]
批量转换为 CrewAI Tool 格式
CrewAI 内部使用 LangChain,因此使用相同的接口。
🔹 to_pydantic_ai
def to_pydantic_ai(self, prefix: Optional[str] = None, modify_tool_name: Optional[Callable[[Tool], Tool]] = None, filter_tools_by_name: Optional[Callable[[str], bool]] = None) -> List[Any]
批量转换为 PydanticAI Tool 格式
函数
tool
def tool(name: Optional[str] = None, description: Optional[str] = None) -> Callable[[Callable], Tool]
工具装饰器
从函数自动创建 Tool 实例。
Args:
name: 工具名称,默认使用函数名description: 工具描述,默认使用函数文档字符串
Returns:
装饰后的 Tool 实例
Example:
>>> @tool()
... def calculator(operation: Literal["add", "subtract"], a: float, b: float) -> float:
... '''执行数学运算'''
... if operation == "add":
... return a + b
... return a - b
from_pydantic
def from_pydantic(name: str, description: str, args_schema: Type[BaseModel], func: Callable) -> Tool
从 Pydantic BaseModel 创建 Tool
Args:
name: 工具名称description: 工具描述args_schema: Pydantic BaseModel 类func: 工具执行函数
Returns:
Tool 实例
Example:
>>> class SearchArgs(BaseModel):
... query: str = Field(description="搜索关键词")
... limit: int = Field(description="结果数量", default=10)
>>>
>>> search_tool = from_pydantic(
... name="search",
... description="搜索网络信息",
... args_schema=SearchArgs,
... func=lambda query, limit: f"搜索: {query}"
... )