当前位置:首页 > AI > 正文内容

凭借AI帮手剖析LlamaIndex的工作流可视化

邻居的猫1个月前 (12-09)AI520

接续前次的评论,咱们前次首要剖析了LlamaIndex工作流的中心流程,当时还剩下一行代码需求重视,那就是关于工作流的可视化。今日咱们的方针是深化了解这一可视化部分的首要流程,而且对其大体的完结办法进行扼要的了解和评论。

为了帮忙咱们更好地把握这一内容,咱们先回忆一下前次评论的代码内容,具体如下:

from llama_index.utils.workflow import draw_all_possible_flows

if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

    draw_all_possible_flows(MyWorkflow, filename="multi_step_workflow.html")

实践上,后边运用了一个network封装的办法。为了更好地了解这一点,咱们可以凭借AI帮手来帮忙咱们深化了解相关的细节和原理。

可视化

底层逻辑

咱们直接向AI帮手问询这段代码的全体逻辑。从现在的反应来看,AI帮手的答复现已恰当全面,经过简略的阅读后,便可以对代码的根本思路有一个明晰的了解。

image

我来总结一下这个进程,根本可以归纳为以下几个重要过程:

  1. 首要,咱们需求创立一个全体的画布,作为整个流程的根底结构。
  2. 接下来,体系将辨认一切标示了特定注解的办法,并提取出与这些注解相关的装备信息,以保证后续操作可以依据正确的上下文进行。
  3. 在这一步中,咱们将运用之前获取的注解办法,逐个增加反映这些办法的节点,构建出一个完好的节点图。
  4. 随后,咱们将为现已增加的一切节点之间树立衔接,构成一个体系的结构,经过边的衔接联系进一步清晰各节点之间的关联性。
  5. 终究,将一切制作的内容和结构输出到用户指定的HTML文件中,以便于用户检查和运用。

Network是啥

pyvis 是一个功用强大的 Python 库,专门用于创立动态和交互式的网络可视化图形。该库中的中心组件是 Network 类,经过这一类,用户不只可以构建杂乱的网络结构,增加各种节点和边,还可以灵敏地设置网络的布局和款式,以满意不同的可视化需求。

根本用法

假如你对相关内容还不是很熟悉,彻底不必忧虑,你可以直接恳求咱们的AI帮手为您生成一个入门示例,这样你就可以经过实践操作来了解和把握。这样的办法不只简单明了,而且十分有用。

image

我把它生成的代码直接拿出来。

from pyvis.network import Network

# 创立一个 Network 目标
net = Network(directed=True, height="750px", width="100%")

# 增加节点
net.add_node("Hello", label="Hello", color="#E27AFF", shape="ellipse")
net.add_node("World", label="World", color="#90EE90", shape="ellipse")

# 增加边
net.add_edge("Hello", "World")

# 显现网络图
net.show("hello_world.html", notebook=False)

作用十分超卓,如下图所示:

image

已然Python现已可以完结这一功用,那么咱们可以估测Java也必定具有相关的生态体系。因而,无妨测验运用Java版原本探究是否存在更为高雅或高效的处理计划。

Java图可视化

咱们对现有的计划并不十分了解,因而无妨直接向AI帮手咨询,寻求其帮忙来生成一些或许的处理计划。

image

经过实践测验后,我发现问题的本源在于,Maven的依靠库中根本就没有这个依靠。因而,无法顺畅完结编译和运转。归纳来看,AI帮手在处理Python代码时体现得恰当友爱,生成的代码一般可以在第一次测验时顺畅运转,简直不需求做太多修正或调试。而关于像Java这样具有严厉语法标准和杂乱依靠办理的言语来说,AI帮手在生成代码时或许会遇到一些应战,需求开发者在运用进程中额定投入必定的精力去调整和调试。

