💡
原文中文,约6700字,阅读约需16分钟。
📝
内容提要
使用 Pydantic 自动生成符合 OpenAI 规范的工具模式,简化工具描述的维护。通过定义模型实现参数校验和类型转换,支持嵌套模型和自定义校验逻辑。
🎯
关键要点
- 使用 Pydantic 自动生成符合 OpenAI 规范的 Tool Schema,简化工具描述的维护。
- 通过定义模型实现参数校验和类型转换,支持嵌套模型和自定义校验逻辑。
- 不需要引入其他库,避免手动维护工具描述。
- 基础示例展示了如何定义获取天气的工具参数。
- 完整代码提供了从 Pydantic 模型生成工具定义的实现。
- 复杂示例展示了如何定义嵌套模型、枚举类型和自定义校验逻辑。
- LLMProofBaseModel 类自动处理来自 LLM 的 'null' 字符串输入。
- TimeRange 模型展示了如何封装业务规则的校验逻辑。
- SearchFilesArgs 模型演示了文件搜索场景的处理,包括文件类型和创建时间的筛选。
❓
延伸问答
如何使用 Pydantic 自动生成符合 OpenAI 规范的 Tool Schema?
通过定义 Pydantic 模型并使用 model_json_schema 方法生成 JSON Schema,然后将其处理成符合 OpenAI 规范的 Tool Schema。
使用 Pydantic 的好处有哪些?
使用 Pydantic 可以避免引入其他库,简化工具描述的维护,并自动校验参数和转换类型。
可以给出一个使用 Pydantic 定义工具参数的示例吗?
例如,定义一个 GetWeatherArgs 类,包含 location 和 units 字段,并使用 create_tool_from_pydantic 函数生成工具定义。
如何处理 Pydantic 模型中的嵌套模型和自定义校验逻辑?
可以通过定义嵌套模型和使用 Pydantic 的验证器来实现,例如在 SearchFilesArgs 模型中处理文件类型和创建时间的筛选。
LLMProofBaseModel 类的作用是什么?
LLMProofBaseModel 类自动处理来自 LLM 的 'null' 字符串输入,将其转换为 None。
如何在 Pydantic 中定义时间范围的校验逻辑?
可以在 TimeRange 模型中使用 model_validator 定义校验逻辑,确保开始日期不晚于结束日期。
➡️