资讯动态

CAI 多代理编排实战:从 LLM 自主决策到代码驱动的并行 Agent 编排

发布时间:2026/9/16 15:38:57 来源:尧图企业网站定制
CAI 多代理编排实战从 LLM 自主决策到代码驱动的并行 Agent 编排【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai多代理编排Orchestration决定了应用中的代理运行流程哪些代理运行、以何种顺序运行、以及由谁来决策下一步。本文以 Cybersecurity AICAI框架为核心系统讲解两种编排范式——LLM 自主决策与代码驱动编排——并结合 CAI 内置的并行模式、agents.yml配置与源码级实现帮助读者掌握从单个代理到红蓝队并行攻防、再到自定义多代理流水线的完整实战方案。编排的两种范式LLM 决策与代码驱动编排的本质是回答三个问题哪些代理运行、按什么顺序运行、如何决定下一步。CAI 提供两种主要的编排方式二者可以混合使用各有其取舍LLM 驱动编排利用 LLM 的智能去规划、推理并决定下一步行动灵活性高适合开放性问题但速度、成本与结果的可预测性较弱。代码驱动编排在代码中显式定义代理的执行流程任务更加确定、可预测在速度、成本与性能方面表现更稳定。通过 LLM 编排Handoffs 与 Agent-as-a-Tool在 CAI 中代理是一个配备指令、工具 和 交接Handoffs 的 LLM。面对开放式任务时LLM 可以自主规划执行方案调用工具来采取行动、获取数据并通过 Handoff 将任务委派给子代理。另一种典型做法是将代理作为工具Agent-as-a-Tool子代理基于给定的输入独立运行——不访问先前的对话历史、也不会接管对话——完成特定任务后将结果返回给调用它的父代理。这一模式在 examples/cai/agent_patterns/agent_as_tool.py 中有完整可运行的示例。通过代码编排四种常用确定性模式代码驱动的编排让任务更具确定性和可预测性CAI 文档与仓库中常见的模式包括模式说明仓库示例结构化输出用结构化输出生成格式良好的数据便于代码检查与后续处理examples/cai/agent_patterns/deterministic.py确定性链式模式将任务拆分为一系列小步骤链式串联多个代理前一个代理的输出作为后一个代理的输入examples/cai/agent_patterns/deterministic.pyGuardrails 与 LLM-as-a-Judge由代理对输入/输出进行评估与反馈直到其通过设定的标准确保内容合规guardrails、examples/cai/agent_patterns/guardrails.py、examples/cai/agent_patterns/LLM_as_judge.py任务并行化并行运行多个代理在拥有多个任务时显著提升速度examples/cai/agent_patterns/paralelization.py以上模式均有对应的可运行示例集中在 examples/cai/agent_patterns/ 目录下包括handoffs.py、handoffs_and_tools.py、deterministic.py、guardrails.py、LLM_as_judge.py、agent_as_tool.py与paralelization.py。并行运行代理何时使用与两种实现途径当存在多个任务时并行运行代理可以提升性能、缩短整体执行时间。这在安全工作中尤其有价值例如需要对多个目标同时进行侦察Reconnaissance或分析任务。CAI 提供两条并行路径使用内置并行模式通过/agent list查看与选择使用agents.yml配置自定义模式无需编写 Python 代码orchestration.png 展示了一个多代理系统的编排执行监控Triage Agent、Approval Agent、Summarizer Agent 通过 Handoff 交接任务各代理内部调用 fetch_data、check_eligibility、send_email 等工具右侧面板展示模型与指令元数据。graph.png 展示了典型的代理编排流程图Triage Agent 起始后分支到 Spanish Agent 与 English Agent 并行处理最终汇合到终点体现了并行代理分工与汇合的编排逻辑。途径一使用 CAI 内置并行模式CAI 内置了开箱即用的并行模式可直接在 CLI 中通过/agent命令选择。查看可用模式# 启动 CAI 并列出所有可用模式 cai CAI /agent list内置并行模式一览模式名称参与的代理上下文说明offsec_patternredteam_agent bug_bounter_agent分离红队与漏洞赏金以不同上下文开展进攻性安全操作blue_team_red_team_shared_contextredteam_agent blueteam_agent共享红蓝队代理共享同一份消息历史blue_team_red_team_split_contextredteam_agent blueteam_agent分离红蓝队代理各自独立上下文进行独立分析purple_team_gctr⭐redteam_agent blueteam_agent增强 G-CTR共享红蓝队代理共享 GCTR 追踪进行统一的博弈论分析⭐ 为 CAI PRO 能力选择并使用一个模式# 启动 CAI cai # 列出可用模式 CAI /agent list # 按编号或名称选择并行模式 CAI /agent 23 # 或 CAI /agent offsec_pattern # 输入提示词两个代理将并行工作 CAI Analyze https://example.com for vulnerabilities并行模式的工作原理分离上下文Split context每个代理拥有独立的消息历史彼此独立工作互不干扰共享上下文Shared context所有代理看到相同的消息历史可以在彼此工作的基础上继续推进。offsec_pattern 实战示例CAI /agent offsec_pattern CAI Find vulnerabilities in https://target.com # redteam_agent 与 bug_bounter_agent 将同时分析目标 # 各自提供视角红队渗透 vs 漏洞赏金 # 并行获得两个代理的结果从源码来看offsec_pattern的定义位于 src/cai/agents/patterns/offsec.py其核心是构造一个type: parallel的配置包含ParallelConfig(redteam_agent)与ParallelConfig(bug_bounter_agent)两个代理配置并显式设置unified_context: False。共享上下文与分离上下文两个红蓝队模式则分别定义于 red_blue_team.pyunified_contextTrue与 red_blue_team_split.pyunified_contextFalse可以直接对照阅读。途径二使用 agents.yml 自定义并行代理对于更简单的场景可以直接使用agents.yml配置文件并行运行多个代理无需编写任何 Python 代码。1. 复制示例配置cp agents.yml.example agents.yml仓库根目录的 agents.yml.example 提供了完整可用的参考配置默认包含one_tool_agent、blueteam_agent、bug_bounter_agent、web_pentester_agent四个并行代理并附带了共享上下文unified_context的注释示例。2. 在agents.yml中配置并行代理分离上下文示例每个代理独立历史parallel_agents: # 定义 2 个或更多代理并行运行 - name: one_tool_agent model: alias1 prompt: Focus on finding vulnerabilities unified_context: false # 每个代理拥有自己的消息历史 - name: blueteam_agent model: alias1 prompt: Focus on defensive security unified_context: false共享上下文示例代理间共享消息历史parallel_agents: - name: redteam_agent unified_context: true # 代理共享消息历史 - name: blueteam_agent unified_context: true # 可以看到 redteam_agent 做了什么3. 启动 CAI# 自动从当前目录加载 agents.yml cai # 或加载其他配置文件 cai --yaml agent_custom.yml # 或指定完整路径 cai --yaml /path/to/my_agents.yml配置生效机制当配置了 2 个或更多代理时并行模式自动启用配置的代理会在输入提示词后供用户选择每个代理可以拥有独立的模型model、提示词prompt与上下文设置unified_context。配置项说明配置项说明默认值name代理类型如redteam_agent、bug_bounter_agent必填model可选的模型覆盖如alias1、alias0或具体模型名使用全局模型prompt可选的附加指令无unified_context设为true时在代理间共享消息历史false源码视角并行编排的底层实现并行能力并非魔法其背后有清晰的实现链路理解它有助于排查问题与扩展自定义模式。ParallelConfig并行代理的配置单元src/cai/repl/commands/parallel.py 中定义了ParallelConfig类包含四个核心字段agent_name代理名、model模型覆盖、prompt自定义提示词、unified_context是否共享历史。此外每个配置在加入全局PARALLEL_CONFIGS列表时会被赋予P1、P2等顺序 ID供/parallel系列命令按 ID 引用。自动加载与并行模式开关ParallelCommand._auto_load_config()在初始化时自动探测agents.yml依次检查当前目录与src/cai/agents/patterns/configs/下的配置解析parallel_agents列表并填充PARALLEL_CONFIGS。随后_sync_to_env()根据配置数量写入环境变量配置数≥ 2设置CAI_PARALLEL数量、CAI_PARALLEL_AGENTS逗号分隔的代理名并行模式自动启用并通过PARALLEL_ISOLATION为每个代理建立隔离的历史配置数 2并行模式关闭恢复单代理模式。因此文档中2 个或更多代理自动启用并行模式的规则在源码中即为len(PARALLEL_CONFIGS) 2这一判定。Pattern 类统一的模式抽象src/cai/agents/patterns/pattern.py 提供了统一的Pattern类与PatternType枚举parallel、swarm、hierarchical、sequential、conditional根据类型自适应行为。对于PARALLEL类型configs列表保存各并行代理配置并支持max_concurrent、unified_context、timeout、retry_on_failure等公共选项。文档中表格所列的每个内置模式本质上都是这一数据结构的实例化。交互式 /parallel 命令除配置文件外CLI 还提供/parallel命令别名/par、/p进行运行时管理子命令包括add添加代理支持--model、--prompt、--unified、list、clear、remove支持按索引或 ID、override-models统一使用全局模型、merge合并多个代理的消息历史支持chronological、by-agent、interleaved三种策略与prompt。这些行为在 tests/commands/test_command_parallel.py 中有完整覆盖包括 ID 重排、大小写不敏感匹配、边缘参数组合等场景可作为理解命令行为的参考。实战用代码并行化 CTF 攻防与结果择优除 CLI 配置外CAI 还允许在 Python 代码中直接编排并行代理。examples/cai/agent_patterns/paralelization.py 给出了一个完整的 CTF 场景同一个ctf_agent通过asyncio.gather并行发起三次独立攻击尝试再用独立的best_solution_picker代理从多个结果中选出最优方案res_1, res_2, res_3 await asyncio.gather( Runner.run(ctf_agent, challenge), Runner.run(ctf_agent, challenge), Runner.run(ctf_agent, challenge), ) outputs [ ItemHelpers.text_message_outputs(res_1.new_items), ItemHelpers.text_message_outputs(res_2.new_items), ItemHelpers.text_message_outputs(res_3.new_items), ] best_solution await Runner.run( best_solution_picker, fInput: {challenge}\n\nResults:\n{results}, ) print(fBest solution: {best_solution.final_output})这一示例完整展现了并行执行 评判择优的组合模式先并行获取多样化解法再由专门代理做裁决与文档中Parallelization LLM_as_judge的编排思路一一对应可作为自定义并行工作流的起点模板。小结CAI 的多代理编排提供了从完全交由 LLM 自主决策到代码完全掌控流程的连续谱系LLM 驱动适合开放探索代码驱动提供确定性与成本可控。对于安全场景中最常用的并行需求既可以零代码使用内置的 offsec、红蓝队等模式也可以通过agents.yml或/parallel命令灵活组合代理、模型与上下文策略更可以在 Python 层用asyncio.gather自由构建并行流水线。结合 pattern.py 对 parallel、swarm、hierarchical、sequential、conditional 五种模式的统一抽象开发者可以基于同一套数据结构平滑地走向更复杂的编排形态。【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价