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

AdalFlow — 面向 LLM 应用编排与优化的轻量工作流框架

 
  campaign ·  2026-02-18 05:58:01 · 7 次点击  · 0 条评论  

⚡ AdalFlow 是一个类 PyTorch 库,用于构建和自动优化任何 LM 工作流,从聊天机器人、RAG 到智能体。⚡

AdaL  AdaL CLI

AdalFlow 为 AdaL CLI —— 一款 AI 编程智能体提供强大支持。

在 Colab 中尝试快速入门

查看文档

PyPI 版本 PyPI 下载量 PyPI 月度下载量 GitHub stars 开放问题 许可证 discord-invite

为什么选择 AdalFlow

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

AdalFlow 优化后的提示

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"The result of {expression} is {result}"
    except Exception as e:
        return f"Error: {e}"

async def web_search(query: str="what is the weather in SF today?") -> str:
    """根据查询进行网络搜索。"""
    await asyncio.sleep(0.5)
    return "San Francisco will be mostly cloudy today with some afternoon sun, reaching about 67 °F (20 °C)."

def counter(limit: int):
    """一个计数到指定上限的计数器。"""
    final_output = []
    for i in range(1, limit + 1):
        stream_item = f"Count: {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": "Calculate 15 * 7 + 23 and count to 5"}
)

print(result.answer)
# 输出: The result of 15 * 7 + 23 is 128. The counter counted up to 5: 1, 2, 3, 4, 5.

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

2. 异步调用模式

# 异步调用 - 输出结构与同步调用类似
result = await runner.acall(
    prompt_kwargs={"input_str": "What's the weather in SF and calculate 42 * 3"}
)

print(result.answer)
# 输出: San Francisco will be mostly cloudy today with some afternoon sun, reaching about 67 °F (20 °C). 
#         The result of 42 * 3 is 126.

3. 异步流式模式

# 异步流式调用 - 实时事件处理
streaming_result = runner.astream(
    prompt_kwargs={"input_str": "Calculate 100 + 50 and count to 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
# ✅ 输出: The result of 100 + 50 is 150
# 🔧 调用: counter
# 📝 活动: Count: 1/3
# 📝 活动: Count: 2/3
# 📝 活动: Count: 3/3
# ✅ 输出: ['Count: 1/3', 'Count: 2/3', 'Count: 3/3']
# 🎯 最终结果: The result of 100 + 50 is 150. Counted to 3 successfully.

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

在 Colab 中尝试完整的智能体教程: 在 Colab 中打开

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

前往 文档 了解追踪、人在回路等功能。

研究

[2025年9月] LAD-VF: LLM-自动微分实现基于形式化方法反馈的无微调机器人规划
- 使用 LLM 自动微分实现无微调机器人规划
- 集成形式化方法反馈进行机器人控制

[2025年1月] 自动微分任何 LLM 工作流:告别手动提示工程
- 将 LLM 应用视为自动微分图
- 比 DsPy 更节省 Token 且性能更好

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

自动提示优化生态系统

AdalFlow 是不断增长的自动优化 LLM 提示和工作流的库生态系统的一部分。以下是当前生态概览:

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

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

合作

我们与 德克萨斯大学奥斯汀分校的 VITA 研究组 紧密合作,在 王 Atlas 博士 的领导下,并与 洪俊源博士 合作,为项目推进提供了宝贵的支持。

如有合作意向,请联系 Li Yin

招聘

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

文档

AdalFlow 完整文档请访问 adalflow.sylph.ai

AdalFlow:致敬 Ada Lovelace

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

社区与贡献者

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

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

要参与贡献,请阅读我们的 贡献者指南

贡献者

贡献者

致谢

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

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