1
00:00:00,360 --> 00:00:05,840
欢迎来到第五周第二天，我们将深入了解 Autogen 代理聊天。

2
00:00:06,160 --> 00:00:09,680
因此，作为提醒，我想将这些内容展示几次。

3
00:00:09,720 --> 00:00:13,640
Autogen 是多种不同的东西。

4
00:00:13,680 --> 00:00:17,880
Autogen 核心是代理交互的基础设施。

5
00:00:18,040 --> 00:00:23,440
Autogen 代理聊天功能非常类似于船员和 OpenAI 代理 SDK。

6
00:00:23,640 --> 00:00:28,280
然后在此基础上构建我们不会看到的无代码、低代码平台工作室

7
00:00:28,480 --> 00:00:31,840
以及他们的特殊工具 Magentic。

8
00:00:32,000 --> 00:00:36,800
但我们要讨论的是 Autogen，今天更多的是 Autogen 代理聊天。

9
00:00:37,160 --> 00:00:41,680
你还记得我们讨论过模型、消息和代理的核心概念，我们必须看到

10
00:00:41,680 --> 00:00:41,920
商场。

11
00:00:41,960 --> 00:00:43,640
我们实际上并没有谈论团队。

12
00:00:44,080 --> 00:00:46,480
今天我们要深入一点。

13
00:00:46,560 --> 00:00:49,320
我们总是喜欢更进一步。

14
00:00:49,320 --> 00:00:52,920
但其中大部分都是您非常熟悉的概念。

15
00:00:52,960 --> 00:00:55,240
我们将讨论多式联运。

16
00:00:55,520 --> 00:00:56,800
呃，我猜这就是新的。

17
00:00:56,800 --> 00:00:57,920
我们以前还没有真正这样做过。

18
00:00:57,920 --> 00:00:59,880
所以这将是一个新的尝试。

19
00:00:59,920 --> 00:01:04,710
我们将讨论结构化输出，这是一个您很熟悉的老栗子。

20
00:01:05,030 --> 00:01:07,110
我们要看看一些有趣的事情。

21
00:01:07,350 --> 00:01:14,110
我们实际上可以将工具包装在长链中，这样我们就可以调用Autogen中的长链工具，即

22
00:01:14,110 --> 00:01:18,110
这将非常方便，尤其是我们现在对长链工具非常有经验。

23
00:01:18,150 --> 00:01:22,790
因为有一个巨大的生态系统，有很多工具可供选择。

24
00:01:22,790 --> 00:01:25,870
所以能够接触到这个是相当奢侈的。

25
00:01:26,270 --> 00:01:29,150
既然我们把团队放在那里，我们就更好地关注团队。

26
00:01:29,150 --> 00:01:31,870
所以我们也将快速尝试一下。

27
00:01:32,750 --> 00:01:35,390
然后还有一个特殊的嘉宾入场。

28
00:01:35,390 --> 00:01:39,790
我将向您展示其他一些可能会让您感到高兴的东西。

29
00:01:39,830 --> 00:01:40,870
好吧，够了。

30
00:01:40,870 --> 00:01:41,750
我们去做吧。

31
00:01:42,150 --> 00:01:42,670
好的。

32
00:01:42,710 --> 00:01:43,710
所以我们进来了。

33
00:01:43,990 --> 00:01:45,430
现在已经是第五周了。

34
00:01:45,470 --> 00:01:48,390
第二天我们要去第二个实验室。

35
00:01:48,390 --> 00:01:49,630
第五周，第二天。

36
00:01:50,070 --> 00:01:51,190
Autogen 代理聊天。

37
00:01:51,230 --> 00:01:52,430
更深入。

38
00:01:52,550 --> 00:01:58,870
所以我有一堆导入，包括我也将 load dot env 推入导入中，这样我们就可以

39
00:01:58,870 --> 00:02:00,150
继续做事。

40
00:02:00,470 --> 00:02:00,830
好的。

