惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
Security Archives - TechRepublic
Security Archives - TechRepublic
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
I
InfoQ
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
腾讯CDC
GbyAI
GbyAI
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
博客园 - 聂微东
美团技术团队
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网
S
Schneier on Security
量子位
A
About on SuperTechFans
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
Simon Willison's Weblog
Simon Willison's Weblog
PCI Perspectives
PCI Perspectives
B
Blog
K
Kaspersky official blog
V
Vulnerabilities – Threatpost
aimingoo的专栏
aimingoo的专栏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
U
Unit 42
G
Google Developers Blog
L
LINUX DO - 最新话题
Forbes - Security
Forbes - Security
AWS News Blog
AWS News Blog
P
Palo Alto Networks Blog
Security Latest
Security Latest
爱范儿
爱范儿
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
L
LINUX DO - 热门话题
D
Docker
P
Proofpoint News Feed
Y
Y Combinator Blog
P
Proofpoint News Feed

博客园 - 荣锋亮

just-git 纯js 的git 实现 阿里开源的UnifiedModel agno agentos interfaces 简单说明 agno agentos ag-ui 协议 agno agentos 暴露a2a 协议 agno gateway模式 agno 多agent 框架集成能力 agno agentos 简单说明 agno workflow 模式简单说明 agno team agent 简单说明 agno remote agent 简单说明 agno agent 使用 agno agent 平台 sshpiper 简单试用 sshpiper ssh 的反向代理服务 context-propagation spring reactor 的上下文传递包 nginx 发布1.31.2 了 reductstore 的一些部署模式 reductstore 数据写入模式 reductstore bridge 方便reductstore数据bridge 扩展 reductstore zenoh 集成 zenoh 1.9.x 一些新特性 ladybugdb嵌入式图数据库 BlockHound 检测 reactor阻塞调用的agent reductstore 高性能面向机器人以及IOT场景的存储以及流数据基石 zerofs 一些新功能 java nats request-many 支持的一些模式 java nats RequestMany context7 面向llm 以及ai代码编辑器的依赖包更新平台 NATS Agents Protocol nats 团队提出的agent 通信协议 metamcp mcp聚合&调度工具 llama-agents 的server 服务 mcp-proxy 桥接streamable http 以及stdio mcp 的工具 GhidraMCP Ghidra 的mcp服务 mcpcute 聚合mcp的工具 agent-tool-protocol 与mcp的集成 llama-agents 执行流程图查看 llama-agents 的异常处理 通过dbos 解决llama-agents workflow 持久执行问题 llama-agents workflow 持久化运行的一些玩法 llama-agents 状态管理 llama-agents stream events 处理 zerofs v1.1.1 aarch64 支持16k-64k page llmaindex workflows-py 变更为了llama-agents agent-tool-protocol 代码优先的agent tool 协议 ZeroFS 1.1.0 发布 chicory 原生jvm webassembly runtime quickjs4j 包含的几个模块 quickjs4j java 中安全运行js 的沙箱 supergateway 将stdio server 暴露为sse服务的ai gateway nats-server 2.14.0 发布 nuitka python 模块转so 模块 - 荣锋亮 llama-agents 的resource对象 turndown html 转markdown npm包 @langchain/node-vfs 简单试用 @langchain/node-vfs node vfs web-agent firecrawl 开源的web 数据agent CubeSandbox 腾讯开源的轻量级面向ai agent的的沙箱工具 new-api 统一ai gateway 平台 pyinstrument python 调用连profiler 工具 jsonhero Trigger 团队开可以友好查看json的工具 aiproxy 高性能ai gateway just-bash 面向agent 的bash restate 构建可靠应用的平台 java 一些raft 实现框架 opendataloader-pdf 开源pdf自动处理工具 sbproxy单一文件的ai gateway 以及反向代理服务 hyperframes agent 友好的通过html 的视频处理框架 open-semantic开放语义层 agentregistry 开源中心化可信可治理的ai registry py-spy 一些新特性 zerofs 1.0.9 包含了webui nanobot 基于mcp 构建agent的框架 gh-aw-firewall github agent workflow 防火墙 dbos-inc agent-skills dbos 的agent skills robustmq ai 领域的通信设施 dbos轻量级持久工作流框架 command-stream 试用 nats-top 类似top 监控nats的工具 nats-surveyor nats-server 监控工具 awesome-design-md 一些知名网站设计规范 zerofs 添加终端实时监控 command-stream支持实时流的命令行包 use-m 简单试用 use-m 动态下载以及加载js 模块 live-plugin-manager 试用 live-plugin-manager nodejs 插件框架 zx 支持的一些配置 zx 试用 zx 方便编写scripts 的工具 python 动态加载模块 agent-infra sandbox 基于单容器的ai agent 沙箱环境 zerofs 支持prometheus metrics opencli 一个通过的转换任何web站点以及app 为cli的工具 wecom-cli 企业微信cli deepagentsjs langchain 开源的deep agent 框架 dingtalk-workspace-cli 悟空cli 结合nats 实现agent框架的融合集成 larksuite/cli agent 友好的飞书cli 工具 Scrapling 自适应的爬虫框架
llama-agents step执行的一些模式
荣锋亮 · 2026-05-24 · via 博客园 - 荣锋亮

