1
00:00:00,120 --> 00:00:00,480
好的。

2
00:00:00,520 --> 00:00:05,960
有了这个，我们就该去看看交易者 Dot Pi，这是一个用于定义我们的模块

3
00:00:05,960 --> 00:00:06,720
贸易商。

4
00:00:06,760 --> 00:00:11,440
在我这样做之前，我想提一下，我这里有一些奇特的 python，它

5
00:00:11,440 --> 00:00:13,560
第一次看到它时看起来有点混乱。

6
00:00:13,920 --> 00:00:19,880
使用 OpenAI 代理 SDK 的有点做作的事情之一就是你。

7
00:00:19,920 --> 00:00:27,640
最好使用上下文管理器来创建服务器，就像我在这里所做的那样

8
00:00:27,680 --> 00:00:33,880
异步，然后服务器工作室作为服务器传入参数。

9
00:00:34,080 --> 00:00:39,480
但如果你有一堆服务器，那可能会开始看起来非常难看，我们确实有，我们有很多。

10
00:00:39,760 --> 00:00:45,520
当你有很多时，你必须有一个单独的 with 语句，每个都有一个单独的上下文管理器

11
00:00:45,520 --> 00:00:48,520
行缩进，并且有点失控。

12
00:00:48,720 --> 00:00:55,000
还有一种Python技术，这是一种相当先进的技术，不需要堆栈

13
00:00:55,000 --> 00:01:01,160
像这样，但只要能够做到这一点，就可以迭代很多上下文管理器，很多宽度，

14
00:01:01,200 --> 00:01:02,720
看起来像这样。

15
00:01:03,160 --> 00:01:04,400
以及异步代码。

16
00:01:04,400 --> 00:01:11,080
这有点混乱，但是您可以使用异步退出堆栈。

17
00:01:11,280 --> 00:01:15,840
然后您可以为列表中的每个内容输入上下文。

18
00:01:15,840 --> 00:01:23,200
所以您在这里看到的这个构造，这段代码只是采用 MCP 服务器参数并迭代

19
00:01:23,200 --> 00:01:27,000
在此之上，并有效地依次为每个宽度做一个宽度。

20
00:01:27,320 --> 00:01:29,760
因此，如果您愿意，请研究一下。

21
00:01:29,960 --> 00:01:31,080
这是一个构造。

22
00:01:31,080 --> 00:01:34,840
我用它来使代码更简洁，但不要让它让您失望。

23
00:01:34,880 --> 00:01:37,280
您同样可以通过手动方式完成此操作。

24
00:01:37,640 --> 00:01:42,720
好吧，有了这个小警告，让我们来看看这个。

25
00:01:42,760 --> 00:01:43,720
这是模块。

26
00:01:43,720 --> 00:01:48,560
它只是将我们在实验室中拥有的东西转化为 Python 模块。

27
00:01:48,560 --> 00:01:53,560
这里的顶部有一些很酷的东西，可以让它切换不同的模型。

28
00:01:53,560 --> 00:02:00,600
所以我们不仅仅依赖OpenAI，我们可以使用deep seq、grok、Google，或者我们可以使用开放路由器

29
00:02:00,840 --> 00:02:08,970
呃，开放路由器对于美国人来说，我们可以使用开放路由器来连接我们选择的任何型号。

30
00:02:08,970 --> 00:02:14,570
如果你查看指南目录，有一个完整的指南更多地讨论了不同的用法

31
00:02:14,570 --> 00:02:15,330
模型。

32
00:02:15,330 --> 00:02:19,930
因此，根据您选择的模型，它会选择不同的模型提供商。

33
00:02:20,170 --> 00:02:26,490
除此之外，这基本上就是实验室笔记本中的内容，变成了

34
00:02:26,490 --> 00:02:29,050
类，转换成Python模块。

35
00:02:29,050 --> 00:02:34,210
这就是我刚刚在堆栈中谈论的那些时髦的东西。

36
00:02:34,370 --> 00:02:38,570
所以，你知道，如果你对此表示怀疑，那就多调查一下。

37
00:02:38,850 --> 00:02:42,170
请阅读有关此内容、此结构以及我这样做的原因。

38
00:02:42,170 --> 00:02:45,690
如果您不喜欢它，您可以随时手动使用 with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with。