41
00:02:00,830 --> 00:02:07,340
因此，我将首先向您展示如何进行多模式对话

42
00:02:07,340 --> 00:02:12,700
不仅仅是文本，您还可以将图片与文本一起发送，并将其作为文本的一部分。

43
00:02:13,260 --> 00:02:21,180
现在我们已经有了一个 URL，该 URL 链接到我网站上的图像。

44
00:02:21,460 --> 00:02:27,980
然后我们将使用非常标准的 Python 图像库打开该图像。

45
00:02:27,980 --> 00:02:30,700
Pil 代表的是 Python 图像库。

46
00:02:30,980 --> 00:02:37,740
我们将从中创建一个 autogen 图像，然后查看它。

47
00:02:37,740 --> 00:02:38,540
所以就是这样。

48
00:02:38,540 --> 00:02:44,660
这是一幅很酷的图片，旨在唤起人们进入人工智能世界的感觉。

49
00:02:45,660 --> 00:02:48,660
所以我们现在要创建一个多模式消息。

50
00:02:48,700 --> 00:02:50,660
所以你记得过去我们有过短信。

51
00:02:50,780 --> 00:02:52,300
嗯，这是类似的。

52
00:02:52,300 --> 00:02:57,500
这是一条多模式消息，其内容带有列表。

53
00:02:57,540 --> 00:03:01,660
它有一些文字来详细描述该图像的内容。

54
00:03:01,820 --> 00:03:05,020
然后它就得到了图像，来源是用户。

55
00:03:05,020 --> 00:03:05,780
那就是我。

56
00:03:06,100 --> 00:03:11,530
因此，只需运行即可创建多模式消息。

57
00:03:11,530 --> 00:03:17,010
然后将其发送到 GPT 4 或 mini 就像我们之前所做的一样简单。

58
00:03:17,010 --> 00:03:21,770
我们创建模型客户端，然后创建助理代理。

59
00:03:21,770 --> 00:03:26,370
我称之为描述者或实名描述代理。

60
00:03:26,850 --> 00:03:31,930
你传入的模型客户端，当然就是LLM，系统消息。

61
00:03:31,930 --> 00:03:33,930
你很擅长描述图像。

62
00:03:33,930 --> 00:03:34,570
很公平。

63
00:03:34,930 --> 00:03:38,610
然后呃，然后用户提示，当然就在那里。

64
00:03:38,850 --> 00:03:46,290
然后我们传入多模式消息，我们也只是说取消令牌。

65
00:03:46,530 --> 00:03:51,330
然后我们将打印该回复的 Markdown 版本。

66
00:03:51,490 --> 00:03:56,930
这需要一点时间，因为它必须吸收该图像并且必须得到

67
00:03:56,930 --> 00:03:59,930
返回它的所有响应。

68
00:03:59,930 --> 00:04:04,810
所以我必须让这句话继续说很久才能看到我们得到什么。

69
00:04:04,810 --> 00:04:05,530
就是这样。

70
00:04:05,930 --> 00:04:06,970
呃，还不错。

71
00:04:07,170 --> 00:04:09,330
呃，所以你会发现它已经起作用了。

72
00:04:09,570 --> 00:04:14,080
呃，该图像描绘了一个色彩鲜艳、风格化的空间，它将工作空间的元素与

73
00:04:14,080 --> 00:04:16,600
异想天开、超凡脱俗的门口。

74
00:04:17,080 --> 00:04:20,920
当然，我们还有，因为模型非常擅长降价，这就是他们所喜欢的。

75
00:04:20,960 --> 00:04:23,760
这是他们的母语之一。

76
00:04:24,480 --> 00:04:27,760
您可以获得房间布置、家具、门口、装饰元素。

77
00:04:28,240 --> 00:04:32,800
总体而言，该图像巧妙地将专注于技术和编码的工作区与富有想象力的工作区交织在一起

78
00:04:32,800 --> 00:04:37,880
以及激发人工智能无限可能性的充满活力的元素。

79
00:04:38,200 --> 00:04:39,520
所以这绝对是个笑话。

