用 Pydantic 自动生成 LLM Tool Schema

用 Pydantic 自动生成 LLM Tool Schema

💡 原文中文,约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 定义校验逻辑,确保开始日期不晚于结束日期。

➡️

继续阅读