OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  AdalFlow — 面向 LLM 应用的轻量工作流与 Agent 框架

AdalFlow — 面向 LLM 应用的轻量工作流与 Agent 框架

 
  justice ·  2026-06-25 11:00:15 · 17 次点击  · 0 条评论  

⚡ AdalFlow 是一个类似 PyTorch 的库,用于构建并自动优化任何语言模型工作流,从聊天机器人、RAG 到智能代理。⚡

AdaL  AdaL CLI

AdalFlow 为 AdaL CLI 提供强大支持 — AI 编程助手

在 Colab 中尝试快速入门

查看文档

PyPI 版本 PyPI 下载量 PyPI 月度下载量 GitHub Stars 打开问题数 许可证 Discord 邀请

为什么选择 AdalFlow

  1. 100% 开源代理 SDK:轻量级,无需额外 API 即可设置“人在回路”和“追踪”功能。
  2. 告别手动提示工程:AdalFlow 为“零样本优化”和“少样本提示优化”提供统一的自动微分框架。我们的研究 LLM-AutoDiffLearn-to-Reason Few-shot In Context Learning 在所有自动提示优化库中达到了最高准确率。
  3. 通过一个配置切换任何模型:AdalFlow 为 LLM 任务流水线提供“模型无关”的构建模块,涵盖 RAG、代理以及经典的 NLP 任务。

AdalFlow 优化后的 Prompt

AdalFlow MLflow 集成

查看文档

快速入门

用 pip 安装 AdalFlow:

pip install adalflow

Hello World 代理示例

from adalflow import Agent, Runner
from adalflow.components.model_client.openai_client import OpenAIClient
from adalflow.core.types import (
    ToolCallActivityRunItem, 
    RunItemStreamEvent,
    ToolCallRunItem,
    ToolOutputRunItem,
    FinalOutputItem
)
import asyncio

# 定义工具
def calculator(expression: str) -> str:
    """计算数学表达式。"""
    try:
        result = eval(expression)
        return f"{expression} 的结果是 {result}"
    except Exception as e:
        return f"错误: {e}"

async def web_search(query: str="what is the weather in SF today?") -> str:
    """根据查询进行网络搜索。"""
    await asyncio.sleep(0.5)
    return "旧金山今天大部分时间多云,午后会有一些阳光,气温大约 67 °F (20 °C)。"

def counter(limit: int):
    """一个计数器,数到上限为止。"""
    final_output = []
    for i in range(1, limit + 1):
        stream_item = f"计数: {i}/{limit}"
        final_output.append(stream_item)
        yield ToolCallActivityRunItem(data=stream_item)
    yield final_output

# 创建带工具的代理
agent = Agent(
    name="MyAgent",
    tools=[calculator, web_search, counter],
    model_client=OpenAIClient(),
    model_kwargs={"model": "gpt-4o", "temperature": 0.3},
    max_steps=5
)

runner = Runner(agent=agent)

1. 同步调用模式

# 同步调用 - 返回带有完整执行历史的 RunnerResult
result = runner.call(
    prompt_kwargs={"input_str": "计算 15 * 7 + 23 并计数到 5"}
)

print(result.answer)
# 输出: 15 * 7 + 23 的结果是 128。计数器已计数到 5: 1, 2, 3, 4, 5。

# 访问步骤历史
for step in result.step_history:
    print(f"步骤 {step.step}: {step.function.name} -> {step.observation}")
# 输出:
# 步骤 0: calculator -> 15 * 7 + 23 的结果是 128
# 步骤 1: counter -> ['计数: 1/5', '计数: 2/5', '计数: 3/5', '计数: 4/5', '计数: 5/5']

2. 异步调用模式

# 异步调用 - 输出结构与同步调用类似
result = await runner.acall(
    prompt_kwargs={"input_str": "旧金山天气怎么样?并计算 42 * 3"}
)

print(result.answer)
# 输出: 旧金山今天大部分时间多云,午后会有一些阳光,气温大约 67 °F (20 °C)。 
#        42 * 3 的结果是 126。

3. 异步流式模式

# 异步流式 - 实时事件处理
streaming_result = runner.astream(
    prompt_kwargs={"input_str": "计算 100 + 50 并计数到 3"},
)

# 实时处理流事件
async for event in streaming_result.stream_events():
    if isinstance(event, RunItemStreamEvent):
        if isinstance(event.item, ToolCallRunItem):
            print(f"🔧 调用: {event.item.data.name}")
        elif isinstance(event.item, ToolCallActivityRunItem):
            print(f"📝 活动: {event.item.data}")
        elif isinstance(event.item, ToolOutputRunItem):
            print(f"✅ 输出: {event.item.data.output}")
        elif isinstance(event.item, FinalOutputItem):
            print(f"🎯 最终: {event.item.data.answer}")