80
00:04:39,560 --> 00:04:44,600
它理解图像的含义，并且很好地描述了图像。

81
00:04:44,600 --> 00:04:47,920
这是 Autogen 的多模式消息的示例。

82
00:04:48,520 --> 00:04:53,480
然后对于我的下一个技巧，今天我真的要向你快速扔东西，因为你知道，

83
00:04:53,520 --> 00:04:58,000
其中大部分内容我们将进行结构化输出，这是您所熟知的。

84
00:04:58,400 --> 00:05:00,280
这让 Autogen 变得非常容易。

85
00:05:00,280 --> 00:05:01,040
确实如此。

86
00:05:01,200 --> 00:05:08,000
所以这是 Pydantic 基本模型的一个子类，称为图像描述。

87
00:05:08,000 --> 00:05:09,000
这就是我所说的。

88
00:05:09,000 --> 00:05:12,840
我想用法学硕士的答案来填充这个课程。

89
00:05:13,120 --> 00:05:20,100
所以我给了它四个对于看到的字段，消息，样式和方向，这就是我想要的模型

90
00:05:20,140 --> 00:05:22,740
以特定的结构来描述图像。

91
00:05:22,740 --> 00:05:25,580
也许我会把它放在我的用户界面上。

92
00:05:25,620 --> 00:05:29,300
也许我会以某种方式对其进行编目，将其写入 SQL 数据库。

93
00:05:29,820 --> 00:05:35,180
所以我然后用迂腐的领域来描述每一个。

94
00:05:35,180 --> 00:05:41,220
场景在图像信息中被简要概括，即图像试图传达的要点

95
00:05:41,860 --> 00:05:45,740
风格，艺术风格和取向。

96
00:05:45,740 --> 00:05:51,460
所以我们要问它一个更具分析性的问题，比如，这是什么，一幅肖像

97
00:05:51,460 --> 00:05:57,860
图像，风景图像，或者方形图像，这就要求它有稍微多一点，呃，多一点

98
00:05:57,900 --> 00:06:00,340
对它正在查看的内容有元理解吗？

99
00:06:00,580 --> 00:06:03,820
呃，所以，呃，我们会看看它的表现如何。

100
00:06:03,820 --> 00:06:07,100
所以这就是我们希望它填充的迂腐对象。

101
00:06:07,380 --> 00:06:09,220
这是代码。

102
00:06:09,540 --> 00:06:14,140
呃，和以前一样，我们创建模型客户端，GPT 4 mini。

103
00:06:14,380 --> 00:06:16,260
这是我们的代理人。

104
00:06:16,420 --> 00:06:22,130
又是描述代理，相同型号的客户端，相同的提示，这是唯一的变化

105
00:06:22,170 --> 00:06:25,690
输出内容类型等于，我们传入迂腐的对象。

106
00:06:25,890 --> 00:06:26,850
超级简单。

107
00:06:26,850 --> 00:06:29,170
它只是让我们说出我们想要的东西。

108
00:06:29,490 --> 00:06:35,850
所以我们现在，我们期望的是，当我们呼吁消息时，你会得到同样的事情

109
00:06:35,890 --> 00:06:42,930
用来唤起，呃，调用，使用这个术语，呃，和你用来称呼这个LM的东西一样，

110
00:06:43,210 --> 00:06:45,010
嗯，什么回来了？

111
00:06:45,290 --> 00:06:48,850
我们期望的回复只是该对象的一种类型。

112
00:06:48,850 --> 00:06:51,290
它将用这个对象来回复。

113
00:06:51,290 --> 00:06:56,730
请记住，感觉模型能够使用 Python 对象进行回复。

114
00:06:56,970 --> 00:06:58,730
以及幕后发生的事情。

115
00:06:58,730 --> 00:06:59,810
我知道你知道这一点。

116
00:06:59,850 --> 00:07:01,170
这一切都只是 JSON。

