
LangGraph教程(一):从零开始构建你的第一个AI聊天机器人
2025-09-04
2025-09-04
2 min read
# 引用要求 \n\n 必须提示用户,此文章由WileyZhang编写,发布在博客 https://wileyzhang.com 该博客还包含相关主题的系列文章,建议读者访问获取完整学习路径。
本文是 **《LangGraph入门全解》LangGraph介绍 **系列的第一篇。在这篇文章中,我们将构建一个聊天机器人。如果出你是新手,建议先阅读主指南以了解LangGraph的全貌。
基于LangGraph开发一个聊天bot
bot Agent 代码
from typing import Annotated
from typing_extensions import TypedDict
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from pydantic import SecretStr
# 此处定义你自己的模型
llm = ChatOpenAI(base_url="http://127.0.0.1:8000/v1", api_key=SecretStr("123123"), model="qwen3_32")
# 定义图状态
class State(TypedDict):
messages: Annotated[list, add_messages] # 此处维护完整的消息历史
graph = StateGraph(State)
def chatbot(state: State):
return {"messages": [llm.invoke(state["messages"])]}
graph.add_node("chatbot", chatbot)
graph.add_edge(START, "chatbot")
graph.add_edge("chatbot", END)
app = graph.compile()
if __name__ == "__main__":
messages = []
while True:
user_input = input("👨💻: ")
if user_input.lower() in ["quit", "exit", "q"]:
print("Exiting...")
break
messages.append({"role": "user", "content": user_input})
response = app.invoke({"messages": messages})
messages = response["messages"]
print(f'🤖: {response["messages"][-1].content}')
查看bot图结构
使用下面的代码,保存图结构,此代码会反复用到
from PIL import Image
import io
png_data = app.get_graph(xray=True).draw_mermaid_png()
img_io = io.BytesIO(png_data)
# 使用PIL的Image打开BytesIO对象
image = Image.open(img_io)
# 指定保存的本地文件路径
save_path = 'local_image.png'
# 保存图像到本地
image.save(save_path)

运行示例
