LangGraph入门指南:构建第一个Hello World图
Awesome!现在这相当令人兴奋。我们实际上即将第一次开始在LangGraph中编写代码。既然我们已经涵盖了所有的理论部分(诚然是无聊的部分),我们现在将实际编写一些图,并在这个小节中编写我们的第一个图。
但在这个部分,我们不会构建任何AI代理。为什么?因为我们还没有真正学会如何在LangGraph中编码,或者如何结合所有这些LLM API和工具,我认为现在就构建一个会变得相当混乱。
本课程应该是初学者友好、详细和全面的。我们将逐步进行,所以希望你能理解,但别担心,我们很快会编写AI代理。我们现在只是要构建几个图来更好地理解LangGraph,改进语法,并学习如何实际编写图以对其建立信心。然后我们实际上会构建AI代理。
我们将构建什么
好的,很酷。所以,我们在这个部分要一起构建的图是我称之为"hello world图"的东西,主要是因为它是在LangGraph中我们可以实际编写的最基本的图形式。目标如下:
我们将定义代理状态结构(别担心,几分钟后你就会明白那是什么)。我们还将创建简单的节点函数,就像我们在上一节中讨论的那样,我们将处理它们并更新状态。我们将构建第一个基本的LangGraph结构,并理解如何编译、调用和处理它——所有的一切。本部分的主要目标是理解数据如何通过LangGraph中的单个节点流动。
现在,只是让你对我们实际要涵盖的内容和我们将要构建的东西有个大概了解,这就是这个图。再次像我说过的,这是你可以在LangGraph中构建的最基本的图形式。它有一个起点和一个终点,这个节点被夹在它们之间。
步骤1:导入
|
|
这里我们导入两个基本组件:
TypedDict允许我们定义具有显式数据类型的结构化字典StateGraph是我们在LangGraph框架中用于设计、连接和运行节点工作流的类
步骤2:创建代理状态
|
|
代理状态就像你的图的记忆。它在数据流经节点时存储和携带数据。在这种情况下,状态有一个单独的字段message,它将保存一个字符串。
步骤3:定义一个节点
|
|
节点只是一个函数。它接受状态作为输入,修改它,并返回更新后的状态。这里,节点向消息添加友好的问候。注意文档字符串的使用——在LangGraph中,这对于记录节点行为很重要。
步骤4:构建图
|
|
- 我们使用模式
AgentState初始化图 - 将
greeter节点添加到图中 - 定义入口点(图开始的地方)和完成点(图结束的地方),并将它们都链接到
greeter节点
步骤5:编译图
|
|
编译将设计转换为可执行图。它检查结构但不保证逻辑正确性。
步骤6:可视化图
|
|
这将渲染图的可视化图表,以便你可以确认结构看起来符合预期。
步骤7:运行图
|
|
输出:
|
|
我们通过使用初始状态调用它来运行图。消息"Bob"由greeter节点处理,该节点输出带有问候的最终结果。
练习
所以,现在是你的第一个练习的时候了。这个图的练习与我们刚才做的非常相似,但我希望你创建一个个性化的赞美代理。
你应该传入你的名字,比如像Bob这样的东西,然后输出类似:
|
|
这个练习巩固了你对节点和状态更新的理解。专注于将新内容连接到现有状态,而不是替换它。
你现在已经在LangGraph中构建了你的第一个"hello world"图。你学会了如何:
- 导入和设置环境
- 定义代理状态
- 创建和记录节点
- 构建、编译和运行图
这是一个基础步骤。在下一部分,我们将扩展这种学习来处理多个输入和输出,为构建更高级和有用的应用程序准备基础。
在LangGraph阅读列表中查看整个LangGraph系列。代码可在这里获得。
感谢阅读!
其他你可能感兴趣的阅读
- 多代理系统从何而来?
- 使用GPT-4o总结大型文档
- 对于初学者,LlamaIndex在易用性方面与LangChain相比如何
- 预训练 vs. 微调[带代码实现]
- 托管开源LLM与闭源(OpenAI)的成本比较
- 嵌入:LLM的支柱
- 如何使用微调的语言模型进行摘要