# 输出:
# 🔧 调用: calculator
# ✅ 输出: 100 + 50 的结果是 150
# 🔧 调用: counter
# 📝 活动: 计数: 1/3
# 📝 活动: 计数: 2/3
# 📝 活动: 计数: 3/3
# ✅ 输出: ['计数: 1/3', '计数: 2/3', '计数: 3/3']
# 🎯 最终: 100 + 50 的结果是 150。已成功计数到 3。

运行这些示例前请设置好你的 OPENAI_API_KEY 环境变量。

在 Colab 中尝试完整的代理教程: Open In Colab

查看快速入门:了解 AdalFlow 如何在 15 分钟内端到端地优化 LM 工作流。

有关追踪、人在回路等更多内容,请前往文档

研究

[2025年9月] LAD-VF: 从形式化方法反馈出发,利用 LLM 自动微分实现免微调机器人规划
- 使用 LLM 自动微分,实现免微调机器人规划
- 集成形式化方法反馈以进行机器人控制

[2025年1月] 自动微分任意 LLM 工作流:告别手动提示工程
- 将 LLM 应用视为自动微分图
- 比 DsPy 更高效且性能更优

[2025年12月] 通过基于采样的动量扩展文本梯度
- 使用动量加权文本梯度实现稳定、可扩展的提示优化
- Gumbel-Top-k 采样改进了探索,并能无缝集成 TextGrad、DSPy-COPRO 和 AdalFlow

自动提示优化生态

AdalFlow 是日益壮大的、用于自动优化 LLM 提示与工作流库生态中的一员。以下是相关格局:

方法 核心理念
AdalFlow PyTorch 风格的自动微分 将 LLM 工作流视为自动微分图;在一个训练循环中统一文本梯度下降 + 少样本引导优化
DSPy 声明式编程 编写可组合的 Python 代码而非提示词;编译器自动优化提示词和权重
Agent Lightning 框架无关的代理训练器 将任何代理(LangChain、OpenAI SDK、AutoGen 等)转化为可优化实体,仅需少量代码修改;支持强化学习、自动提示优化和监督式微调
TextGrad 文本梯度下降 通过文本实现自动微分;使用 LLM 反馈作为梯度,优化提示词、代码和解决方案

AdalFlow 的定位: AdalFlow 从以上所有工作中汲取灵感(见致谢),并将它们统一到一个类似 PyTorch 的框架中。你可以在 ParameterGeneratorAdalComponentTrainer 中组合使用文本梯度(类似 TextGrad)、少样本引导(类似 DSPy)和指令历史记录。

合作

我们与德克萨斯大学奥斯汀分校的 VITA 团队 密切合作,由 Dr. Atlas Wang 领导,并与 Dr. Junyuan Hong 合作,他为推动项目进展提供了宝贵支持。

如需合作,请联系 Li Yin

招聘

我们正在寻找一位开发者关系(Dev Rel)专员来帮助我们建设社区并支持用户。如果你感兴趣,请联系 Li Yin

文档

AdalFlow 的完整文档可在 adalflow.sylph.ai 获取。

AdalFlow:向 Ada Lovelace 致敬

AdalFlow 的命名是为了纪念 Ada Lovelace,这位先驱女数学家,她首次认识到机器可以超越单纯的计算。作为一个由女性创始人领导的团队,我们旨在激励更多女性投身于人工智能事业。

社区与贡献者

AdalFlow 是一个社区驱动的项目,我们欢迎所有人加入我们,共同构建 LLM 应用的未来。

加入我们的 Discord 社区,提问、分享你的项目,并获取 AdalFlow 的最新动态。

如需贡献,请阅读我们的贡献者指南

贡献者

contributors

致谢

现有许多工作极大地启发了 AdalFlow 库!以下是一个非详尽的列表:

  • 📚 PyTorch:启发 ComponentParameterSequential 的设计理念和模式。
  • 📚 Micrograd:一个微型自动求导引擎,用于我们的自动微分架构。
  • 📚 Text-Grad:启发了“文本梯度下降”文本优化器。
  • 📚 DSPy:启发了 DataClass 中的 __{input/output}__fields 和引导式少样本优化器。
  • 📚 OPRO:启发了在文本优化器中添加过去的文本指令及其准确率。
  • 📚 PyTorch Lightning:启发了 AdalComponentTrainer
17 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 24 ms
Developed with Cursor