好的。
所以我们进入第八周。
我们进入第三天。
欢迎来到“价格合适”的下一部分。
我们已经建立了我们的专业代理，我们的整体代理。
现在我们要构建我们的扫描仪，我运行一些导入。
现在，这是我编写的一些代码，用于抓取 RSS 提要并解析结果。
让我开始吧，然后展示给你看。
这是一些基本的东西。
没有什么关于它的。
这是在交易中。
点 py 就在这里。
首先指定一些 RSS 提要。
我从 DealNews.com 购买了一份电子产品、电脑和智能家居优惠。
这是汽车和家庭卫士的另一对夫妇。
如果你愿意的话，你也可以加入。
您还可以添加任何您想要的 RSS 提要。
我使用一个名为 Feedparser 的库，这是一个解析 RSS 提要的开源库，非常简单
读入它们。
我只取每一项中的前十项。
如果你想要更多的话，你可以把这个数字提出来，但这似乎是一个不错的选择
要做的事。
呃，然后我读了它们，然后我还访问了实际描述该交易的网站，
我也从中吸取了尽可能多的数据。
所以我们最终得到了一些与这笔交易相关的非结构化数据，这就是我们所得到的，
呃，在这里。
嗯，它已加载并运行这三个 RSS 提要。
如果我看一下这个，我们有 30 笔交易，因为这是三组，每组 10 笔交易。
如果我随机选择一个，让我们看看第十笔交易。
这里是。
这是戴尔网络星期一游戏优惠，有大量相关内容以及优惠本身的链接。
呃，这就是我们刮下来的。
好的。
这里就是肉发生的地方。
我有系统提示。
您通过选择交易，等等，从列表中识别并总结五个最详细的交易，
巴拉，巴拉，巴拉。
我告诉它要小心那些被描述为有一定折扣或减少的产品。
这不是您需要回复的实际价格，等等等等以及非常相似的用户提示，我是
告诉它，你会得到一个项目列表，你需要用五个最有前途的交易来回应。
不要被那些说可以减 1,000 美元的东西分散注意力。
重要的是实际价格本身。
显然我这么说是因为我已经尝试过，我尝试过不同的提示。
它在不同方面都存在不足。
有时它会被用来混淆交易的折扣金额。
我就是这样来到这里的。
有时我将其呈现为好像这是我输入的第一件事。
事实并非如此。
对于此类项目非常重要，您愿意卷起袖子进行尝试
按照提示进行操作，直到获得您想要的性能。
好的，这就是系统提示符和用户提示符，呃，前缀。
现在我要发出用户提示。
这里会有这个前缀。
然后它将是我们抓取的所有 30 条内容的内容。
所以我们正在制作一个包含此说明的提示。
然后它有这个指令。
然后里面有 30 种不同的东西。
然后在底部会说仅包含五笔交易，仅此而已。
所以让我们加载它。
现在我们来实现这个功能，呃，使用提示。
那么让我向您展示它是什么样子的。
我们将只显示它的前 2000 个字符。
呃，它看起来是这样的。
回应列表中最有希望的五笔交易，等等。
这是优惠。
到目前为止，每个人都拼写得很好。
完全有道理，对吧？
我们只是说说而已。
我们希望您找到最有前途的五笔交易。
还没有关于结构化输出的信息。
好的。
但现在是结构化输出。
通常我会让 OpenAI 创建一些你现在非常了解的东西 OpenAI
创建，但我没有，我有 OpenAI。
有所不同。
这就是您描述结构化输出的方式。
在这个解析函数中，它有常用的参数、模型名称、消息、推理
你从很久以前就记得说“最小”的努力。
但还有其他事情。
有响应格式，我们在交易选择中传递这个东西。
那是什么？
嗯，这实际上是我导入的东西，在这个交易点 pi 中也结束了。
让我们找到它的交易选择。
它的名字叫呃，就在这里。
它是基本模型的子类。
这是一个只有一个领域交易的类别。
该字段是交易对象的列表。
所以 Deals 是 Deal Selection 有 Deals 的，它是 Deal 对象的列表。
你会看到这里这是迂腐的，我是说它有一个叫做交易的字段。
你可以用英语描述它。
因此，我将描述您选择的具有最详细的高质量描述的五笔交易
以及最清晰的价格。
您应该确信价格反映了交易。
有了清晰的描述就很好了。
好的。
那么这些交易对象分别是什么？
每个都有产品描述、价格和 URL。
它所说的产品描述清楚地表达了产品的摘要。
描述为实际价格。
一定要给出实际价格。
进而。
然后你就会知道，如果交易价格为 500 美元减 100 美元，那么你应该给出 400 美元。
然后是提供的 URL。
这就是我们如何定义一个迂腐的结构，一个包含交易的交易选择对象，其中
是该对象的多个，包含描述、价格和 URL。
这里要注意的关键是我们不仅描述了这个 JSON 模式，而且我们还得到了一些
语言来解释如何填充每个字段，这就是我们现在能够
进行此结构化输出调用。
为了让这对你来说是真实的，我只是想向你展示如此优惠的选择，这就是这个
是一个类。
这是我在代理选择中定义的。
我们只是看着它。
这是因为它是一个迂腐的类，是基本模型的子类。
它继承了一些功能。
其中之一是我可以调用模型。
模型。
嗯，呃，抱歉。
模型。
呃，架构一下这个。
现在，当我运行此命令时，我们可以看到关联的 JSON 模式的 JSON 描述
与这个物体。
系统提示中向 OpenAI 提供的正是这种模式，对 GPT 说
你必须遵守这个模式。
这就是当我们调用 OpenAI 解析并且我们说响应格式是交易选择时的方式，
它将返回一些符合该规范的 JSON。
您已经习惯了我们看到的结果是响应点选择，零点消息内容。
这不是我们这里所拥有的。
这是响应零20...
它的作用是获取内容和 JSON，并填充类型的对象
处理选择。
因此，如果我运行它，它就会将该 JSON 内容转换为某种模式。
它正在调用 OpenAI 并显示此提示。
确切地。
此提示 OpenAI GPT 正在生成符合此架构的 JSON。
返回的是一个交易选择对象，其中填充了返回的 JSON。
所以如果你看这个东西，你会发现它是一个交易选择对象。
它有一个叫做 Deals 的字段，每一个都是一笔交易。
所以坚持住。
如果我，如果我在这里添加一些代码，并且我说在结果点交易中进行交易，我们将完全执行光标的操作
正在建议。
看看这个。
你可以看到我们有一个健身追踪器，呃，价格便宜得离谱，戴尔的
16 加上这些东西中的每一个。
这是一台售价 550 美元的戴尔笔记本电脑。
看起来很划算。
您可能会想，这款健身追踪器售价 15 美元。
这听起来好得令人难以置信。
好吧，我们可以仔细检查一下。
这是 dealnews.com 的链接。
这是我们的结构化输出中返回的 URL。
让我们点击它，看看它出现了。
确实是这样。
这是我的 janky 代码抓取的网页。
并且以非结构化格式将其发送到 GPT。
我们发现它没有给我们 159。
它给了我们 15 美元的超便宜价格。
所以它完全正确。
让我们在这里看看这个。
550 美元确实是戴尔电脑的价格。
出现很多卡顿的弹出窗口。
所以效果很好。
它解析了从互联网上抓取的非结构化数据，将其转化为迂腐的对象。
它以符合架构的 JSON 进行响应。
OpenAI 库将其变成了一个迂腐的对象，并且它已被正确填充。