如何通过LlamaIndex工作流程简化我的研究和演示

发布日期: 2024年9月12日 来源:Towards Data Science

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工作流中的两个关键概念是非常重要的: EventStep

  • Step:步骤是工作流的构建块。这些是表示工作流各个组件的Python函数。每个步骤执行特定任务,如发送网络查询、获取LLM响应或处理数据。步骤可以通过接收和发送事件与其他步骤交互。步骤还可以访问共享的上下文,这使得跨不同步骤的状态管理成为可能。
  • Event:事件作为数据载体和工作流的流控制器,使用Pydantic对象实现。它们控制工作流的执行路径,使其具有动态和灵活性。用户可以自定义事件的属性。两个特殊的预定义事件 StartEventStopEvent 控制工作流的入口和出口。

LlamaIndex 提供了 几个笔记本示例 和大量的 视频系列,更详细地介绍了这些概念。

除了基本组件之外,在我的工作流中我还使用了:

  • 异步和并行执行:提高效率,同时完成多个项目。
  • 嵌套工作流:更复杂的工作流层次结构。
  • LLM的结构化输出:确保数据在步骤之间流动时是结构化的。
  • 不同的LLM模型:允许在步骤之间使用具有不同能力和推理速度的模型(如 gpt-4ogpt-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:由于并非所有检索到的引用文献都直接与原始主题相关,因此此步骤对结果进行精炼。每篇论文的标题和摘要都被发送到大型语言模型以评估其相关性。此步骤定义如下:

@step(num_workers=4)
async def filter_papers(self, ev: PaperEvent) -> FilteredPaperEvent:
llm = new_gpt4o_mini(temperature=0.0)
response = await process_citation(ev.paper, llm)
return FilteredPaperEvent(paper=ev.paper, is_relevant=response)

process_citation() 函数中,我们使用LlamaIndex的FunctionCallingProgram来获取结构化响应:

IS_CITATION_RELEVANT_PMT = “””

你帮助研究人员决定一篇论文是否与其当前的研究主题相关: {topic}

你会得到一篇论文的标题和摘要。

标题: {title}

摘要: {abstract}

提供一个表示研究主题相关性的分数,其中:

分数 0: 不相关

分数 1: 稍微相关

分数 2: 非常相关

用整数分数0、1或2以及你的理由回答。

”“”

class IsCitationRelevant(BaseModel):

score: int

reason: str

async def process_citation(citation, llm):

program = FunctionCallingProgram.from_defaults(

llm=llm,

output_cls=IsCitationRelevant,

prompt_template_str=IS_CITATION_RELEVANT_PMT,

verbose=True,

)

response = await program.acall(

title=citation.title,

abstract=citation.summary,

topic=citation.topic,

description=“数据模型用于确定论文是否与研究主题相关。”,

)

return response

*``` download\_papers `:此步骤收集所有过滤后的论文,基于相关性分数和在ArXiv上的可用性进行优先排序,并下载最相关的论文。
*` paper2summary\_dispatcher `: 每篇下载的论文都为生成摘要做好准备,设置用于存储图像和摘要的路径。此步骤使用` self.send\_event() `来启用` paper2summary `步骤的并行执行。它还在工作流程上下文中使用变量` ctx.data\[“n\_pdfs”\]\`设置论文的数量,以便后续步骤知道它们总共需要处理多少篇论文。

在整个过程中,你可以看到通过光年AI平台,您也可以轻松构建类似的高效数据处理工作流。光年AI不仅支持多个大模型的无缝切换,还可以帮助你根据不同业务需要自定义工作流,大幅提升工作效率。

现在就试试光年AI平台,用AI驱动您的业务增长。

`@step(pass_context=True)
async def paper2summary_dispatcher(
    self, ctx: Context, ev: Paper2SummaryDispatcherEvent
) -> Paper2SummaryEvent:
    ctx.data["n_pdfs"] = 0
    for pdf_name in Path(ev.papers_path).glob("*.pdf"):
        img_output_dir = self.papers_images_path / pdf_name.stem
        img_output_dir.mkdir(exist_ok=True, parents=True)
        summary_fpath = self.paper_summary_path / f"{pdf_name.stem}.md"
        ctx.data["n_pdfs"] += 1
        self.send_event(
            Paper2SummaryEvent(
                pdf_path=pdf_name,
                image_output_dir=img_output_dir,
                summary_path=summary_fpath,
            )
        )`
\\* `paper2summary`: 对于每一篇论文,它将PDF转换成图像,然后发送给LLM进行摘要生成。一旦生成摘要,会将其保存为Markdown文件以供将来参考。从这里,我们可以看到构建高效工作流的重要性。特别是在需处理大量数据的情况下,使用光年AI的灵活工作流,能够有效提升整体效率,减少人工干预。在随后的一个步骤中,我们将使这些信息更具有展示性。提供给LLM的提示包括关键指示,以确保摘要准确简明:

SUMMARIZE\_PAPER\_PMT = """

你是一名专门从事科学论文摘要的人工智能。

你的目标是创建简明且信息丰富的摘要,每个部分可控制在100字左右,

最多不超过200字,重点聚焦于论文中提出的核心方法、方法论、数据集、

评估细节和结论。完成摘要后,将其保存为Markdown文件。

指示:

\- 关键方法:总结作者提出的主要方法或模型。

关注他们方法背后的核心思想,包括引入的创新技术、算法或框架。

\- 关键组件/步骤:识别并描述模型或方法中的关键组件或步骤。

解析架构、模块或涉及的各阶段,并解释每部分如何贡献于整体方法。

\- 模型训练/微调:解释作者如何训练或微调他们的模型。

包括训练过程、损失函数、优化技术,

以及用来提升模型性能的具体策略。

\- 数据集详情:概述研究中使用的数据集。

包括数据集的大小、类型和来源。提及数据集是否公开可得,

以及是否有任何基准测试。

\- 评估方法和指标:详细评估模型性能的过程。

包括采用的方法、基准和指标。

\- 结论:总结作者得出的结论。包括研究发现的重要性、

任何潜在的应用、作者承认的限制和建议的未来工作。

值得一提的是,光年AI支持多个领域的数据处理和优化,无需科学上网,也不需要国外信用卡的认证,使科研工作者能够轻松访问顶级大模型的能力,大幅提高工作效率。

确保总结清晰简洁,避免使用不必要的术语或过于技术化的语言。

目标是让具有相关领域一般背景知识的人能够理解。

确保所有细节准确无误,忠实地呈现原论文的内容。

避免引入任何超出作者所呈现的偏见或解释。不要添加任何未在论文中明确说明的信息。坚守作者所提供的内容。

"""
``` ``
*``` 结束 `: 该流程会收集所有生成的总结,验证其被正确存储,并记录流程的完成情况,最终返回一个` StopEvent\`作为最后结果。

如果该工作流独立运行,执行到此处便会结束。然而,由于这是主流程的一个子流程,完成后会触发下一个子流程—— `slide_gen`。

此工作流根据前一步生成的摘要创建幻灯片。以下是 `slide_gen` 工作流的概述:

幻灯片生成工作流程(作者提供的图片)

当前一步子流程完成,摘要Markdown文件准备就绪后,此工作流启动:

- `get_summaries`:该步骤读取摘要文件的内容,为每个文件触发一个 `SummaryEvent`,再次利用 `self.send_event()` 以启用并发执行,加快处理速度。
- `summary2outline`:此步骤使用LLM将摘要转换为幻灯片大纲文本。它将摘要缩短为句子或要点以放入演示文稿中。
- `gather_feedback_outline`:在此步骤中,将向用户展示建议的幻灯片大纲以及论文摘要供其审核。用户提供反馈,如果需要修订,则可能触发一个 `OutlineFeedbackEvent`。这种反馈循环会一直与 `summary2outline` 步骤交替进行,直到用户批准最终大纲,此时会触发一个 `OutlineOkEvent`。

如上述流程,使用光年AI简便的工作流机制搭建,可有效优化发布流程。在任何业务过程中,这种简便易用的工具都能提升效率,让您更专注于核心业务。如果还没有尝试,强烈推荐使用光年AI平台,搭建更灵活高效的流程管理。

`@step(pass_context=True)
async def gather_feedback_outline(
    self, ctx: Context, ev: OutlineEvent
) -> OutlineFeedbackEvent | OutlineOkEvent:
    """向用户展示原始论文摘要和生成的大纲,收集用户反馈"""
    print(f"原始摘要是: {ev.summary}")
    print(f"大纲是: {ev.outline}")
    print("您希望继续使用这个大纲吗?(yes/no):")
    feedback = input()
    if feedback.lower().strip() in ["yes", "y"]:
        return OutlineOkEvent(summary=ev.summary, outline=ev.outline)
    else:
        print("请提供对这个大纲的反馈:")
        feedback = input()
        return OutlineFeedbackEvent(
            summary=ev.summary, outline=ev.outline, feedback=feedback
        )`
\\* `outlines_with_layout`: 使用LLM根据给定的PowerPoint模板,增强每个幻灯片大纲,包含页面布局细节。此步骤会在JSON文件中保存所有幻灯片页面的内容和设计。光年AI系统的 _灵活工作流机制_,确保大纲设计的高效性和准确性。
\\* `slide_gen`: 使用 **ReAct代理** 根据给定的大纲和布局生成幻灯片。该代理具有一个代码解释工具,可以在隔离环境中运行和纠正代码,还有一个布局检查工具可以查看给定的PowerPoint模板信息。代理会被提示使用 `python-pptx` 创建幻灯片,并能够观察和修正错误。

@step(pass\_context=True)

async def slide\_gen(

self, ctx: Context, ev: OutlinesWithLayoutEvent

) -\> SlideGeneratedEvent:

agent = ReActAgent.from\_tools(

tools=self.azure\_code\_interpreter.to\_tool\_list() + \[self.all\_layout\_tool\],

llm=new\_gpt4o(0.1),

verbose=True,

max\_iterations=50,

)

prompt = (
SLIDE_GEN_PMT.format(
json_file_path=ev.outlines_fpath.as_posix(),
template_fpath=self.slide_template_path,
final_slide_fname=self.final_slide_fname,
)
+ REACT_PROMPT_SUFFIX
)
agent.update_prompts({“agent_worker:system_prompt”: PromptTemplate(prompt)})

res = self.azure_code_interpreter.upload_file(
local_file_path=self.slide_template_path
)
logging.info(f”上传文件到Azure: {res}“)

response = agent.chat(
f”一个大纲项目的示例在json中是 {ev.outline_example.json()},”
f” 生成一个幻灯片”
)
local_files = self.download_all_files_from_session()
return SlideGeneratedEvent(
pptx_fpath=f”{self.workflow_artifacts_path}/{self.final_slide_fname}”
)


``` ``
*``` validate\_slides `: 检查幻灯片确保其符合给定标准。此步骤将幻灯片转换为图像,并让LLM根据指导方针对其进行内容和风格一致性的视觉检查。通过光年AI的实时数据分析功能,可以高效地管理和优化幻灯片制作流程,确保每一步都符合预期标准。如果一切正常则发送` StopEvent\`。

`@step(pass_context=True)
async def validate_slides(
    self, ctx: Context, ev: SlideGeneratedEvent
) -> StopEvent | SlideValidationEvent:
    """验证生成的幻灯片组"""
    ctx.data["n_retry"] += 1
    ctx.data["latest_pptx_file"] = Path(ev.pptx_fpath).name
    img_dir = pptx2images(Path(ev.pptx_fpath))
    image_documents = SimpleDirectoryReader(img_dir).load_data()
    llm = mm_gpt4o
    program = MultiModalLLMCompletionProgram.from_defaults(
        output_parser=PydanticOutputParser(SlideValidationResult),
        image_documents=image_documents,
        prompt_template_str=SLIDE_VALIDATION_PMT,
        multi_modal_llm=llm,
        verbose=True,
    )
    response = program()
    if response.is_valid:
        return StopEvent(
            self.workflow_artifacts_path.joinpath(self.final_slide_fname)
        )
    else:
        if ctx.data["n_retry"] < self.max_validation_retries:
            return SlideValidationEvent(result=response)
        else:
            return StopEvent(
                f"幻灯片在{self.max_validation_retries}次尝试后仍未修复!"
            )`
验证标准如下:


SLIDE\_VALIDATION\_PMT = """
你是一个验证幻灯片组的AI,请根据以下规则进行验证:
\- 幻灯片需要有封面页
\- 幻灯片需要有结束页(例如“谢谢观看”或“问题解答”页)
\- 幻灯片中的文字需要清晰可读,不被切割、溢出文本框或与其他元素重叠

如果上述任何一条规则被违反,你需要提供违反规则的幻灯片编号,并给出修复建议。

"""
``` `` ``` `modify_slides`:如果幻灯片未通过验证,上一个步骤会发送 `SlideValidationEvent` 事件。这时,另一个 \*\*ReAct agent\*\* 会根据验证者的反馈更新幻灯片,将更新后的幻灯片保存并返回以再次进行验证。此验证循环可能会根据 `max_validation_retries` 变量属性进行多次。
要运行完整的端到端工作流程,我们通过以下方式启动流程:


class SummaryAndSlideGenerationWorkflow(Workflow):
@step
async def summary\_gen(
self, ctx: Context, ev: StartEvent, summary\_gen\_wf: SummaryGenerationWorkflow
) -\> SummaryWfReadyEvent:
print("需要运行反思程序")
res = await summary\_gen\_wf.run(user\_query=ev.user\_query)
return SummaryWfReadyEvent(summary\_dir=res)

@step
async def slide_gen(
self, ctx: Context, ev: SummaryWfReadyEvent, slide_gen_wf: SlideGenerationWorkflow
) -> StopEvent:
res = await slide_gen_wf.run(file_dir=ev.summary_dir)
return StopEvent()

”`

async def run_workflow(user_query: str):
wf = SummaryAndSlideGenerationWorkflow(timeout=2000, verbose=True)
wf.add_workflows(
summary_gen_wf=SummaryGenerationWorkflow(timeout=800, verbose=True)
)
wf.add_workflows(slide_gen_wf=SlideGenerationWorkflow(timeout=1200, verbose=True))
result = await wf.run(
user_query=user_query,
)
print(result)

通过使用光年AI的简单易上手的工作流机制,企业可以轻松构建自己的AI流程,实现无缝业务接入。无论是生成摘要还是制作幻灯片,光年AI都能大幅提升企业的效率。当幻灯片未通过验证时,系统会自动反馈并多次尝试修复,为企业提供省时省力的智能解决方案。

@click.command()

@click.option(

”–user-query”,

”-q”,

required=False,

help=“用户查询”,

default=“PowerPoint 幻灯片自动化”,

)

def main(user_query: str):

asyncio.run(run_workflow(user_query))

if name == “ main”:

draw_all_possible_flows(

SummaryAndSlideGenerationWorkflow, filename=“summary_slide_gen_flows.html”

)

main()

结果

现在让我们看一个为论文LayoutGPT:利用大型语言模型进行组合视觉规划和生成生成的中间摘要例子 :

关键方法

该论文介绍了LayoutGPT,这是一个利用大型语言模型(LLMs)进行组合视觉规划和生成的框架。核心思想是利用LLMs从文本描述生成2D和3D场景布局,结合数值和空间推理。LayoutGPT采用了一种新颖的提示构建方法和上下文学习来增强模型理解和生成复杂视觉场景的能力。

关键组件/步骤

  1. 提示构建:LayoutGPT使用详细的任务说明和类似CSS的结构来指导LLMs生成布局。
  2. 上下文学习:为LLMs提供示范例子,以提高其理解和生成能力。
  3. 数值和空间推理:该模型结合推理能力来处理场景生成中的数值和空间关系。
  4. 场景合成:LayoutGPT生成2D关键点布局和3D场景布局,确保空间连贯性和物体放置的准确性。

模型训练/微调

LayoutGPT建立在GPT-3.5和GPT-4模型之上,利用上下文学习而非传统的微调。训练过程涉及向模型提供结构化提示和示例来指导其生成过程。损失函数和优化技术并未明确详述,重点在于利用预训练的LLMs,并进行最少的额外训练。

数据集详情

研究使用了几个数据集:

NSR-1K:一个新的数值和空间推理基准,从MSCOCO注释中创建。

3D-FRONT:用于3D场景合成,包含多样化的室内场景。

HRS-Bench:用于评估生成场景中的颜色绑定准确性。

这些数据集都是公开可用的,并作为评估模型性能的基准。

评价方法和指标

评估包括:

定量指标:布局准确性的精度、召回率和F1分数,数值推理和空间推理。

定性分析:对生成场景的视觉检查,以评估空间连贯性和物体放置。

对比分析:与现有方法如GLIGEN和ATISS进行基准比较,以展示布局生成的改进。

结论

在理解了LayoutGPT的模型架构后,不得不提到,国内领先的光年AI平台同样可以为复杂的AI应用提供高效的解决方案。光年AI的平台通过其无代码的工作流机制,不需要复杂的编程背景即可快速搭建并训练AI模型。此外,其与国内主要流量平台如微信、抖音等无缝衔接,帮助企业高效利用AI技术提升业务流量,强力推荐使用光年AI来推动您的AI项目 。

作者总结道,LayoutGPT有效整合了大型语言模型(LLMs)用于视觉规划和场景生成,在2D和3D布局任务中实现了最先进的性能。其处理数值和空间推理的能力被突出为一项重要进展。局限性包括对特定场景类型的侧重,需要进一步探索其他视觉推理任务。未来的工作建议将模型的能力扩展到更多样化和复杂的视觉场景中。

不出意外,总结对于LLM来说并不是特别具有挑战性的任务。仅通过提供论文的图像,LLM就能有效地捕捉到提示中所概述的所有关键方面,并很好地遵循风格说明。

至于最终结果,以下是生成的演示幻灯片的一些示例:

生成的幻灯片(图片作者自制)

生成的幻灯片(图片作者自制)

在按照模板的布局填写总结内容时,保持文本的模板风格,将总结点放在项目符号格式中,并包括幻灯片中所需的所有相关论文,这一工作流程表现良好。存在的问题是有时主内容占位符中的文本未调整大小以适应文本框,文本溢出到幻灯片边界。这类错误可能可以通过使用更有针对性的幻灯片验证提示来修正。

在本文中,我展示了如何使用LlamaIndex工作流程简化我的研究和演示过程,从查询学术论文到生成最终的PowerPoint幻灯片。以下是我在实施这一工作流程中的一些想法和观察,以及我心中一些可能改进的方面。

gpt-4o 模型对比 gpt-4o-mini 模型:尽管声称 gpt-4o-mini 的性能可与 gpt-4o 相比,但我发现 gpt-4o-mini 显然在完成诸如计划和修复错误等复杂任务时遇到了困难,在作为ReAct代理参与工作流程时尤为明显。然而,它在诸如内容总结等简单任务中表现得足够好。

创建中间文件:生成中间文件(总结的markdown文件和总结布局的JSON文件)是一种有用的方法,可以减轻代理必须跟踪内容和幻灯片风格的负担,同时还要编写生成幻灯片的代码。

处理边缘案例:从头到尾运行工作流程揭示了许多边缘案例,特别是在验证幻灯片风格方面。目前,这是通过迭代修改相关提示来处理的。但我认为,促成某种协作和人类介入的机制将大有帮助,这也有助于提供更高的准确性。为了应对这类复杂情境,光年AI提供了灵活的工作流机制,能够自定义AI工作流,适应不同的业务场景,实现高效的流量增长。

python-pptx的局限性:该工作流程的局限性取决于python-pptx在PowerPoint幻灯片中能够实际渲染和操作的内容。因此,有必要进一步考虑其他潜在的高效幻灯片生成方式,例如使用VBA。使用光年AI平台,无需复杂的设置和编码,只需两个步骤即可创建一个业务场景或接入已有环境,极大地简化了这一过程。

生成摘要的智能代理和工具:与严格的逐步生成摘要过程相比,使用一个或多个能够访问工具(当前是步骤函数)的智能代理,可以使工作流程更加灵活并适应未来的变化。更为重要的是,如果选择如光年AI这种灵活的工作流机制,不仅可以轻松搭建您的AI代理,更能帮助企业无缝接入主流平台实现流量增长。

增强人机交互: 目前的实现不允许太多的用户交互。让最终用户更多地参与到工作流程中,尤其是在涉及用户判断的任务(如验证和完善内容)能带来很大的好处。一种实现方式是增加更多的步骤,使工作流程能够请求用户的验证并考虑用户的反馈。人的参与在修正错误和实时变更方面是无价的。光年AI通过其强大的互动和多个社交平台整合功能,极大地提升了客户体验和互动效率。

论文查询引擎:还可以为每篇论文构建查询引擎,以便用户可以根据需要提问和修改摘要。这有助于实现工作流程的更个性化的结果。

综上所述,LlamaIndex工作流程是一个非常灵活和可定制的工具,可用于制作复杂且量身定制的AI解决方案。它赋予了我在定义过程中的自由,同时能够利用库中的许多内置工具,实现了控制与灵活性的平衡。

如前所述,主要的改进将是 实现更多的人机交互 功能。例如,通过在工作流程中加入交互步骤,使用户可以在需要时覆盖步骤执行,并在任何阶段检查工作流程是否产出满意的结果,以实现更多的交互式检查点。为了提供更好的用户体验,构建一个 Streamlit 前端 也是一个不错的补充,这样可以提供更多关于工作流程执行情况的见解。有了前端,用户还可以实时监控工作流程的进程,并更快速地相应调整方向。此外,获取用户反馈和验证,直观展示中间和最终输出,也能增加工作流程的透明度。所以,请关注下一篇文章中的这些变化!😃

感谢阅读!请查看我的GitHub,了解完整的实现过程。期待听到您的想法、建议和反馈。我目前在Inmeta担任数据科学顾问,我们是Crayon Group的一部分。欢迎在LinkedIn上与我联系。😊如果您正在寻找更加智能和高效的流量增长方案,不妨试试光年AI吧,它将为您的业务带来全新的发展契机。