用 Pydantic 自动生成 LLM Tool Schema

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文介绍了如何使用 Pydantic 自动生成符合 OpenAI 规范的工具架构。通过定义工具参数,利用 Pydantic 的功能,可以简化工具描述的维护。示例展示了如何创建获取天气和搜索文件的工具,支持参数验证和类型转换。

🎯

关键要点

  • 使用 Pydantic 自动生成符合 OpenAI 规范的 Tool Schema,避免引入其他库。
  • 通过定义工具参数,简化工具描述的维护,自动校验参数和转换类型。
  • 示例展示了如何创建获取天气的工具,包括位置和温度单位的参数。
  • 可以定义嵌套模型和枚举类型,支持复杂的工具参数结构。
  • 示例中的 SearchFilesArgs 模型展示了如何处理文件搜索场景,包括文件类型和创建时间的筛选。

延伸问答

如何使用 Pydantic 自动生成符合 OpenAI 规范的 Tool Schema?

通过定义工具参数并利用 Pydantic 的 model_json_schema 功能,可以自动生成符合 OpenAI 规范的 Tool Schema,而无需引入其他库。

Pydantic 在工具描述维护中有什么优势?

Pydantic 可以自动校验参数和转换类型,避免手动维护工具描述,简化了工具描述的维护工作。

能否给出一个使用 Pydantic 创建获取天气工具的示例?

示例中定义了 GetWeatherArgs 类,包含位置和温度单位参数,并通过 create_tool_from_pydantic 函数生成工具。

如何定义复杂的工具参数结构?

可以通过定义嵌套模型和枚举类型来处理复杂的工具参数结构,例如在 SearchFilesArgs 模型中使用文件类型枚举和时间范围嵌套模型。

Pydantic 如何处理参数的类型验证?

Pydantic 自动校验参数类型,并支持从 JSON 字符串加载后进行类型转换,确保输入数据的有效性。

在使用 Pydantic 时,如何处理来自 LLM 的 'null' 字符串输入?

可以定义一个 LLMProofBaseModel 基类,自动将所有字段中值为字符串 'null' 的输入转换为 None。

➡️

继续阅读