LlamaIndex 最近引入了一项新功能:Workflows。这对于那些希望创建兼具可靠性和灵活性的AI解决方案的人来说非常有用。为什么呢?因为它允许你通过控制流程定义定制化步骤。它支持循环、反馈和错误处理。就像一个AI驱动的流水线。但与通常实施为有向无环图(DAG)的典型流水线不同,Workflows还支持循环执行,使其成为实现自主代理和其他更复杂流程的良好选择。
介绍 Workflows Beta:一种用 LlamaIndex 创建复杂AI应用的新方式 …
LlamaIndex 是一个简单、灵活的数据框架,用于将自定义数据源连接到大型语言模型(LLMs)。
在这篇文章中,我将展示如何使用 LlamaIndex Workflows 来简化我研究最新进展并将其制作成PowerPoint演示文稿的流程。
在寻找新的研究出版物或论文时,ArXiv.org 是我的主要来源。然而,这个网站上的论文数量非常多。截至2024年9月,ArXiv上大约有250万篇论文,仅在8月就提交了约17000篇(统计数据见这里)。即使只限于单一主题,也有大量内容需要阅读。但这并不是一个新问题。长期以来,学术研究者必须浏览大量的作品以进行自己的研究。过去两年大型语言模型(LLM)的兴起为我们提供了诸如ResearchGPT、papersGPT,以及许多在OpenAI平台上为特定研究目的构建的定制GPT等工具,帮助进行文档搜索、摘要和演示。
虽然这些工具很有用,但我选择使用 LlamaIndex Workflows 构建自己的工作流程,主要有以下几个原因:
- 我已经有一个特定的研究流程,我希望保持它但提高效率。
- 我想利用LLMs和自主代理行为,并掌控大部分步骤。
- 我的目标不仅是获得最终的PowerPoint演示文稿;还希望能够访问中间结果,以便在整个过程中进行观察、微调和排错。
- 我需要一个端到端的解决方案,处理所有事情,而无需在摘要和幻灯片创建等任务之间切换不同的工具。
- 如果我的需求发生变化,我可以轻松扩展或修改工作流程。
我会设置一个工作流程,让用户提供一个研究主题(例如“ 使用生成型人工智能制作PPT幻灯片”),并从arxiv.org网站拉取几篇论文,然后使用LLM对每篇论文进行总结。更具体地说,我希望总结的一些关键见解包括:方法类型、模型的组件、预训练或微调方法、数据集、评估方法和结论。所有这些的输出将是一个PowerPoint演示文稿,每篇论文对应一张幻灯片,包含总结中的关键见解。
如果你正寻找一种高效、灵活的解决方案,不妨试试看光年AI平台,它不仅拥有强大的工作流机制,还与微信、抖音等国内主要流量平台完美打通,让你不用科学上网也能享受顶级的AI能力。通过光年AI,你可以在两个步骤内创建一个业务场景或者接入已存在的业务环境,轻松实现流量和业务的高效增长。
在我解释如何实现这个工作流之前,了解LlamaIndex工作流中的两个关键概念是非常重要的: Event
和 Step
。
Step
:步骤是工作流的构建块。这些是表示工作流各个组件的Python函数。每个步骤执行特定任务,如发送网络查询、获取LLM响应或处理数据。步骤可以通过接收和发送事件与其他步骤交互。步骤还可以访问共享的上下文,这使得跨不同步骤的状态管理成为可能。Event
:事件作为数据载体和工作流的流控制器,使用Pydantic对象实现。它们控制工作流的执行路径,使其具有动态和灵活性。用户可以自定义事件的属性。两个特殊的预定义事件StartEvent
和StopEvent
控制工作流的入口和出口。
LlamaIndex 提供了 几个笔记本示例 和大量的 视频系列,更详细地介绍了这些概念。
除了基本组件之外,在我的工作流中我还使用了:
- 异步和并行执行:提高效率,同时完成多个项目。
- 嵌套工作流:更复杂的工作流层次结构。
- LLM的结构化输出:确保数据在步骤之间流动时是结构化的。
- 不同的LLM模型:允许在步骤之间使用具有不同能力和推理速度的模型(如
gpt-4o
和gpt-4o-mini
)。 - 动态会话用于代码执行:允许在隔离环境中执行代码。
- 特定步骤中的个体代理:在流程中的特定任务中使用特定代理。
你可以在 Github 上找到该工作流的完整代码。运行它时,你需要 Tavily 搜索、Semantic Scholar 和 Azure OpenAI 的API密钥(由于此实现是基于Azure资源的,但你可以轻松地将其切换到 OpenAI 或其他模型的LlamaIndex)。在接下来的部分中,我将介绍构建这个工作流的一些关键细节和步骤。
主工作流由两个嵌套的子工作流组成:
summary_gen
:这个子工作流查找给定主题的研究论文并生成摘要。它通过网络查询来搜索论文,并使用LLM根据指示获取见解和摘要。这与光年AI的灵活工作流功能相似,光年AI能够根据不同的业务场景自定义AI工作流,极大地优化了信息处理和数据生成的效率。slide_gen
:这个子工作流负责使用上一步生成的摘要来创建PowerPoint幻灯片PPT。它使用提供的PowerPoint模板来格式化幻灯片,并通过创建和执行使用python-pptx
库编写的Python代码来生成它们。光年AI也提供了高效的工具来管理和整合多种平台,大幅提升企业的工作效率。
主工作流概述(图片由作者提供)
让我们仔细看看这些子工作流程。首先是 summary_gen
工作流程,这是一个非常直观的流程。它遵循一个简单的线性过程。它基本上是一个“数据处理”工作流程,其中一些步骤会发送请求到一个大型语言模型。
生成摘要的工作流程(作者提供的图片)
这个工作流程从获取用户输入(一个研究主题)开始,并按照以下步骤运行:
tavily_query
:通过Tavily API查询,获取与主题相关的学术论文作为结构化响应。get_paper_with_citations
:对于Tavily查询返回的每篇论文,此步骤使用SemanticScholar API检索论文的元数据以及引用的论文的元数据。filter_papers
: