【langchain学习】使用langgraph构建简单聊天机器人

本文档介绍如何使用 langgraph 库来构建一个简单的聊天机器人。逐步解释代码,并展示如何定义状态、节点和边。

1. 导入必要的模块

首先,我们需要导入相关模块和函数:

from config import llm
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
  • llm:导入LLM配置,用于处理聊天消息。
  • Annotated:用于类型注解。
  • TypedDict:定义类型字典。
  • StateGraph, START, ENDlanggraph库中的图和状态常量。
  • add_messages:定义如何更新消息列表。

2. 定义状态类型

我们定义一个状态类型 State,其中包含一个消息列表。add_messages 函数用于将新消息添加到列表中。

class State(TypedDict):
    messages: Annotated[list, add_messages]

3. 创建状态图构建器

使用 StateGraph 类创建一个图构建器实例,并指定状态类型为 State

graph_builder = StateGraph(State)

4. 定义聊天机器人函数

定义一个函数 chatbot,它接受一个状态参数,并返回一个包含新消息的字典。该函数调用 llm.invoke 来生成响应。

def chatbot(state: State):
    return {"messages": [llm.invoke(state["messages"])]}

5. 添加节点和边

使用 graph_builder 添加节点和边:

graph_builder.add_node("chatbot", chatbot)
graph_builder.add_edge(START, "chatbot")
graph_builder.add_edge("chatbot", END)
  • add_node("chatbot", chatbot):添加名为 chatbot 的节点,并指定其处理函数。
  • add_edge(START, "chatbot"):添加从 STARTchatbot 的边。
  • add_edge("chatbot", END):添加从 chatbotEND 的边。

6. 编译图

编译图以便使用。

graph = graph_builder.compile()

7. 运行聊天机器人

使用 while 循环持续运行聊天机器人,直到用户输入 quitexitq。每次用户输入后,图会处理输入并生成响应。

while True:
    user_input = input("User: ")
    if user_input.lower() in ["quit", "exit", "q"]:
        print("Goodbye!")
        break
    for event in graph.stream({"messages": ("user", user_input)}):
        for value in event.values():
            print("Assistant:", value["messages"][-1].content)

结果如下:

User: hello
Assistant: Hello 👋! I'm ZhiPuQingYan(智谱清言), you can call me Xiaozhi🤖, the artificial intelligence assistant, nice to meet you. Feel free to ask me any questions.
User: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值