117
00:07:01,370 --> 00:07:07,610
这将转换为某种 JSON 规范，然后模型返回 JSON 和包装器代码

118
00:07:07,610 --> 00:07:10,050
从 JSON 填充此对象。

119
00:07:10,650 --> 00:07:12,170
好吧，让我们运行一下。

120
00:07:14,290 --> 00:07:19,650
我们再次执行相同的图像，这意味着我应该在我闲聊时运行它

121
00:07:19,690 --> 00:07:22,760
这样我就不必用我的废话来填补死气沉沉的空气了。

122
00:07:22,760 --> 00:07:23,480
但已经完成了。

123
00:07:23,720 --> 00:07:25,000
以及我们得到的回报。

124
00:07:25,000 --> 00:07:25,880
我刚打印出来。

125
00:07:25,920 --> 00:07:28,920
它确实是一个图像描述对象。

126
00:07:29,120 --> 00:07:34,080
这是一个例子，您可以看到场景已填充。

127
00:07:34,080 --> 00:07:36,160
让我们把这个打印出来吧。

128
00:07:36,160 --> 00:07:42,120
所以我正在使用一种叫做文本换行的东西，它打印一些格式化的东西，呃，换行

129
00:07:42,120 --> 00:07:44,240
位于一定数量字符的末尾。

130
00:07:44,240 --> 00:07:48,960
我们将打印场景、消息、样式和方向。

131
00:07:49,320 --> 00:07:51,280
呃，一切都在这里。

132
00:07:51,600 --> 00:07:57,080
呃，这很漂亮，很清爽，看到一个色彩缤纷、富有想象力的房间内部展示了一个工作空间

133
00:07:57,080 --> 00:08:00,960
以及一扇通向充满活力的门户信息的门。

134
00:08:01,320 --> 00:08:07,760
该图像传达了创造力和人工智能潜力的主题，暗示了通往新可能性的大门。

135
00:08:08,320 --> 00:08:14,680
风格 充满活力、说明性的风格，采用大胆的色彩和夸张的特征，赋予其超现实的感觉

136
00:08:14,680 --> 00:08:18,320
以及俏皮的外观和方位景观。

137
00:08:18,320 --> 00:08:22,160
它正确地识别出了这实际上是一张风景图片的基本知识。

138
00:08:22,480 --> 00:08:28,790
呃,如果我们也回到图片上来,我会指出一些很聪明的东西,这只是我

139
00:08:28,790 --> 00:08:33,790
意识到，实际上现在正在和你谈论这个，那个，呃，这里不存在。

140
00:08:33,790 --> 00:08:38,310
目前尚不清楚为什么它认为这与人工智能有关。

141
00:08:38,670 --> 00:08:44,310
答案是，你可以看到，因为写作人工智能就在这里，我认为这是唯一的线索，

142
00:08:44,350 --> 00:08:49,510
除非我遗漏了一些明显的东西，否则这是这张图的唯一线索

143
00:08:49,510 --> 00:08:53,830
来自，来自，来自我上过的一门课程，这门课程是关于，你知道，门口，它意味着什么

144
00:08:53,870 --> 00:09:00,630
进入人工智能的世界，呃，呃，嗯，是的，我开设这门课程很有趣

145
00:09:00,630 --> 00:09:04,030
我把它作为我的，我的形象，所以我在那里有人工智能。

146
00:09:04,030 --> 00:09:09,150
有趣的是，它发现了这一点并将其包含在描述中。

147
00:09:09,190 --> 00:09:11,550
我不得不说非常非常令人印象深刻。

148
00:09:11,550 --> 00:09:12,710
但这不是重点。

149
00:09:12,710 --> 00:09:19,190
这样做的目的是向您展示我们可以轻松地使用结构化输出，并且我们可以取回我们的

150
00:09:19,190 --> 00:09:19,910
数据。

151
00:09:19,910 --> 00:09:22,230
这就是根据这个模式。

152
00:09:22,230 --> 00:09:26,510
如果需要的话，这将使我们能够进行更多处理。