尽管如此,AI帮手关于初学者来说依然是一个十分不错的东西,尤其是关于快速入门编程的学习者。假如你是编程新手而且想要快速上手,主张可以先从Python这样的动态言语开端

这儿我上网查找后,改正一下:

<dependency>
    <groupId>net.sf.jung</groupId>
    <artifactId>jung-api</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>net.sf.jung</groupId>
    <artifactId>jung-graph-impl</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>net.sf.jung</groupId>
    <artifactId>jung-visualization</artifactId>
    <version>2.1.1</version>
</dependency>

终究的代码如下:

// 创立一个有向图
Graph<String, String> graph = new DirectedSparseGraph<>();

// 增加节点
graph.addVertex("Hello");
graph.addVertex("World");

// 增加边
graph.addEdge("Hello to World", "Hello", "World");

// 设置布局
Layout<String, String> layout = new CircleLayout<>(graph);

// 创立可视化组件
BasicVisualizationServer<String, String> viz = new BasicVisualizationServer<>(layout);
viz.setPreferredSize(new Dimension(750, 750));

// 设置节点标签
viz.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());

// 设置节点色彩
Paint vertexPaint = new Color(226, 126, 255);
viz.getRenderContext().setVertexFillPaintTransformer(v -> vertexPaint);

// 显现窗口
JFrame frame = new JFrame("Hello, World! Network");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(viz);
frame.pack();
frame.setVisible(true);

这儿其实没有太多需求评论的内容,直接运转代码应该就能成功。关于AI帮手说到的MVN库房问题,我略微看了一下,发现问题的本源在于尽管我的 Maven 依靠中的 groupIdnet.sf.jung,但是在代码引进的时分,实践上运用的是 edu.uci.ics.jung.graph.Graph 这个途径,这的确有点令人困惑。我也查了一下,这个结构的确是十分老旧了,文档资源简直现已不存在。

接下来,咱们直接看下代码的作用吧。可以类比为一张静态图片,这儿鼠标是无法与节点进行交互的,首要展现的是图形结构的静态布局。

image

graphstream

在与一些老友沟通并听取了他们的主张后,我发现了一个十分有用的东西结构——GraphStream。GraphStream 是一个专为动态图形建模和剖析规划的 Java 库,它供给了丰厚的功用,可以帮忙咱们轻松生成、导入、导出图形,进行图形的丈量、布局优化,而且可以进行可视化展现。

经过深化了解后,我决议让 AI 帮手持续帮忙咱们生成相关代码。如图所示:

image

首要,咱们需求增加一些必要的依靠。为了保证代码可以顺畅运转,我在原有依靠的根底上,增加了一些额定的依靠项,由于在初度运转时会遇到一些报错,尤其是短少某些库或版本不兼容的问题。经过一些调试和调整后,以下是处理完一切报错后的完好依靠装备:

<dependency>
    <groupId>org.graphstream</groupId>
    <artifactId>gs-core</artifactId>
    <version>1.3</version>
</dependency>
<dependency>
    <groupId>org.graphstream</groupId>
    <artifactId>gs-algo</artifactId>
    <version>1.3</version>
</dependency>
<dependency>
    <groupId>org.graphstream</groupId>
    <artifactId>gs-ui</artifactId>
    <version>1.3</version>
</dependency>

我把代码仿制出来,给咱们一个参阅:

System.setProperty("org.graphstream.ui", "swing");

Graph graph = new SingleGraph("Tutorial 1");

graph.addNode("A");
graph.addNode("B");
graph.addNode("C");
graph.addEdge("AB", "A", "B");
graph.addEdge("BC", "B", "C");
graph.addEdge("CA", "C", "A");

graph.display();

终究,经过一系列的调试和优化,作用达到了预期。终究出现的成果如图所示,所完结的功用与之前在 Python 中完结的作用简直没有差异。

image

总结

