好的。
好吧，我们仍然需要在这里编写主要的 run 函数。
我删除了通常存在的默认模板，并在此处通过简单的运行替换了它。
我们将在该领域传递技术人员。
实际上我们根本不需要当前日期。
这样就可以了。
我们不使用当前日期，结果是 Stockpicker 开始传递输入。
然后我们将在最后打印结果。
我们就这样吧。
这是我们的出发点。
我想我们应该尝试一下，好吧，我们开始吧。
因此，我们将像往常一样通过 Control 和勾号打开终端。
然后我们将进入第三个文件夹。
我们将进入选股器。
我们要输入船员。
我跑去把它踢开。
现在事情是这样的。
观看这个将会很有趣。
就其本质而言，船员流程比我们想象的要难预测一些。
它是自主的，它会开始做自己的事情，这可能涉及各种搜索
周围并使用多个代理。
有时可以回去做一些新闻和分析师，然后使用研究人员，这可能需要
处理过程需要相当长的时间。
我的机器正在疯狂地运转，你的也是如此。
两者都是。
自主代理人工智能的伟大之处，也许也是它的缺点，是我们的控制力有点少
关于如何遵循这个过程，所以我会让它做它的事情。
当它完成推荐时我会休息并回来。
现在我们有了它。
当我停在那里时，它实际上已经完成了。
所以速度很快。
它决定推荐人类，它说，这很有趣，因为它是 OpenAI
就是这样做，这个处理，它拒绝了几家安全公司，
Peregrine 和一家加密货币公司，圈起来，我们可以在输出文件夹中看到
显示此决定。
我们还将在这里找到一份研究列表。
还有热门公司名单。
当然，这些都是符合我们模式的 JSON 格式。
因此，我们在这里看到了正确格式化的结果，因为我们需要使用结构化输出。
因此，尽管我对自主框架心存疑虑，但它实际上表现得非常好。
它确实只是经历了这个过程。
应该可以。
我们设立的经理在如何分配任务方面拥有一定的自主权，但它做得很好
结果，我们确实实现了选股推荐，但并不是真正的目的
交易决策，在这种情况下是人为的。
好吧，是时候让我们的解决方案增加一些附加功能了。
首先，我们要添加一个工具。
您会看到，如果您查看为您生成的股票选择器文件夹中的源文件夹，
Cru 的工作人员已经为我们制作了一个名为“tools”的文件夹。
那里有一个叫做“自定义工具”的工具，它具有一种针对此类的典型布局，
工具。
我们将更改自定义工具的名称，并将其变成推送工具。
因此，让我们重命名并推动它。
等一下，点击那里。
再试一次。
重命名为推送下划线工具点 pi。
因此，如果我们查看这里，您会发现当您设置自定义时，它的工作方式是
您必须首先使用迂腐的对象来描述工具，即将传递给您的工具的模式
自定义工具。
然后您最终编写了一个下划线运行方法，该方法将采用该模式作为其参数。
因此，为了让这种感觉更加真实，我将，呃，实际实施它。
现在让我们从一些，呃，导入开始。
因此，我们将有一个推送通知输入，它将成为基本模型的子类。
我们将更改描述，即这个输入的含义是什么。
这将是一条要发送的消息。
抱歉发送给用户好吗。
现在我们不再说争论，而是说消息。
这就是我们所说的。
描述将是要发送给用户的消息。
这看起来很清楚。
好的。
这就是为我们的工具定义架构。
换句话说，这里实际上是与此相对应的消息。
这就是我们在调用该工具时将运行的内容。
所以还是调用而不是调用。
所以呃我们会给它一个名字。
所以首先我们应该将类更改为推送通知工具。
我们开始吧。
谢谢。
光标。
假设名称将发送推送通知，描述将是此工具
用于向用户发送推送通知。
这对我来说似乎相当不错。
好的。
以及参数的架构。
这就是我们需要你传入什么样的参数的地方。
嗯，这正是我们刚刚在这里定义的模式。
所以它只有一个参数消息。
就这样吧。
您会看到我们编写了一个带有单个输入消息的运行方法。
这实际上会发送推送通知。
以及我们如何发送推送通知。
我们使用神奇的 Pushover 工具。
希望在您的环境中您的 env 文件中设置了 Pushover 用户和 Pushover 令牌
前一周，然后我刚刚粘贴了与前一周完全相同的代码，
我们会将此消息推送给用户，然后返回表示没问题。
这就是我们的推送通知工具。
现在我们必须好好利用它。
嗯，这实际上应该很容易。
我们回到crew.py模块，并添加一个导入以导入到推送通知工具中。
现在我们希望我们的哪些代理能够做到这一点。
我们希望选股代理人成为拥有选股权力的人。
当然你可以看到光标已经告诉我们这正是我们想要的。
我们希望选股器能够调用推送通知工具。
就这么简单。
好的。
有了这个，让我们开始运行它。
我们会立即这样做。
我们会提出这一点。
我们会清理这里的东西。
我们只会打电话、哭泣、奔跑并尝试一下。
让我们看看会发生什么。
我会让这件事继续下去，我很快就会回来。
我们开始吧。
完成了。
这次推荐的是上次的亚军之一的circle。
我可以向您保证，您可以在这里看到我确实收到了有关以下内容的推送通知：
机会，这真是太好了。
所以它正在发挥作用。
这就是我们添加到其中的额外部分。
回顾一下，我们构建了这个代理框架以及与方式不同的三件事
我们以前已经做到了。
首先，我们使用了结构化输出。
因此，我们要求任务响应符合我们设置的 JSON 模式。
其次，我们不使用顺序过程，而是使用分层过程，这意味着
我们可以通过模型名称传递 LLM，也可以传递负责分配的代理
给代理的任务。
我们做到了。
我认为，我们看到了这样做的好处和坏处。
第三，我们添加了一个自定义工具，一个我们自己编写的工具。
这是一个熟悉的。
是为了发送推送通知。
我们为特工配备了这种能力，并且成功地完成了任务。
本周的项目就到此结束。
总结会见。
我想我刚才可能已经说过了。
本周的项目就这样结束了。
当然，今天的项目就到此结束了。
我们还有很多事情要做。
事实上，明天和后天，在我们继续下一个项目之前，我确实想补充一点
这个项目还有一个附加功能。
因此，我们还没有完全完成股票选择器的工作，所以请继续关注。
但再次回顾一下，我们只是做了结构化输出、定制工具和分层流程。
明天我们将为选股器添加一点额外的内容，然后也可以工作
在下一个项目上，开发商代理。
我对此感到非常兴奋。
优秀的老船员正在坚强地度过。
到时候见。