⚡ AdalFlow 是一个类 PyTorch 库,用于构建和自动优化任何 LM 工作流,从聊天机器人、RAG 到智能体。⚡
AdalFlow 为 AdaL CLI —— 一款 AI 编程智能体提供强大支持。
LLM-AutoDiff 和 Learn-to-Reason Few-shot In Context Learning 在所有自动提示优化库中实现了最高准确率。
查看 文档
使用 pip 安装 AdalFlow:
pip install adalflow
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)
# 同步调用 - 返回包含完整执行历史的 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']
# 异步调用 - 输出结构与同步调用类似
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.
# 异步流式调用 - 实时事件处理
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 环境变量来运行这些示例。
查看 快速入门:了解 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)和指令历史记录——所有这些都可以在 Parameter、Generator、AdalComponent 和 Trainer 中组合使用。
我们与 德克萨斯大学奥斯汀分校的 VITA 研究组 紧密合作,在 王 Atlas 博士 的领导下,并与 洪俊源博士 合作,为项目推进提供了宝贵的支持。
如有合作意向,请联系 Li Yin。
我们正在寻找一名开发者关系专员,帮助我们建立社区并支持用户。如果你感兴趣,请联系 Li Yin。
AdalFlow 完整文档请访问 adalflow.sylph.ai:
AdalFlow 以 Ada Lovelace 的名字命名,她是第一位认识到机器可以超越单纯计算的先驱女性数学家。作为一个由女性创始人领导的团队,我们旨在激励更多女性投身 AI 事业。
AdalFlow 是一个社区驱动的项目,我们欢迎每个人加入我们,共同构建 LLM 应用的未来。
加入我们的 Discord 社区提问、分享你的项目并获取 AdalFlow 的最新动态。
要参与贡献,请阅读我们的 贡献者指南。
许多现有工作极大地启发了 AdalFlow 库!以下是一个非详尽的列表: