综合介绍
ControlFlow是由PrefectHQ开发的一个Python框架,专注于构建和管理AI工作流。它提供了一个结构化、面向开发者的框架,用于定义工作流并将任务委派给大型语言模型(LLM)代理。ControlFlow的设计旨在在不牺牲控制和透明度的情况下,简化复杂AI应用的开发。用户可以创建离散的、可观察的任务,并为每个任务分配一个或多个专门的AI代理。通过将这些任务组合成一个流,用户可以协调更复杂的行为。
功能列表
- 任务中心架构:将复杂的AI工作流分解为可管理的、可观察的步骤。
- 结构化结果:通过类型安全、验证的输出,桥接AI和传统软件之间的差距。
- 专门代理:部署任务特定的AI代理以提高问题解决效率。
- 灵活控制:在工作流中持续调整控制和自主性的平衡。
- 多代理协调:在单个工作流或任务中协调多个AI代理。
- 本地可观察性:使用完整的Prefect 3.0支持监控和调试AI工作流。
- 生态系统集成:与现有代码、工具和更广泛的AI生态系统无缝协作。
使用帮助
安装流程
- 使用pip安装ControlFlow:
pip install controlflow
- 配置你的LLM提供商。ControlFlow的默认提供商是OpenAI,需要设置
OPENAI_API_KEY
环境变量:
export OPENAI_API_KEY=your-api-key
- 如果使用其他LLM提供商,请参阅LLM配置文档。
基本使用
ControlFlow的基本使用包括创建任务、分配代理和运行工作流。以下是一个简单的示例:
import controlflow as cf
result = cf.run("写一首关于人工智能的短诗")
print(result)
高级使用
创建结构化研究提案
以下示例展示了用户交互、多步骤工作流和结构化输出:
import controlflow as cf
from pydantic import BaseModel
class ResearchProposal(BaseModel):
title: str
abstract: str
key_points: list[str]
@cf.flow
def research_proposal_flow():
user_input = cf.Task("与用户合作选择研究主题", interactive=True)
proposal = cf.run("生成结构化研究提案", result_type=ResearchProposal, depends_on=[user_input])
return proposal
result = research_proposal_flow()
print(result.model_dump_json(indent=2))
在这个示例中,ControlFlow自动管理一个流,即一系列任务的共享上下文。用户可以随时在标准Python函数和代理任务之间切换,逐步构建复杂的工作流。
调试和监控
ControlFlow提供了本地可观察性功能,允许用户监控和调试AI工作流。用户可以使用Prefect 3.0的完整支持来跟踪任务执行情况,并在需要时进行调整。
生态系统集成
ControlFlow与现有的代码和工具无缝集成,支持多种AI技术和工作流管理方法。用户可以利用现有的AI生态系统资源,进一步增强工作流的功能和效率。
通过以上步骤和示例,用户可以快速上手使用ControlFlow构建和管理AI工作流,实现高效的任务管理和代理协调。
ControlFlow 核心概念
Agentic 工作流的构建模块
ControlFlow 是一个用于构建 AI 工作流的框架,它弥合了结构化编程与大语言模型 (LLM) 的自然语言能力之间的差距。通过三个核心概念:任务 (Tasks)、代理 (Agents) 和流程 (Flows),实现了这一目标。
要创建一个 Agentic 工作流,您需要定义清晰的目标 (任务),分配智能实体来完成这些目标 (代理),并组织它们随时间的交互 (流程)。这种方法使您能够利用 AI 的强大功能,同时对应用程序进行细粒度控制。
📋 任务 (Tasks)
任务代表了 ControlFlow 的结构化部分。它们是具体的、定义明确的目标,构成了您的工作流的核心。任务封装了 AI 驱动操作的“内容”和“方式”,提供了清晰的编程结构。
任务的关键特性:
- 定义 AI 需要完成的具体目标
- 指定期望的结果类型和验证标准
- 可以包含执行所需的指令、上下文和工具
- 作为工作流中的检查点
在 任务 部分了解更多信息。
🦾 代理 (Agents)
代理体现了 ControlFlow 的非结构化、自然语言部分。它们是能够理解和生成类似人类文本的 AI 实体,为您的工作流带来灵活性和适应性。
代理的关键特性:
- 表示具有独特身份和能力的可配置 AI 实体
- 可以专门化以完成特定任务,或访问不同工具
- 根据提供的指令协作完成任务
- 可以交互,允许与用户进行通信
- 支持配置不同的 LLM 模型来驱动其响应
代理可以配置不同的 LLM 模型,使您可以根据性能、延迟和成本等因素选择最适合您需求的模型。
在 代理 部分了解更多信息。
🧩 流程 (Flows)
流程为工作流中的所有任务和代理提供共享上下文。它们负责协调任务的执行和代理的交互,使您能够创建复杂、自适应的 AI 工作流。
流程的关键特性:
- 作为整个 AI 驱动工作流的高级容器
- 在所有组件之间保持一致的状态和历史记录
- 为任务和代理提供共享上下文
- 可以嵌套以创建分层工作流
在 流程 部分了解更多信息。
综合运用
在一个典型的 ControlFlow 应用程序中:
- 定义一个流程 (Flow) 来表示整体工作流
- 在流程中创建任务 (Tasks) 以表示具体目标
- 分配代理 (Agents) 来处理这些任务
- 流程负责协调任务的执行和代理的交互
这种结构使您能够创建强大而灵活的 AI 工作流,同时保持对流程的控制,确保输出符合您应用程序的要求。