39
00:02:45,930 --> 00:02:47,850
嗯，但它会非常非常嵌套。

40
00:02:47,850 --> 00:02:51,450
看起来会有点难看，但是这样做会更简单一些。

41
00:02:51,730 --> 00:03:00,450
但除此之外，这里的一切都只涉及创建交易代理和使用研究代理

42
00:03:00,450 --> 00:03:01,490
作为一种工具。

43
00:03:01,650 --> 00:03:08,210
这与我们前一秒的代码相同，并且都被打包到一个很好的交易类中，所以

44
00:03:08,210 --> 00:03:15,650
我们可以创建一个交易者实例，为其指定名称、代理和模型名称，然后关闭它

45
00:03:15,650 --> 00:03:16,330
会去的。

46
00:03:16,530 --> 00:03:22,090
另一件有趣的事情是我确实拥有它，呃，在制作之间交替

47
00:03:22,130 --> 00:03:27,290
交易决策以及重新平衡其自身投资组合的决策。

48
00:03:27,490 --> 00:03:33,850
所以我赋予了它按照自己的意愿进行交易或重新平衡的能力。

49
00:03:33,970 --> 00:03:40,690
所以你可以在这里看到，呃，如果设置了 do trade 标志，那么它将运行一个交易

50
00:03:40,690 --> 00:03:41,370
信息。

51
00:03:41,530 --> 00:03:47,690
否则它将运行一条重新平衡消息，您可以在模板中查看该消息是一条消息

52
00:03:47,690 --> 00:03:51,050
你应该重新平衡你的投资组合，呃，进行优化。

53
00:03:51,210 --> 00:03:57,170
在运行的底部，这当然是业务功能。

54
00:03:57,170 --> 00:03:58,610
这就是一切的开始。

55
00:03:58,810 --> 00:04:05,770
它开始运行，然后它会切换贸易标志。

56
00:04:05,770 --> 00:04:07,890
它会将其翻转到另一个方向。

57
00:04:08,740 --> 00:04:12,620
这就是交易者模块。

58
00:04:12,660 --> 00:04:16,020
关于这件事我还没有告诉你，明天我会告诉你。

59
00:04:16,220 --> 00:04:21,940
呃，但这基本上向您展示了所有的东西，所有我们想要构建的好东西

60
00:04:21,940 --> 00:04:29,380
拥有一个自主交易者，可以在交易和平衡其投资组合之间交替，

61
00:04:29,380 --> 00:04:32,380
使用研究代理来帮助它。

62
00:04:32,420 --> 00:04:35,700
并使用一堆 MCP 工具。

63
00:04:35,980 --> 00:04:40,340
好的，现在回到实验室，让我们实际看看这个模块的作用。

64
00:04:40,580 --> 00:04:46,180
所以我们要导入，呃，交易者，我们刚才看到的类。

65
00:04:46,300 --> 00:04:51,340
我们将创建一个名为该交易者的编辑器的新实例。

66
00:04:51,460 --> 00:04:53,220
现在称为“添加”。

67
00:04:53,220 --> 00:04:58,820
因为名称是 add，所以它将查找帐户并有权访问同一帐户。

68
00:04:58,860 --> 00:05:02,260
刚刚买入迪士尼股票然后又卖出的事情。

69
00:05:02,300 --> 00:05:02,940
其中一些。

70
00:05:03,180 --> 00:05:07,620
呃，现在我们要给交易员打电话“Dot run”。

71
00:05:07,660 --> 00:05:08,700
这就是生意。

72
00:05:08,700 --> 00:05:13,700
这实际上是启动并运行整个过程的东西。

73
00:05:13,700 --> 00:05:14,740
让我继续吧。

74
00:05:14,980 --> 00:05:20,700
所以我踢它，当它运行时，我们会让它运行一会儿。

75
00:05:20,700 --> 00:05:24,020
所以它开始了它的活动。

76
00:05:24,300 --> 00:05:26,220
我们将打开踪迹。

77
00:05:26,420 --> 00:05:28,020
让我们看看这里发生了什么。

78
00:05:28,500 --> 00:05:29,380
这里是。

79
00:05:29,940 --> 00:05:32,260
所以它已经关闭并运行了。

