玩转AI工作流:一步步搭建灵活的自动化流程

我们之前搭建了许多不同类型的智能体,其中最受欢迎的就是在智能体中搭建各种工作流——这也是我最喜欢探索和玩的领域。那么,究竟什么是工作流?如何在后端实现一个工作流呢?今天我们就先简单了解下。

什么是工作流?

工作流是一种事件驱动、基于步骤的方法,用于控制和管理应用程序的执行流程。在这种方法中,应用程序被拆分为多个互相独立但又相互关联的部分,每个部分都被称为“步骤”。这些步骤通常由特定的事件触发,而每个步骤在执行时也可能会触发其他事件,从而激活更多后续的步骤。

通过精心设计和组合这些步骤与事件,你可以创建出复杂的流程,进而封装业务逻辑。

简单入门

首先,在开始之前,你需要确保你的电脑上已经安装了Python环境。我这里使用的是Python 3.10版本,但你可以根据自己的需要选择任何其他版本,前提是它符合项目的需求。接下来,我们将从创建一个新的Python项目开始,带你一步步入门。为了确保项目的依赖不与你电脑中其他Python项目的环境冲突,我们将使用虚拟环境。

今天的教程将聚焦于Python项目的基础入门部分,我们会一步步进行讲解。在后续的章节中,我们会深入探讨更复杂的技术和方法,话不多说,我们正式开始吧!

项目创建

虚拟环境搭建

  • 在你的项目目录中打开终端(命令提示符),然后使用以下命令创建虚拟环境: python -m venv venv

  • 在 Windows 上,使用以下命令激活虚拟环境: .\venv\Scripts\activate

  • 保存依赖库列表: pip freeze > requirements.txt

  • 退出虚拟环境: deactivate

image

VSCode配置

我使用的IDE是VSCode,当然你也可以根据个人喜好选择其他开发工具。虽然我们已经启动了Python虚拟环境,但需要注意的是,默认情况下,当你点击运行时,代码依旧是通过原始的Python路径来执行,而非虚拟环境中的Python解释器。因此,我们需要进行一些简单的配置来确保代码在正确的环境下运行。

  • 按下 Ctrl + Shift + P (Windows/Linux) 或 Cmd + Shift + P (Mac) 打开命令面板。

  • 输入并选择 Python: Select Interpreter

  • 在弹出的列表中,选择你虚拟环境中的 Python 解释器。

image

在弹出的窗口中,选择我们的项目路径中的venv目录即可。然后每次再点击运行就OK了。

image

Hello World

首先,为了确保后续操作顺利进行,需要提前安装以下两个依赖包。请使用以下命令进行安装:

pip install llama-index-core

pip install llama-index-utils-workflow

然后,直接粘贴以下代码,我们就可以顺利运行这个简单的程序。这个工作流的主要功能是打印“Hello, World!”消息,是一个非常基础的工作流示例:

from llama_index.core.workflow import (
    StartEvent,
    StopEvent,
    Workflow,
    step,
)

class MyWorkflow(Workflow):
    @step
    async def my_step(self, ev: StartEvent) -> StopEvent:
        # do something here
        return StopEvent(result="Hello, world!")

async def main():
    w = MyWorkflow(timeout=10, verbose=False)
    result = await w.run()
    print(result)


if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

在这段代码中,整体逻辑其实相当简单易懂。主要通过定义带有 step 注解的方法,并通过执行这些方法来实现工作流的流程控制。不过,代码中有两个关键的节点事件需要特别注意,它们分别是 StartEvent 和 StopEvent。工作流的执行通常从 StartEvent 开始,并且必须以 StopEvent 结束,确保工作流的完整性和正确性。

需要特别注意的是,如果工作流在执行过程中存在其他事件或步骤没有被正确触发或执行,系统会抛出错误。下面看下。

多个事件

我们依然可以进行简单的测试,毕竟这是流数据处理的基本操作。在此,我们定义了两个自定义事件,如下所示:

from llama_index.core.workflow import (
    StartEvent,
    StopEvent,
    Workflow,
    step,
    Event,
)

class FirstEvent(Event):
    first_output: str

class SecondEvent(Event):
    second_output: str

然后我们在工作流中引用下:

class MyWorkflow(Workflow):
    @step
    async def step_one(self, ev: StartEvent) -> FirstEvent:
        print(ev.first_input)
        return FirstEvent(first_output="First step complete.")

    @step
    async def step_two(self, ev: FirstEvent) -> SecondEvent:
        print(ev.first_output)
        return SecondEvent(second_output="Second step complete.")

    @step
    async def step_three(self, ev: SecondEvent) -> StopEvent:
        print(ev.second_output)
        return StopEvent(result="Workflow complete.")

async def main():
    w = MyWorkflow(timeout=10, verbose=False)
    result = await w.run(first_input="Start the workflow.")
    print(result)

这样,我们就可以逐步执行各个事件。如果在执行过程中某一个步骤未能顺利完成,例如我们直接修改了第二个事件并且导致返回结束,那么第三个步骤将无法执行,这样就会引发错误。

@step
async def step_two(self, ev: FirstEvent) -> StopEvent:
    print(ev.first_output)
    return StopEvent(result="Second step complete.")

@step
async def step_three(self, ev: SecondEvent) -> StopEvent:
    print(ev.second_output)
    return StopEvent(result="Workflow complete.")

在构建智能体工作流的过程中,如果没有进行连线操作,系统通常会自动检测并提示错误。这种情况下,错误提示会提醒用户必须完成连线,以确保工作流的正常运行和功能的完整性。报错信息如下:

image

可视化分析

工作流可视化功能在这里显得相对简单,它主要用于查看整个调用链路的结构和流程,而不像其他平台那样具备强大的交互操作性。我们一起看下:

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")

执行完成后,将会生成一个可正常打开的HTML文件。下面请看下图所示的内容:

image

整个工作流程非常清晰明了。在每一次执行当前事件时,首先会打印出所调用的方法名称,接着会显示正在处理的事件名称,最后以“done”字样结束该过程。

总结

通过今天的简单介绍,我们初步了解了工作流的基本概念及实现方法。工作流作为一种事件驱动的执行机制,为我们提供了更灵活的方式来管理和控制应用程序的流程。我们通过创建和配置虚拟环境,逐步实现了基础的工作流示例,体验了如何使用Python构建多步骤的业务逻辑。

在后续的学习中,我们还将探索更复杂的工作流构建方法。希望通过这一系列的实践,能够激发大家在智能体领域的创新思维,共同探讨更高效的解决方案。

文章转载自:努力的小雨

原文链接:玩转AI工作流:一步步搭建灵活的自动化流程 - 努力的小雨 - 博客园

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

内容概要:该手册介绍了 DeepSeek 人工智能平台的功能和使用方法,涵盖从账户注册到高级应用场景的多个方面。第一部分简述了快速创建AI助手的方法,包括官方网站访问、账号注册与初次登录等基础操作,以及AI面板的操作指南。第二部分侧重有效提问和魔法指令的应用,指导用户提高交流效率。第三部分内容讲解文件处理和自动化任务完成的能力,包括文档分析、编写代码等方面的操作指引。第四部分则深入探讨各种实用场景,例如辅助学术研究、媒体创作、智能学习系统构建和高效生产力工作流搭建等,每个主题均提供了详细的指令集和注意事项,确保新手可以轻松入门并逐步精通这一强大工具。第五部分内容展示了更高阶的专业功能解锁方式,第六部分强调利用平台来提升自我学习能力。 适用人群:对于有兴趣探索AI应用领域的人群特别合适,尤其是初学者或希望迅速掌握深度搜索引擎技巧的职场人士、学生群体、教师和各类创作者。 使用场景及目标:帮助用户解决具体任务(如论文撰写支持)、简化日常工作流程、加速专业知识积累,同时也可以作为个人成长和技能提升的有效辅助手段。无论是日常办公还是创意项目开发,DeepSeek都能为其带来巨大的便利性和效率增长。 其他说明:本书籍结构紧凑,条理清晰,不仅能够满足不同层次的学习需求,而且提供了大量的实例和避坑指南以确保最佳的学习体验;同时也鼓励使用者积极参与互动实践,在不断尝试过程中获取更加深入的理解和运用能力。此外还提供了有关敏感信息处理和隐私保护的重要提示,保障数据安全和个人信息安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值