使用 ControlFlow 构建 3 个有趣的 AI 应用

Building 3 Fun AI Applications with ControlFlow

使用 ControlFlow 构建 3 个有趣的 AI 应用
图片由作者 | Canva Pro

人工智能行业正迅速朝着利用大型语言模型 (LLM) 创建解决方案和最大化 AI 模型潜力迈进。公司正在寻求能够将 AI 无缝集成到现有代码库中的工具,而无需承担聘请专业人士和获取资源的巨额成本。这就是 Controlflow 发挥作用的地方。借助 ControlFlow,您只需几行代码即可开发复杂的 AI 应用程序。

在本教程中,我们将探讨 ControlFlow,并使用它来构建三个令人兴奋的 AI 应用程序。项目范围从简单的文本分类器到具有多个代理、任务和流程的复杂 AI。

什么是 ControlFlow?

ControlFlow 是一个 Python 框架,它为定义 LLM 工作流提供了一种结构化方法。它包含创建 AI 应用程序的三个主要组件:

  • 任务 (Tasks):这些是 AI 工作流的基本构建块。它们定义了一个或多个 AI 代理需要完成的离散、明确的目标。
  • 代理 (Agents):这些是为您的 AI 工作流提供动力的智能、自主实体。您可以定义一个模型,为其提供自定义说明,并添加各种工具来创建代理。
  • 流程 (Flows):Flows 负责按指定的顺序运行多个 AI 工作流。它们提供了一种管理任务、代理、工具和共享上下文的结构化方式。

通过使用 ControlFlow,您可以将 AI 功能无缝集成到您的 Python 应用程序中,更​​多地控制 AI 工作流,并生成结构化输出,而不仅仅是文本。它允许您轻松构建复杂的工作流,并且非常用户友好。使用 ControlFlow 的最大好处是,它使您能够在每个任务中观察 AI 模型的决策过程。

简单来说,ControlFlow 有两个主要用途:它协调您的 LLM 工作流并帮助您生成结构化输出,从而让您对 AI 有更多的控制权。

设置 ControlFlow

我们可以通过在终端中键入以下命令来简单安装 ControlFlow。它将自动安装所有依赖项。 

生成 OpenAI API 密钥并将其设置为环境变量。 

在使用 ControlFlow 之前,请确保已正确安装。在终端中键入以下命令以查看与 ControlFlow 相关的所有 Python 包版本。

输出

在 ControlFlow 中创建代理并运行任务非常简单。在此示例中,我们通过提供自定义说明来创建了恐怖故事讲述代理。然后,我们将使用它通过提供提示来运行一个简单的任务。最终,我们将生成一个短篇故事。

这是结果。

Building 3 Fun AI Applications with ControlFlow

如果在 Colab 中运行以下代码时遇到 `RuntimeError` 或运行时问题,请再次运行该单元格。

1. 推文分类

推文分类器是学生们一个流行的项目,通常需要几个月的时间才能构建一个合适的文本分类器。通过使用 ControlFlow,我们可以用几行代码创建一个合适的推文分类器。

  1. 创建 4 条简短推文的列表。
  2. 使用 GPT-4-mini 模型设置一个具有自定义说明的代理。

  1. 创建一个分类推文为“仇恨”或“爱”的任务,包含提示、结果类型、代理和上下文。我们将提供推文列表作为上下文。
  2. 运行任务并显示结果。 

ControlFlow 任务已对推文进行分类,并生成了一个标签列表。

Building 3 Fun AI Applications with ControlFlow

让我们使用颜色代码(红色表示仇恨,绿色表示爱)以正确的方式显示它们。

两篇推文被标记为“仇恨”,两篇被标记为“爱”。这相当准确,并且以结构化格式提供输出,我们可以将其集成到现有应用程序中。

Building 3 Fun AI Applications with ControlFlow

2. 书籍推荐器

两年前,我在 Deepnote 上构建了一个 Goodreads 应用程序,这激发了我创建书籍推荐应用程序的兴趣。 

在这个项目中,我们将使用 Pydantic 模型定义书籍推荐的数据模型。此模型将确保每条推荐都包含标题、作者、出版年份和正确字段类型的流派。

`recommend_books` 函数将使用此 Pydantic 模型来定义结果类型,并根据指定的流派和书籍数量生成书籍推荐列表。

我们将推荐 5 本科幻书籍。 

代理首先生成了文本形式的推荐书籍,将其转换为 JSON 格式,最后将其转换为包含所有正确数据类型的 Pydentic 模型类型。 

Building 3 Fun AI Applications with ControlFlow

要将输出转换为 JSON 格式,我们只需使用 `.model_dump_json(indent=2)` 函数即可。 

我们得到了 JSON 格式的输出,可以轻松地集成到 Web 应用程序或任何代码库中。 

3. 旅行代理

在这个项目中,我们将连接两个任务。一个任务将根据用户偏好生成目的地,然后使用该目的地创建详细的行程。为了创建这个项目,我们将使用多个代理、多个任务,并通过流程将它们组合起来。

我们将定义两个用于旅行偏好和旅行行程的模型类。一个将用于用户输入,另一个将用作输出的结构。

此外,我们将创建一个流程函数,其中包含两个任务:一个用于生成目的地,另一个用于根据用户偏好规划行程。

该过程将涉及生成目的地,然后使用该目的地为“n”天规划行程。

当您习惯了编写 ControlFlow 工作流时,您会发现用几行代码就可以轻松创建新的应用程序和项目。

我们将通过提供偏好的活动、预算、旅行时间和偏好的地区来创建用户偏好。然后,我们将使用这些用户偏好来运行流程。

Building 3 Fun AI Applications with ControlFlow

现在我们将打印出目的地和每日行程。

我们的目的地是意大利的阿马尔菲海岸,并且我们有一个非常好的旅行计划。

我们可以轻松地将此项目转化为产品,并构建一个提供旅行推荐的网站。

如果您在运行代码时遇到问题,请查看 ControlFlow 教程 Colab 笔记本。

总结

ControlFlow 尚属新事物,您可能会在运行文档中的某些示例时遇到问题。好消息是,有一个专门的团队正在实时解决这些问题,以确保顺畅的上手体验。您只需在 GitHub 仓库 Issues · PrefectHQ/ControlFlow 上创建一个 issue。我在 Colab 上运行它时遇到了一些问题,但得益于 Jeremiah Lowin,这些问题在两个小时内就得到了解决。

我认为我们应该致力于构建能提供商业价值的 AI 解决方案,而不是仅仅专注于将模型性能提高几个百分点。要充分发挥 AI 的潜力,我们需要 ControlFlow、LangChain 和其他 AI 框架等工具,这些工具可以帮助我们用几行代码构建复杂的 AI 应用程序。

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。