在本文的终究,咱们总结了LlamaIndex工作流的可视化部分的完结和细节,要点剖析了怎么运用Python中的pyvis库和Java中的图形库,分别在两种言语中构建和展现网络图。经过代码示例,咱们具体评论了怎么构建节点、增加边并经过布局生成交互式图形,一起也说到了在Java中运用Jung库和GraphStream库时或许遇到的应战与处理计划。

在实践使用中,尽管AI帮手可以帮忙咱们加快开发和处理一些问题,但仍然需求开发者依据实践需求,结合言语的特性做出恰当调整。


我是尽力的小雨,一名 Java 服务端码农,潜心研究着 AI 技能的奥妙。我酷爱技能沟通与共享,对开源社区充满热情。一起也是一位腾讯云创造之星、阿里云专家博主、华为如此享专家、掘金优异作者。

💡 我将不惜共享我在技能道路上的个人探究与经历,期望能为你的学习与生长带来一些启示与帮忙。

🌟 欢迎重视尽力的小雨!🌟

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=345

分享给朋友:

“凭借AI帮手剖析LlamaIndex的工作流可视化” 的相关文章

ai软件免费下载,探索前沿技术的无限可能

ai软件免费下载,探索前沿技术的无限可能

1. 国内完全免费且不限次数使用的AI工具: 豆包AI助手:提供智能对话问答服务。 包阅AI:智能阅读助手,支持多种格式文档处理。 AIPaperPass:AI论文写作辅助工具。 小浣熊AI助手:包含代码助手、办公助手等功能。 Kimi Chat:另一款AI对话工具。2...

机器学习文本分类, 文本分类概述

1. 数据收集:收集需要分类的文本数据。2. 数据预处理:对文本数据进行清洗、分词、去除停用词、词干提取或词形还原等处理,以便于后续的分析。3. 特征提取:从预处理后的文本中提取有用的特征,如词频、TFIDF(词频逆文档频率)等。5. 模型评估:使用测试数据集来评估模型的性能,常用的指标包括准确率、...

AI象棋,深度学习与智能博弈的完美结合

AI象棋,即人工智能象棋,是指利用人工智能技术来模拟和进行象棋游戏的一种方式。象棋是一种古老的策略游戏,具有高度复杂的棋局变化和策略深度。人工智能通过算法和数据分析,可以模拟人类的象棋思维,与人类棋手进行对弈。AI象棋的发展经历了多个阶段,从早期的基于规则的程序到现代的深度学习算法。现代的AI象棋程...

菜菜机器学习,深入浅出,轻松入门

菜菜机器学习,深入浅出,轻松入门

1. 课程介绍: 菜菜的机器学习sklearn课堂是一个十一周的课程,旨在深入浅出地介绍sklearn库中的主流算法,帮助学生处理数据、调整参数、完善算法,并调用结果。2. 课程内容: 课程内容涵盖了sklearn中的各种算法,包括决策树、随机森林、朴素贝叶斯等,通过实际案例演示如何使用...

二蛋学习机器人,智能教育新伙伴

二蛋学习机器人,智能教育新伙伴

功能1. 语音交互:二蛋机器人搭载了科大讯飞的语音识别系统,可以通过语音唤醒和交互。2. 教育内容:机器人可以播放儿歌、古诗和英语,帮助孩子学习。3. 互动功能:具备微聊键,可以实现二蛋与手机端的双向对话互动;收藏键可以将机器人正在播放的内容收藏到TF卡中,以便在脱离WiFi的情况下播放。4. 算...

AI写ppt,高效与创意的完美结合

AI写ppt,高效与创意的完美结合

1. 确定PPT的主题和目标受众,以便AI为你生成更符合需求的内容。2. 提供关键信息点,例如:主要观点、论据、数据等,让AI为你组织内容。3. 选择合适的模板和设计风格,以提升PPT的美观度和易读性。4. 利用AI生成图片、图表等视觉元素,以丰富PPT内容。5. 根据实际情况,调整AI生成的文本,...