AdalFlow

SylphAI-IncMIT活跃维护

用 Python 构建并自动优化 LLM 应用的库,支持自动提示词调优、检索增强和 Agent 编排,帮开发者把大模型应用调得更准更省。

AdalFlow: The library to build & auto-optimize LLM applications.

v1.1.4发布于 2026-11-01 06:27 UTC4,231star +4 / 7 天391fork同步于 2026-11-10 17:40 UTC

怎么上手

由 README 提炼,执行前请确认
pip install adalflow
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

类 PyTorch 的库,用来搭建并自动优化 Chatbot、RAG、Agent 等各类 LLM 工作流

用 Python 构建并自动优化 LLM 应用的库,支持自动提示词调优、检索增强和 Agent 编排,帮开发者把大模型应用调得更准更省。

核心能力

  • 用统一的可自动微分框架做零样本与少样本提示优化
  • 以 Model-agnostic 组件搭建 RAG、Agent 与经典 NLP 流水线
  • 改配置即可把 LLM 应用切换到任意模型
  • 内置 Agent 与 Runner,支持同步、异步与流式事件调用
  • 开源实现 Human-in-the-Loop 与 Tracing,无需额外 API

容易踩的坑

运行示例需自行设置 OPENAI_API_KEY 环境变量;示例默认使用 gpt-4o 模型,需有对应模型访问权限

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.1.4
  1. v1.1.4Release v1.1.4最新正式版2026-11-01 · 2026-11-01 06:27 UTC

    AdalFlow v1.1.4

    See CHANGELOG.md for details.

  2. v1.1.3Release v1.1.32025-09-25 · 2025-09-25 03:25 UTC
    查看更新说明

    AdalFlow v1.1.3

    See CHANGELOG.md for details.

  3. v1.1.2Release v1.1.22025-08-16 · 2025-08-16 22:25 UTC
    查看更新说明

    AdalFlow v1.1.2

    See CHANGELOG.md for details.

  4. v1.1.1Release v1.1.12025-08-10 · 2025-08-10 04:31 UTC
    查看更新说明

    AdalFlow v1.1.1

    See CHANGELOG.md for details.

  5. v1.0.5a1v1.0.5a1 Release2025-07-17 · 2025-07-17 23:36 UTC
    查看更新说明

    Add agent, runner, mcp tools and modify generator output

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Why AdalFlow

    1. 100% Open-source Agents SDK: Lightweight and requires no additional API to setup Human-in-the-Loop and Tracing Functionalities.
    2. Say goodbye to manual prompting: AdalFlow provides a unified auto-differentiative framework for both zero-shot optimization and few-shot prompt optimization. Our research, LLM-AutoDiff and Learn-to-Reason Few-shot In Context Learning, achieve the highest accuracy among all auto-prompt optimization libraries.
    3. Switch your LLM app to any model via a config: AdalFlow provides Model-agnostic building blocks for LLM task pipelines, ranging from RAG, Agents to classical NLP tasks.

    View Documentation

    Quick Start

    Install AdalFlow with pip:

    pip install adalflow
    

    Hello World Agent Example

    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
    
    # Define tools
    def calculator(expression: str) -> str:
        """Evaluate a mathematical expression."""
        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:
        """Web search on query."""
        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):
        """A counter that counts up to a limit."""
        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
    
    # Create agent with tools
    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. Synchronous Call Mode

    # Sync call - returns RunnerResult with complete execution history
    result = runner.call(
        prompt_kwargs={"input_str": "Calculate 15 * 7 + 23 and count to 5"}
    )
    
    print(result.answer)
    # Output: The result of 15 * 7 + 23 is 128. The counter counted up to 5: 1, 2, 3, 4, 5.
    
    # Access step history
    for step in result.step_history:
        print(f"Step {step.step}: {step.function.name} -> {step.observation}")
    # Output:
    # 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. Asynchronous Call Mode

    # Async call - similar output structure to sync call
    result = await runner.acall(
        prompt_kwargs={"input_str": "What's the weather in SF and calculate 42 * 3"}
    )
    
    print(result.answer)
    # Output: 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. Async Streaming Mode

    # Async streaming - real-time event processing
    streaming_result = runner.astream(
        prompt_kwargs={"input_str": "Calculate 100 + 50 and count to 3"},
    )
    
    # Process streaming events in real-time
    async for event in streaming_result.stream_events():
        if isinstance(event, RunItemStreamEvent):
            if isinstance(event.item, ToolCallRunItem):
                print(f"🔧 Calling: {event.item.data.name}")
            elif isinstance(event.item, ToolCallActivityRunItem):
                print(f"📝 Activity: {event.item.data}")
            elif isinstance(event.item, ToolOutputRunItem):
                print(f"✅ Output: {event.item.data.output}")
            elif isinstance(event.item, FinalOutputItem):
                print(f"🎯 Final: {event.item.data.answer}")
    
    # Output:
    # 🔧 Calling: calculator
    # ✅ Output: The result of 100 + 50 is 150
    # 🔧 Calling: counter
    # 📝 Activity: Count: 1/3
    # 📝 Activity: Count: 2/3
    # 📝 Activity: Count: 3/3
    # ✅ Output: ['Count: 1/3', 'Count: 2/3', 'Count: 3/3']
    # 🎯 Final: The result of 100 + 50 is 150. Counted to 3 successfully.
    

    Set your OPENAI_API_KEY environment variable to run these examples.

    Try the full Agent tutorial in Colab: Open In Colab

    View Quickstart: Learn How AdalFlow optimizes LM workflows end-to-end in 15 mins.

    Go to Documentation for tracing, human-in-the-loop, and more.

    Research

    [Sep 2025] LAD-VF: LLM-Automatic Differentiation Enables Fine-Tuning-Free Robot Planning from Formal Methods Feedback

    • Fine-tuning-free robot planning using LLM auto-differentiation
    • Integration of formal methods feedback for robot control

    [Jan 2025] Auto-Differentiating Any LLM Workflow: A Farewell to Manual Prompting

    • LLM Applications as auto-differentiation graphs
    • Token-efficient and better performance than DsPy

    [Dec 2025] Scaling Textual Gradients via Sampling-Based Momentum

    • Stable, scalable prompt optimization using momentum-weighted textual gradient
    • Gumbel-Top-k sampling improves exploration and integrates seamlessly with TextGrad, DSPy-COPRO, and AdalFlow

    Auto-Prompt Optimization Ecosystem

    AdalFlow is part of a growing ecosystem of libraries that automatically optimize LLM prompts and workflows. Here's how the landscape looks:

    LibraryApproachKey Idea
    AdalFlowPyTorch-style auto-differentiationLLM workflows as auto-diff graphs; unified textual gradient descent + few-shot bootstrap optimization in one training loop
    DSPyDeclarative programmingWrite compositional Python code instead of prompts; compiler optimizes prompts and weights automatically
    Agent LightningFramework-agnostic agent trainerTurn any agent (LangChain, OpenAI SDK, AutoGen, etc.) into an optimizable entity with minimal code changes; supports RL, auto-prompt optimization, and supervised fine-tuning
    TextGradTextual gradient descentAutomatic differentiation via text; uses LLM feedback as gradients to optimize prompts, code, and solutions

    Where AdalFlow fits: AdalFlow draws inspiration from all of the above (see Acknowledgements) and unifies them into a single PyTorch-like framework. You get textual gradients (à la TextGrad), few-shot bootstrap (à la DSPy), and instruction history — all composable within Parameter, Generator, AdalComponent, and Trainer.

    Collaborations

    We work closely with the VITA Group at University of Texas at Austin, under the leadership of Dr. Atlas Wang and in collaboration with Dr. Junyuan Hong, who provides valuable support in driving project initiatives.

    For collaboration, contact Li Yin.

    Hiring

    We are looking for a Dev Rel to help us build the community and support our users. If you are interested, please contact Li Yin.

    Documentation

    AdalFlow full documentation available at adalflow.sylph.ai:

    AdalFlow: A Tribute to Ada Lovelace

    AdalFlow is named in honor of Ada Lovelace, the pioneering female mathematician who first recognized that machines could go beyond mere calculations. As a team led by a female founder, we aim to inspire more women to pursue careers in AI.

    Community & Contributors

    The AdalFlow is a community-driven project, and we welcome everyone to join us in building the future of LLM applications.

    Join our Discord community to ask questions, share your projects, and get updates on AdalFlow.

    To contribute, please read our Contributor Guide.

    Contributors

    contributors

    Acknowledgements

    Many existing works greatly inspired AdalFlow library! Here is a non-exhaustive list:

    • 📚 PyTorch for design philosophy and design pattern of Component, Parameter, Sequential.
    • 📚 Micrograd: A tiny autograd engine for our auto-differentiative architecture.
    • 📚 Text-Grad for the Textual Gradient Descent text optimizer.
    • 📚 DSPy for inspiring the __{input/output}__fields in our DataClass and the bootstrap few-shot optimizer.
    • 📚 OPRO for adding past text instructions along with its accuracy in the text optimizer.
    • 📚 PyTorch Lightning for the AdalComponent and Trainer.