【AI Agent系列】【LangGraph】3. 一行代码让你的 LangGraph 结构可视化!
可视化是个好东西——尤其当你的 LangGraph 结构越来越复杂的时候,能一眼看清节点与边的走向,简直是调试和优化的利器。今天我们就来聊聊如何用一行代码让 LangGraph 结构变得直观可见,操作简单到让你有点意外。

没错,一行代码就能搞定,真的就这么简单。
0. 示例Demo
0.1 完整代码
先上完整代码,跑通了再慢慢聊细节。
from langchain_openai import ChatOpenAI from langchain_community.tools.ta vily_search import Ta vilySearchResults from langgraph.prebuilt import chat_agent_executor from langchain_core.messages import HumanMessage tools = [Ta vilySearchResults(max_results=1)] model = ChatOpenAI() app = chat_agent_executor.create_function_calling_executor(model, tools) app.get_graph().print_ascii()
0.2 踩坑:No module named 'grandalf'
运行的时候可能会遇到一个报错,提示找不到 grandalf 模块。解决办法很简单:装一下 grandalf 就好了。
pip install -U grandalf -i https://pypi.tuna.tsinghua.edu.cn/simple
0.3 运行结果
执行之后,你会看到终端里打印出一个 ASCII 图形,节点和边清晰可见。对比之前手绘的图,结构完全一致。
可以看到它可视化的图与上篇文章我自己画的图一样:
1. 代码详解
整个代码的核心其实只有两行有效代码:
(1)创建 Graph:
app = chat_agent_executor.create_function_calling_executor(model, tools),这一步实际上就是封装了我们之前手动构建 LangGraph 的过程。
(2)打印图结构:
app.get_graph().print_ascii(),以 ASCII 字符的形式把图的结构打印出来。
1.1 create_function_calling_executor
这个函数其实就是把我们上一篇文章中手动实现 LangGraph 创建的那套逻辑打包了。下面是它的源码(简化版):
# 源码略,实际就是将 StateGraph 的创建和边、节点的配置封装在一起
1.2 print_ascii
从运行结果看,它做的事情无非是把节点和边的信息用空格和星号组织起来,输出一个美观的 ASCII 图。原理并不复杂,但想要把间距、对齐排版得刚刚好,确实需要一些精细的功夫。下面是部分源码,了解即可,会用就行:
def draw_ascii(self) -> str:
return draw_ascii(
{node.id: node_data_str(node) for node in self.nodes.values()},
[(edge.source, edge.target) for edge in self.edges],
)
def print_ascii(self) -> None:
print(self.draw_ascii())
def draw_ascii(vertices: Mapping[str, str], edges: Sequence[Tuple[str, str]]) -> str:
"""Build a DAG and draw it in ASCII.
...
"""
2. 更好看一点的可视化
除了 ASCII 形式,LangGraph 还提供了另一种更直观的可视化方式——直接生成 PNG 图片。结果如下图所示:
代码同样简单,只需要把 print_ascii() 换成下面这两行:
# app.get_graph().print_ascii() # 替换掉这一句 from IPython.display import Image Image(app.get_graph().draw_png())
运行之前需要先安装一些依赖库:
pip install -U prompt_toolkit -i https://pypi.tuna.tsinghua.edu.cn/simple pip install -U grandalf -i https://pypi.tuna.tsinghua.edu.cn/simple
安装过程可能会遇到“ERROR: Could not build wheels for pygraphviz”这样的问题。别担心,这是 Windows 平台下的常见情况,网上有很多解决方案,值得留意的是需要提前安装 Graphviz 的二进制包。
3. 总结
这篇文章介绍了两种让 LangGraph 结构可视化的方法,都是一行代码就能解决的事:
app.get_graph().print_ascii()
或者
Image(app.get_graph().draw_png())
其中 app 就是你用 workflow.compile() 编译之后得到的那张图:
workflow = StateGraph(AgentState) ... app = workflow.compile()
可视化后,无论是调试逻辑还是向别人解释你的 Agent 架构,都会清晰很多。
4. 参考
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名