80
00:05:32,260 --> 00:05:33,780
它是列表工具。

81
00:05:33,780 --> 00:05:38,500
它在想，呃，我们看看是否可以像那样刷新它。

82
00:05:39,100 --> 00:05:39,660
是的。

83
00:05:40,300 --> 00:05:44,940
它正在进行勇敢的网络搜索，现在需要时间来解决这个问题。

84
00:05:44,940 --> 00:05:49,980
因此，与其坐在这里思考几分钟该说些什么，不如花几分钟时间

85
00:05:49,980 --> 00:05:51,660
马上就回来和你在一起。

86
00:05:51,660 --> 00:05:52,140
好的。

87
00:05:52,140 --> 00:05:54,540
好吧，刚刚运行并完成了。

88
00:05:54,740 --> 00:05:57,540
结果用了48秒。

89
00:05:57,540 --> 00:05:58,700
没花太长时间。

90
00:05:58,940 --> 00:06:03,020
最终它确实抱怨其中一个工具有错误。

91
00:06:03,260 --> 00:06:05,820
呃，所以我们可以去看看。

92
00:06:06,020 --> 00:06:07,900
嗯，但除此之外它似乎做了它的事情。

93
00:06:07,900 --> 00:06:09,700
那么我们就去看看踪迹吧。

94
00:06:10,060 --> 00:06:11,900
呃，所以我们就到这里来吧。

95
00:06:12,220 --> 00:06:13,180
开始了。

96
00:06:13,580 --> 00:06:14,660
确实如此。

97
00:06:14,700 --> 00:06:15,540
列出工具。

98
00:06:15,540 --> 00:06:17,060
这要从研究者开始。

99
00:06:17,060 --> 00:06:20,860
研究人员进行了大胆的网络搜索，然后就回来了。

100
00:06:20,900 --> 00:06:22,300
现在我们和交易员在一起了。

101
00:06:22,300 --> 00:06:24,660
它做了一堆行情。

102
00:06:25,020 --> 00:06:26,420
它有很多行情。

103
00:06:26,420 --> 00:06:28,140
它进行一些购买和一些股票。

104
00:06:28,180 --> 00:06:28,740
买的啥啊。

105
00:06:28,740 --> 00:06:37,940
它收购了亚马逊，还有更多，还有苹果和微软，这太棒了。

106
00:06:38,260 --> 00:06:43,580
呃，最后这里也进行了一些销售和一些股票。

107
00:06:43,620 --> 00:06:45,660
我再次猜测是因为它太具有攻击性了。

108
00:06:45,940 --> 00:06:54,900
呃，所以嗯，希望，呃，出售一些股票，然后以推送通知结束。

109
00:06:54,900 --> 00:06:57,500
这就是我们的错误发生的地方。

110
00:06:57,780 --> 00:07:03,340
呃，有，呃，它说运行该工具时出错，这很有趣，因为

111
00:07:03,380 --> 00:07:04,660
我觉得不错。

112
00:07:04,660 --> 00:07:10,540
这也很有趣，因为我确实在手机上收到了推送通知。

113
00:07:10,580 --> 00:07:15,750
只是，呃，它确实有，呃，有完全相同的，呃，信息。

114
00:07:15,750 --> 00:07:17,350
所以我收到了推送通知。

115
00:07:17,550 --> 00:07:18,510
呃，它通过了。

116
00:07:18,550 --> 00:07:19,470
效果很好。

117
00:07:19,470 --> 00:07:22,470
我不确定为什么错误出现在这里。

118
00:07:22,670 --> 00:07:25,270
可能是因为该方法没有返回任何内容，所以我只是。

119
00:07:25,270 --> 00:07:26,710
我只是改变了以防万一。

120
00:07:26,710 --> 00:07:29,990
但无论如何，我想说这是一次全心全意的成功。

121
00:07:30,190 --> 00:07:32,550
呃，代理工作得很好。

122
00:07:32,830 --> 00:07:39,110
呃，现在我们可以调用我们的读取帐户资源并检查发生了什么。

123
00:07:39,150 --> 00:07:45,030
事实上，你会看到我们现在确实拥有亚马逊股票。

124
00:07:45,070 --> 00:07:47,070
我们已经完成了很多这样的交易。