主要说明一些step 执行玩法,核心就是调度

分支以及循环

因为llama-agents 是基于事件的,核心就是事件类型的处理

  • 循环玩法
class LoopingWorkflow(Workflow):
    @step
    async def prepare_input(self, ev: StartEvent) -> LoopEvent:
        num_loops = random.randint(0, 10)
        return LoopEvent(num_loops=num_loops)

    @step
    async def loop_step(self, ev: LoopEvent) -> LoopEvent | StopEvent:
        if ev.num_loops <= 0:
            return StopEvent(result="Done looping!")

        return LoopEvent(num_loops=ev.num_loops-1)
  • 分支玩法
class BranchWorkflow(Workflow):
    @step
    async def start(self, ev: StartEvent) -> BranchA1Event | BranchB1Event:
        if random.randint(0, 1) == 0:
            print("Go to branch A")
            return BranchA1Event(payload="Branch A")
        else:
            print("Go to branch B")
            return BranchB1Event(payload="Branch B")

    @step
    async def step_a1(self, ev: BranchA1Event) -> BranchA2Event:
        print(ev.payload)
        return BranchA2Event(payload=ev.payload)

    @step
    async def step_b1(self, ev: BranchB1Event) -> BranchB2Event:
        print(ev.payload)
        return BranchB2Event(payload=ev.payload)

    @step
    async def step_a2(self, ev: BranchA2Event) -> StopEvent:
        print(ev.payload)
        return StopEvent(result="Branch A complete.")

    @step
    async def step_b2(self, ev: BranchB2Event) -> StopEvent:
        print(ev.payload)
        return StopEvent(result="Branch B complete.")

并行玩法

并行执行 .注意默认执行顺序不定,如果需要关注结果的,需要通过事件的收集或者等待处理

  • 并行
class ParallelFlow(Workflow):
    @step
    async def start(self, ctx: Context, ev: StartEvent) -> StepTwoEvent | None:
        ctx.send_event(StepTwoEvent(query="Query 1"))
        ctx.send_event(StepTwoEvent(query="Query 2"))
        ctx.send_event(StepTwoEvent(query="Query 3"))

    @step(num_workers=4)
    async def step_two(self, ev: StepTwoEvent) -> StopEvent:
        print("Running slow query ", ev.query)
        await asyncio.sleep(random.randint(0, 5))

        return StopEvent(result=ev.query)
  • 等待结果
class ConcurrentFlow(Workflow):
    @step
    async def start(self, ctx: Context, ev: StartEvent) -> StepTwoEvent | None:
        ctx.send_event(StepTwoEvent(query="Query 1"))
        ctx.send_event(StepTwoEvent(query="Query 2"))
        ctx.send_event(StepTwoEvent(query="Query 3"))

    @step(num_workers=4)
    async def step_two(self, ctx: Context, ev: StepTwoEvent) -> StepThreeEvent:
        print("Running query ", ev.query)
        await asyncio.sleep(random.randint(1, 5))
        return StepThreeEvent(result=ev.query)

    @step
    async def step_three(
        self, ctx: Context, ev: StepThreeEvent
    ) -> StopEvent | None:
        # wait until we receive 3 events
        result = ctx.collect_events(ev, [StepThreeEvent] * 3)
        if result is None:
            return None

        # do something with all 3 results together
        print(result)
        return StopEvent(result="Done")
  • 不同类型的等待
class ConcurrentFlow(Workflow):
    @step
    async def start(
        self, ctx: Context, ev: StartEvent
    ) -> StepAEvent | StepBEvent | StepCEvent | None:
        ctx.send_event(StepAEvent(query="Query 1"))
        ctx.send_event(StepBEvent(query="Query 2"))
        ctx.send_event(StepCEvent(query="Query 3"))

    @step
    async def step_a(self, ctx: Context, ev: StepAEvent) -> StepACompleteEvent:
        print("Doing something A-ish")
        return StepACompleteEvent(result=ev.query)

    @step
    async def step_b(self, ctx: Context, ev: StepBEvent) -> StepBCompleteEvent:
        print("Doing something B-ish")
        return StepBCompleteEvent(result=ev.query)

    @step
    async def step_c(self, ctx: Context, ev: StepCEvent) -> StepCCompleteEvent:
        print("Doing something C-ish")
        return StepCCompleteEvent(result=ev.query)

    @step
    async def step_three(
        self,
        ctx: Context,
        ev: StepACompleteEvent | StepBCompleteEvent | StepCCompleteEvent,
    ) -> StopEvent:
        print("Received event ", ev.result)

        # wait until we receive 3 events
        if (
            ctx.collect_events(
                ev,
                [StepCCompleteEvent, StepACompleteEvent, StepBCompleteEvent],
            )
            is None
        ):
            return None

        # do something with all 3 results together
        return StopEvent(result="Done")

说明

了解一些lama-agents step的执行玩法,有助于更好的使用此框架,目前这部分官方文档比较全,可以好好学习下

参考资料

https://developers.llamaindex.ai/python/llamaagents/workflows/branches_and_loops/

https://developers.llamaindex.ai/python/llamaagents/workflows/concurrent_execution/

https://developers.llamaindex.ai/python/llamaagents/workflows/unbound_functions/

https://developers.llamaindex.ai/python/llamaagents/workflows/durable_workflows/