工厂基类的使用
这篇笔记聚焦一个用于 Python 本地函数管理的工具工厂基类,目标是把分散的工具函数集中注册、统一生成 OpenAI tool calling 可用的 tools 描述,并通过名称完成动态调用。示例中的 BaseTool 维护 registry 字典,使用 @BaseTool.register 类方法装饰器在函数定义阶段把函数名和函数对象写入注册表,因此 get_weather、get_time 这类函数不需要额外手工汇总。get_tools() 遍历已注册函数,借助 inspect.signature(fn) 读取参数签名,再组装出包含 type、function、description、parameters、required 等字段的 function schema,便于直接传给 OpenAI。call(name, args) 则根据工具名查找对应函数并用关键字参数执行,若名称未注册会抛出 ValueError,从而把调用入口收敛到一个方法中。文章还用“装饰器等价于 BaseTool.register(get_weather)”的展开方式解释了注册机制,帮助读者理解 registry.items() 中 name 与 fn 的来源。适合正在把 Python 函数接入 OpenAI tools、或想先掌握装饰器、注册表、函数签名提取三者协作方式的 AI 应用开发者参考。