125
00:07:47,070 --> 00:07:52,390
如果你看这里，这与呃交易活动一致。

126
00:07:52,670 --> 00:08:00,230
所以看起来，呃，事情很成功，我们已经能够使用它来运行我们的交易代理

127
00:08:00,230 --> 00:08:05,190
代码，使用我们的模块，它被称为大量 MCP 服务器。

128
00:08:05,190 --> 00:08:10,350
它与一名交易员和一名研究人员合作来完成这项工作。

129
00:08:10,510 --> 00:08:10,910
好的。

130
00:08:10,950 --> 00:08:17,750
最后，在结束之前，让我们快速计算一下我们总共使用了多少个工具。

131
00:08:17,910 --> 00:08:26,070
因此，从 MCP 参数模块中，我们可以导入交易者和研究人员参数，将它们相加，然后

132
00:08:26,710 --> 00:08:27,590
迭代它们。

133
00:08:27,590 --> 00:08:35,150
对于每一项，收集工具并报告我们刚刚提供的工具总数

134
00:08:35,150 --> 00:08:40,910
致我们的两个代理人，我们的交易员和研究员代理人，在我们刚刚所做的事情中。

135
00:08:40,950 --> 00:08:45,750
因此，我们总共有 6 台 MCP 服务器和 44 个工具。

136
00:08:45,990 --> 00:08:47,190
有很多工具。

137
00:08:47,390 --> 00:08:50,550
嗯，是的，那很有趣。

138
00:08:50,550 --> 00:08:55,270
当然，您知道我要说什么，您面临的挑战是您可以添加更多工具。

139
00:08:55,270 --> 00:08:56,350
越多越好。

140
00:08:56,350 --> 00:09:00,070
我们可以为我们的交易者提供更多的能力，让他们做更多的事情。

141
00:09:00,110 --> 00:09:04,950
当然，如果你从事金融工作，如果你有这个领域的商业知识，那么我就开始抓

142
00:09:04,950 --> 00:09:07,230
我们可以通过这个实现的表面。

143
00:09:07,230 --> 00:09:11,670
您可以添加比我们的 44 种工具更多的功能。

144
00:09:11,670 --> 00:09:16,910
但再一次，我会敦促您从添加这些工具开始，在实验室工作

145
00:09:16,910 --> 00:09:21,280
了解模型的功能并在您之前进行实验。

146
00:09:21,280 --> 00:09:26,400
然后将其放入模块中并作为最终架构的一部分运行。

147
00:09:26,400 --> 00:09:28,440
第四天就这样结束了。

148
00:09:28,920 --> 00:09:33,240
显然，我们涵盖了很多内容，您完成并复制非常重要

149
00:09:33,240 --> 00:09:38,600
你自己看看，看看这段代码，以便更好地了解如何构建

150
00:09:38,600 --> 00:09:40,400
这些类型的代理解决方案。

151
00:09:40,640 --> 00:09:42,480
当然，让它成为你自己的。

152
00:09:42,520 --> 00:09:44,840
一如既往，调整提示，进行实验。

153
00:09:44,880 --> 00:09:48,000
请记住，它们都在一个模块模板 Test.py 中。

154
00:09:48,040 --> 00:09:52,800
因此，您可以尝试更改提示，看看这如何影响

155
00:09:52,800 --> 00:09:53,440
商。

156
00:09:53,720 --> 00:09:56,480
当然，重要的时刻明天就要到来。

157
00:09:56,480 --> 00:09:59,240
然后我们推出完整的平台。

158
00:09:59,240 --> 00:10:04,320
我们对一切进行了最后的润色，其中有一些非常酷的最后润色，您可以在其中进行

159
00:10:04,320 --> 00:10:05,200
将它们整合在一起。

160
00:10:05,200 --> 00:10:11,000
我还想对这个大问题的总体想法进行一些总结，比如，好吧，我们已经

161
00:10:11,000 --> 00:10:13,000
我们已经介绍了所有这些不同的古代框架。

162
00:10:13,000 --> 00:10:15,040
那么我应该为我的项目选择哪一个。

163
00:10:15,120 --> 00:10:16,480
我们也会回答这个问题。

164
00:10:16,680 --> 00:10:19,960
一切都在我们下次的大结局中。