内置工具方法
从结果可以明显看出,通过定制化的输出解析器得到的结果会更加的符合预期,而接下来我们要说的是,在 LangGraph 中我们更常用的,且效果更好的是,直接使用其内置的工具方法:.with_structured_output()。
这个方法通过接受一个定义了所需输出属性的名称、类型和描述的模式作为输入,进而生成一个类似模型的 Runnable 。不同于常规模型输出字符串或消息,这个 Runnable 输出一个与输入模式相匹配的对象。可以通过几种方式指定这种架构,包括 TypedDict 类、JSON Schema 或 Pydantic 类。如果采用 TypedDict 或 JSON Schema ,Runnable 将输出一个字典;若使用 Pydantic 类,则输出一个 Pydantic 对象。我们可以依次的来实践一下。
我们首先尝试和实践使用 Pydantic 类做格式化输出,应用的场景是:从文本中提取格式化的数据。
1.1 使用Pydantic做结构化输出
使用 Pydantic 去限定输出格式,可以确保所有通过此模型处理的数据都会符合指定的结构和数据类型,从而减少数据处理中的错误并增加代码的健壮性。此外,Pydantic的验证系统还会自动确保所有字段都符合预定义的格式,如果输入数据不符合预期,则会抛出错误。比如下面是一个用 Pydantic 定义用户信息模型的示例:
1
在这个 UserInfo 模型中:
name(必需):存储用户的名字。
age(可选):存储用户的年龄,这是一个可选字段。
email(必需):存储用户的电子邮件地址。
phone(可选):存储用户的电话号码,这也是一个可选字段。
对于 .with_structured_output() 方法,如果我们希望模型返回一个 Pydantic 对象,只需要传入所需的 Pydantic 类即可,即 UserInfo,代码如下所示:
1
1
1
1