1
00:00:00,400 --> 00:00:04,320
好的，现在是我们将与 Landgraaf 一起使用的正确示例。

2
00:00:04,680 --> 00:00:05,440
就拿显而易见的来说吧。

3
00:00:05,440 --> 00:00:10,040
我向您展示这个愚蠢示例的原因是因为我想表明节点不需要

4
00:00:10,040 --> 00:00:13,320
打电话给 llms，他们仍然做他们应该做的事情。

5
00:00:13,360 --> 00:00:15,360
但现在我们要添加法学硕士。

6
00:00:15,400 --> 00:00:17,880
所以我们从定义状态开始。

7
00:00:18,080 --> 00:00:21,040
我们使用该状态创建一个图形生成器。

8
00:00:21,160 --> 00:00:26,480
现在我们使用聊天 OpenAI 创建一个真正的法学硕士。

9
00:00:26,520 --> 00:00:31,840
因此，聊天 OpenAI 是由 Landgraf 的兄弟姐妹 Lang Chain 构建的。

10
00:00:32,000 --> 00:00:35,520
呃，这就是我们将用来与我们的法学硕士联系的东西。

11
00:00:35,680 --> 00:00:39,640
现在您不需要为此使用 lang chain llms。

12
00:00:39,640 --> 00:00:41,120
您可以使用任何 Llm。

13
00:00:41,120 --> 00:00:43,160
你可以直接自己打电话给LLM。

14
00:00:43,320 --> 00:00:47,560
您还可以，呃，使用 OpenAI 代理 SDK。

15
00:00:47,840 --> 00:00:53,320
但如果你使用 Lang 链和大多数社区示例，有时确实会让事情变得更简单

16
00:00:53,320 --> 00:00:55,840
当然是从Landgraf到Lang chain。

17
00:00:55,840 --> 00:00:57,520
所以这样做很容易。

18
00:00:57,520 --> 00:00:58,880
这就是我们在这里要做的。

19
00:00:59,440 --> 00:01:03,150
因此，我们将创建一个名为聊天机器人节点的新节点。

20
00:01:03,150 --> 00:01:06,070
它接受一个旧状态并返回一个新状态。

21
00:01:06,230 --> 00:01:07,390
它有什么作用。

22
00:01:07,430 --> 00:01:12,390
它采用 LM 并调用该 LM。

23
00:01:12,390 --> 00:01:13,830
所以又是朗链。

24
00:01:13,830 --> 00:01:18,950
Landgraf 字调用呃，传递来自旧状态的消息。

25
00:01:18,950 --> 00:01:21,950
所以旧状态有一个消息字段，这就是我们传入的内容。

26
00:01:22,270 --> 00:01:29,710
然后对于新状态，它创建一个新的状态对象，其中包含其消息

27
00:01:29,710 --> 00:01:31,790
字段，它包含响应。

28
00:01:31,790 --> 00:01:34,230
然后我们返回新的状态。

29
00:01:34,510 --> 00:01:40,310
我们将名为聊天机器人的节点添加到我们的图形生成器中。

30
00:01:40,350 --> 00:01:40,830
完毕。

31
00:01:41,190 --> 00:01:47,150
现在我们将从开始到聊天机器人从聊天机器人到结束添加一些边。

32
00:01:47,510 --> 00:01:49,710
现在我们将编译我们的图表。

33
00:01:49,710 --> 00:01:51,510
第五步，我们将查看图表。

34
00:01:51,510 --> 00:01:54,750
果然，它从开始到聊天机器人结束。

35
00:01:55,350 --> 00:01:59,070
然后我们将它们整合到一个简单的渐变聊天功能中。

36
00:01:59,070 --> 00:02:05,260
它需要一个初始状态，这是一个用这些消息设置的状态对象，如下所示。

37
00:02:05,700 --> 00:02:09,620
然后我们调用图点调用来实际调用我们的图。

38
00:02:09,740 --> 00:02:16,260
我们打印结果，并且还会在 Gradio 中显示结果。

39
00:02:16,540 --> 00:02:17,460
所以就是这样。

40
00:02:17,500 --> 00:02:18,860
我可以在那里打个招呼。

41
00:02:20,300 --> 00:02:22,180
它实际上是在调用OpenAI。

42
00:02:22,220 --> 00:02:25,260
现在它不再使用我们愚蠢的形容词了。

43
00:02:25,420 --> 00:02:32,540
你会在这里看到这些对象中有用户消息和响应，这个

44
00:02:32,540 --> 00:02:35,460
返回的人类消息对象。

45
00:02:35,460 --> 00:02:36,780
抱歉，那条人类信息是我的。

46
00:02:36,780 --> 00:02:37,340
你好呀。

47
00:02:37,380 --> 00:02:38,980
我的意思是，应该有一条人工智能消息。

48
00:02:38,980 --> 00:02:39,740
就在那里。

49
00:02:39,940 --> 00:02:44,740
有 AI 消息，它实际上是来自 OpenAI 的响应。

50
00:02:45,420 --> 00:02:50,860
但值得注意的一件事是，如果我每次调用时都继续这个对话

51
00:02:50,980 --> 00:02:56,660
这张图，你会看到你可能已经怀疑的，那就是我们实际上并不是

52
00:02:56,700 --> 00:02:58,740
记录这里的任何历史。

53
00:02:58,970 --> 00:03:00,410
让我们看看实际情况。

54
00:03:00,610 --> 00:03:02,770
呃，如果我，呃，说，嗯。

55
00:03:03,010 --> 00:03:03,890
我叫艾德。

56
00:03:07,490 --> 00:03:08,410
很高兴认识你，艾德。

57
00:03:08,450 --> 00:03:09,770
今天我能为您提供什么帮助？

58
00:03:11,290 --> 00:03:12,290
我叫什么名字？

59
00:03:15,050 --> 00:03:17,770
抱歉，我无权访问您的个人数据。

60
00:03:17,970 --> 00:03:21,450
所以有迹象表明它无法保留上下文。

61
00:03:21,450 --> 00:03:26,370
如果您阅读来回的信息，您自己也可以看到它。

62
00:03:26,530 --> 00:03:33,050
因为我们每次都调用这个简单的图表，所以没有什么特别的

63
00:03:33,050 --> 00:03:34,770
这里发生了有趣的事情。

64
00:03:34,810 --> 00:03:41,370
而状态呃，只是包含那个呃，不包含历史或任何东西。

65
00:03:41,610 --> 00:03:44,850
所以，呃，这是我们显然需要解决的问题之一。

66
00:03:45,170 --> 00:03:47,370
好消息是我们确实会解决这个问题。

67
00:03:47,370 --> 00:03:49,450
但坏消息要到明天才传来。

68
00:03:49,570 --> 00:03:56,170
但我们还将讨论我们最喜欢的工具等问题，以及其他一些问题。

69
00:03:56,330 --> 00:03:58,010
那么，嗯，期待吧。

70
00:03:58,010 --> 00:03:58,810
到时候见。