好的，现在是我们将与 Landgraaf 一起使用的正确示例。
就拿显而易见的来说吧。
我向您展示这个愚蠢示例的原因是因为我想表明节点不需要
打电话给 llms，他们仍然做他们应该做的事情。
但现在我们要添加法学硕士。
所以我们从定义状态开始。
我们使用该状态创建一个图形生成器。
现在我们使用聊天 OpenAI 创建一个真正的法学硕士。
因此，聊天 OpenAI 是由 Landgraf 的兄弟姐妹 Lang Chain 构建的。
呃，这就是我们将用来与我们的法学硕士联系的东西。
现在您不需要为此使用 lang chain llms。
您可以使用任何 Llm。
你可以直接自己打电话给LLM。
您还可以，呃，使用 OpenAI 代理 SDK。
但如果你使用 Lang 链和大多数社区示例，有时确实会让事情变得更简单
当然是从Landgraf到Lang chain。
所以这样做很容易。
这就是我们在这里要做的。
因此，我们将创建一个名为聊天机器人节点的新节点。
它接受一个旧状态并返回一个新状态。
它有什么作用。
它采用 LM 并调用该 LM。
所以又是朗链。
Landgraf 字调用呃，传递来自旧状态的消息。
所以旧状态有一个消息字段，这就是我们传入的内容。
然后对于新状态，它创建一个新的状态对象，其中包含其消息
字段，它包含响应。
然后我们返回新的状态。
我们将名为聊天机器人的节点添加到我们的图形生成器中。
完毕。
现在我们将从开始到聊天机器人从聊天机器人到结束添加一些边。
现在我们将编译我们的图表。
第五步，我们将查看图表。
果然，它从开始到聊天机器人结束。
然后我们将它们整合到一个简单的渐变聊天功能中。
它需要一个初始状态，这是一个用这些消息设置的状态对象，如下所示。
然后我们调用图点调用来实际调用我们的图。
我们打印结果，并且还会在 Gradio 中显示结果。
所以就是这样。
我可以在那里打个招呼。
它实际上是在调用OpenAI。
现在它不再使用我们愚蠢的形容词了。
你会在这里看到这些对象中有用户消息和响应，这个
返回的人类消息对象。
抱歉，那条人类信息是我的。
你好呀。
我的意思是，应该有一条人工智能消息。
就在那里。
有 AI 消息，它实际上是来自 OpenAI 的响应。
但值得注意的一件事是，如果我每次调用时都继续这个对话
这张图，你会看到你可能已经怀疑的，那就是我们实际上并不是
记录这里的任何历史。
让我们看看实际情况。
呃，如果我，呃，说，嗯。
我叫艾德。
很高兴认识你，艾德。
今天我能为您提供什么帮助？
我叫什么名字？
抱歉，我无权访问您的个人数据。
所以有迹象表明它无法保留上下文。
如果您阅读来回的信息，您自己也可以看到它。
因为我们每次都调用这个简单的图表，所以没有什么特别的
这里发生了有趣的事情。
而状态呃，只是包含那个呃，不包含历史或任何东西。
所以，呃，这是我们显然需要解决的问题之一。
好消息是我们确实会解决这个问题。
但坏消息要到明天才传来。
但我们还将讨论我们最喜欢的工具等问题，以及其他一些问题。
那么，嗯，期待吧。
到时候见。