openmanus agent工具类分析

 工具类基类:BaseTool

被其他10个子类工具类继承:

bash工具类

核心逻辑是一个基于asyncio.subprocess.Process 实现的/bin/bash命令的工具类:

asyncio.subprocess.Process 是 Python 异步编程中用于管理子进程的核心类,其设计目标是提供与 subprocess.Popen 类似的接口,但完全适配异步 I/O 模型。

browser_user_tool工具类

基于browser_use库实现:

具体能力待验证;

create_chat_completion工具类

结构化聊天补全工具​​,其核心功能是根据用户指定的输出类型动态生成参数模式,并执行类型安全的数据转换。以下是具体功能的拆解:


​一、核心功能架构​
  1. ​工具类继承与基础属性​

    • 继承自 BaseTool(假设为自定义工具基类),通过 name 和 description 定义工具标识
    • type_mapping 实现 Python 类型到 JSON Schema 类型的映射(如 str → "string"),用于参数生成
  2. ​动态参数模式生成​

    • 根据 response_type 动态构建参数模式(_build_parameters 方法):
      • ​简单类型​​(如 str):生成 {"type": "string"} 的 response 字段
      • ​Pydantic 模型​​:提取模型的 JSON Schema(如 model_json_schema),直接复用其属性定义
      • ​复杂类型​​(如 List/Dict/Union):递归解析嵌套类型,生成符合 JSON Schema 的结构(如 array/object/anyOf

​二、关键技术实现​
  1. ​类型解析与递归处理​

    • 通过 get_origin 和 get_args 解析泛型类型(如 List[int] 拆解为 list 和 int
    • 支持嵌套类型处理(如 List[Dict[str, int]] 生成多层嵌套的 items 定义)
  2. ​类型安全转换​

    • 在 execute 方法中,根据 response_type 进行类型强制转换:
      • ​Pydantic 模型​​:将输入数据实例化为模型对象(如 self.response_type(​**​kwargs)),实现自动验证
      • ​基础类型​​(如 int/bool):尝试将字符串结果转换为目标类型(如 int("42")),失败时回退原始值

​三、应用场景与设计优势​
  1. ​适用场景​

    • ​API 集成​​:与 OpenAI ChatCompletion API 对接时,生成符合模型要求的参数结构
    • ​函数调用(Function Calling)​​:通过动态生成的 JSON Schema 描述外部函数参数,支持 function_call 参数配置
    • ​多格式输出​​:支持字符串、列表、字典及自定义模型输出,适应不同下游需求(如 CLI 文本、Web API 的 JSON 响应)
  2. ​设计优势​

    • ​灵活性​​:通过 response_type 参数可扩展支持任意输出类型(包括第三方模型)。
    • ​类型安全​​:利用 Pydantic 强制校验输入数据,减少运行时错误
    • ​标准化输出​​:生成的 JSON Schema 符合 OpenAI API 规范,避免手动定义参数结构的冗余

​四、示例说明​

假设定义 response_type 为以下 Pydantic 模型:

class WeatherResponse(BaseModel):
    city: str
    temperature: float
    unit: Literal["Celsius", "Fahrenheit"]

代码将自动生成参数模式:

{
  "type": "object",
  "properties": {
    "city": {"type": "string"},
    "temperature": {"type": "number"},
    "unit": {"enum": ["Celsius", "Fahrenheit"]}
  },
  "required": ["city", "temperature", "unit"]
}

执行时,若输入 {"city": "Beijing", "temperature": 25.5, "unit": "Celsius"},会被自动转换为 WeatherResponse 实例。


该代码通过​​动态参数生成​​与​

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值