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

  • 大家好,我是 同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜同学小张 🙏

本站文章一览:

在这里插入图片描述


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

一行代码即可搞定,非常简单。

0. 示例Demo

0.1 完整代码

先上完整代码,跑通再说

from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langgraph.prebuilt import chat_agent_executor
from langchain_core.messages import HumanMessage

tools = [TavilySearchResults(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 即可:

pip install -U grandalf -i https://pypi.tuna.tsinghua.edu.cn/simple

0.3 运行结果

在这里插入图片描述
可以看到它可视化的图与上篇文章我自己画的图一样:

在这里插入图片描述

1. 代码详解

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

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

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

1.1 create_function_calling_executor

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

在这里插入图片描述

1.2 print_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())  # noqa: T201

def draw_ascii(vertices: Mapping[str, str], edges: Sequence[Tuple[str, str]]) -> str:
    """Build a DAG and draw it in ASCII.

    Args:
        vertices (list): list of graph vertices.
        edges (list): list of graph edges.

    Returns:
        str: ASCII representation

    Example:
        >>> from dvc.dagascii import draw
        >>> 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() ## 替换掉这一句
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, 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知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜同学小张 🙏

本站文章一览:

在这里插入图片描述

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学小张

如果觉得有帮助,欢迎给我鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值