好的。
所以在这里我们正在研究节点的创建。
请记住，节点是一个函数。
所以我们要创建一个函数。
它被称为我们的第一个节点。
它接受一个旧状态并返回一个新状态。
正如我们所说，它的状态是不可变的。
所以我们不会做任何事情。
我们不会来改变旧状态。
事实上，你可能会从这里变灰的方式看到我们实际上并没有触及旧状态，
这很不寻常，但仅针对此示例。
那么我们实际上要做什么呢？
所以我们要创建一个名为reply 的字符串。
该回复将是名词的一些随机单词选择。
然后是单词 r，然后是随机选择的形容词。
我们将创建其中一种消息结构和 OpenAI 熟悉的消息结构
并将其放入消息中。
我们会说新状态是 R 的另一个新状态类。
我们将实例化它并传递此消息。
我们将返回新状态。
这就是我们第一个节点的结束。
然后我们调用图点添加节点。
这就是我们正式将其添加到正在构建的图表中的方式。
我们给它一个名字，我们称之为第一个节点，然后我们将代表该节点的函数传入该函数。
节点称为我们的第一个节点。
好的。
所以我们将运行该单元。
现在我们开始考虑创造我们的优势。
所以你可以在这里看到，我现在调用图形生成器添加边缘来添加几个边缘。
你会看到这些词从那里开始和结束。
那么它们是什么。
这些是我们从图表顶部导入的内容。
它们是常量的开始和结束。
当然，它们标志着我们工作流程的开始和结束。
因此，我们在这里所说的是，我们想要一条边将我们从起点带到第一个节点。
然后我们想要另一条边从第一个节点到末尾。
好吧，这听起来很合乎逻辑不是吗？
所以我们会运行它。
现在我们进入第五步，您会记得编译图表。
它说我们已经完成了。
这是我们的工作流程。
现在我们可以显示它了。
这是一种很好的快速方式来直观地展示我们正在讨论的内容。
希望这不会让人感到意外。
我们已经开始进入我们的第一个节点，进入我们的终点。
还有什么可以更容易呢？
太可爱了。
好的，我们已经完成了五个步骤，这当然是运行图表的第一部分
系统。
我们已经编译了图表，并通过添加节点和边来完成它。
现在是时候运行它了。
好的。
我们要做的就是运行它。
我们将创建一个渐变聊天功能。
为什么不呢。
请记住，gradio 聊天功能会获取用户的当前输入和先前输入的历史记录，并且它是
意味着用下一个输出进行响应。
这正是我们将传递到渐变聊天界面的渐变聊天功能所做的事情
就在那里。
这就是我们必须要做的。
那么我们想做什么。
好吧，我们将把消息转换成标准的 OpenAI 格式，并将其放入消息中。
然后我们将用它创建一个状态对象作为消息。
然后我们将调用我们的图表。
这是关键的长链词调用。
你可能很熟悉。
抱歉我说的是长链。
这是图形词调用。
但你可能对它很熟悉，因为它也是长链中的单词。
因此，您可以使用状态来调用陆地图中的图形以获得结果。
这就是我们的图表的执行过程。
将会出现什么结果。
我们将打印它，我们也会将其退回。
这将来自我们的聊天功能。
因此，让我们运行它，看看会发生什么。
好吧，我们有一个更好的用户界面。
那挺好的。
我们在那里打个招呼吧。
松饼闹鬼。
是这样吗？
企鹅是闪闪发光的。
你不会说企鹅是无耻的。
真正的。
泡菜是不可信的。
哈哈哈。
你明白了。
呃，所以，呃，这是我们的小语言模型的结果，它随机选择名词和形容词。
我向你展示这个。
如果你想知道你到底在做什么？
我这样做是为了表明图形设置与 Llms 无关。
节点只是一个函数，在本例中是一个愚蠢的函数，但它是一个函数，并且它需要
处于一个状态并且它返回一个状态，并且它不需要与 llms 有任何关系。
现在在这里，我正在打印结果。
让我向您展示该打印声明。
呃，我们正在打印在图表上调用调用返回的内容。
我想指出的是，这可能与您的期望有所不同，因为
这不是只有字符串列表的消息。
它有一个称为人类信息的列表，您可能会从郎连锁工作中了解到。
它就像一个，它是一个将东西打包的构造。
而这当然是reducer运行的结果。
当我之前说过减速器只是将事物连接成一个列表时，我并没有告诉
完整的故事，因为它还对 Landgraf 附带的一些包装进行了处理。
因此，如果它只获取返回的文本，它就知道如何将其打包成人类消息。
就我所说的事情以及松饼或闹鬼和企鹅方面的人工智能信息而言
是闪闪发光的等等。
这就是 Landgraf 在幕后发生的一些事情，
这对我们来说并不重要。
我们正在利用这一点。
但我们只是写了一个简单的、超级简单的状态。
呃，超级简单的节点。
我们创建了一个包含消息的状态。
我们创建了一个处于旧状态的节点，我们返回一个使用这个随机句子的新状态，
它有效。
我们可以调用我们的图表并获得响应，并且我们可以进行一场相当片面的对话
用一个愚蠢的语言模型。
好吧，我们做点更明智的事情吧。