返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

【AI Agent系列】【LangGraph】3. 一行代码让你的 LangGraph 结构可视化!

[复制链接]
链载Ai 显示全部楼层 发表于 半小时前 |阅读模式 打印 上一主题 下一主题

可视化是个非常非常非常有用和友好的东西。本文我们来实现 LangGraph 结构的可视化,当你创建的 LangGraph 结构越来越复杂时,可以利用它来方便地调查和优化逻辑。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">一行代码即可搞定,非常简单。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">0. 示例Demo

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(15, 76, 129);color: rgb(255, 255, 255);">0.1 完整代码

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">先上完整代码,跑通再说

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;padding: 1em;margin: 10px 8px;">fromlangchain_openaiimportChatOpenAIfromlangchain_community.tools.tavily_searchimportTavilySearchResultsfromlanggraph.prebuiltimportchat_agent_executorfromlangchain_core.messagesimportHumanMessagetools=[TavilySearchResults(max_results=1)]model=ChatOpenAI()app=chat_agent_executor.create_function_calling_executor(model,tools)app.get_graph().print_ascii()

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(15, 76, 129);color: rgb(255, 255, 255);">0.2 踩坑:No module named 'grandalf'

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">运行时遇到问题:

安装 grandalf 即可:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;padding: 1em;margin: 10px 8px;">pipinstall-Ugrandalf-ihttps://pypi.tuna.tsinghua.edu.cn/simple

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(15, 76, 129);color: rgb(255, 255, 255);">0.3 运行结果

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">

可以看到它可视化的图与上篇文章我自己画的图一样:

1. 代码详解

代码很简单,就两行有效代码:

(1)app = chat_agent_executor.create_function_calling_executor(model, tools),创建一个 Graph。

(2)app.get_graph().print_ascii(),以 ASCII 的形式打印出图形。

1.1create_function_calling_executor

这个其实就是将我们上篇文章实现的 LangGraph 创建的过程做了一下封装而已,源码如下:

1.2print_ascii

从运行结果来看,它最终实现的效果其实就是将节点和边打印出来,多了一些空格和星号。实现原理并不难,但是想要组织好这个这个显示的效果(空格和星号的数量等),感觉很难。部分源码如下,看看就好,会用就行:

defdraw_ascii(self)->str:returndraw_ascii({node.id:node_data_str(node)fornodeinself.nodes.values()},[(edge.source,edge.target)foredgeinself.edges],)defprint_ascii(self)->None:print(self.draw_ascii())#noqa:T201defdraw_ascii(vertices:Mapping[str,str],edges:Sequence[Tuple[str,str]])->str:"""BuildaDAGanddrawitinASCII.Args:vertices(list):listofgraphvertices.edges(list):listofgraphedges.Returns:str:ASCIIrepresentationExample:>>>fromdvc.dagasciiimportdraw>>>vertices=[1,2,3,4]>>>edges=[(1,2),(2,3),(2,4),(1,4)]>>>print(draw(vertices,edges))+---++---+|3||4|+---+*+---+***********+---+*|2|*+---+*******+---+|1|+---+"""

2. 更好看一点的可视化

教程中还写了另一种可视化的方式,结果如下:

代码如下:

#app.get_graph().print_ascii()##替换掉这一句fromIPython.displayimportImageImage(app.get_graph().draw_png())

运行前需要先安装如下依赖库:

pipinstall-Uprompt_toolkit-ihttps://pypi.tuna.tsinghua.edu.cn/simplepipinstall-Ugrandalf-ihttps://pypi.tuna.tsinghua.edu.cn/simple

安装过程中你可能会遇到如下问题:ERROR: Could not build wheels for pygraphviz, which is required to install pyproject.toml-based projects

Windows平台的解决方法可参考这篇文章:
https://savleen307.medium.com/pygraphviz-installation-in-windows-f45cc6fed981


3. 总结

本文介绍了两种将 LangGraph 可视化的方法,一行代码就可以搞定:

app.get_graph().print_ascii()

Image(app.get_graph().draw_png())

其中app是你构建的 LangGraph:

workflow=StateGraph(AgentState)......app=workflow.compile()

4. 参考

  • •https://github.com/langchain-ai/langgraph/blob/main/examples/visualization.ipynb


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