from typing import Callable, Optional, List
from pydantic import BaseModel, Field
class Tool(BaseModel):
"""工具函数的结构化模型"""
name: str = Field(description="工具函数名称(全局唯一)")
func: Callable = Field(description="可调用的工具函数对象")
description: str = Field(description="工具函数描述(来自config.json)")
package: str = Field(description="所属包名")
package_dir: str = Field(description="所属包的目录路径")
class Config:
arbitrary_types_allowed = True
class Package(BaseModel):
"""工具包的结构化模型"""
name: str = Field(description="工具包名称(目录名,全局唯一)")
package_dir: str = Field( description="包的绝对目录路径")
funcs: List[str] = Field(default_factory=list, description="包内有效工具函数名列表")