CAI Core API 深度指南:构建与编排网络安全 AI 智能体的核心抽象

CAI Core API 深度指南:构建与编排网络安全 AI 智能体的核心抽象 CAI Core API 深度指南构建与编排网络安全 AI 智能体的核心抽象【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai本篇技术指南聚焦 CAICybersecurity AI网络安全人工智能框架的核心 API 参考对应 docs/cai/api-reference/core.md系统讲解构建 AI 安全智能体的六大核心抽象——Agent、Tools、Patterns、Handoffs、Tracing 与 HITL。你将掌握如何用这些 API 声明一个智能体、为其挂载工具、组合可复用的行为模式、在智能体间转移控制权并通过 Tracing 观察整条执行链路最终能在渗透测试、CTF 攻防、红蓝对抗等安全场景中落地一套可运行、可观测、可审计的 AI 智能体系统。一、Agent一切安全智能体的核心抽象在 CAI 中Agent是所有 AI 智能体的主要抽象。官方 API 参考给出的最小形态是一个可继承的基类from cai import Agent class MyAgent(Agent): def __init__(self): super().__init__() # Initialize your agent here async def run(self, input_data): # Implement your agents logic here pass文档同时定义了四个关键方法__init__()负责初始化智能体run(input_data)是主执行方法add_tool(tool)与remove_tool(tool_name)用于在运行期动态增删工具。1.1 从源码看 Agent 的真实形态深入 src/cai/sdk/agents/agent.py 可以看到SDK 层将Agent实现为一个泛型数据类Agent(Generic[TContext])其核心声明字段远比基类示例丰富name智能体名称必填。instructions即系统提示词system prompt可以是字符串也可以是接收RunContextWrapper与智能体实例、动态返回字符串的函数get_system_prompt()内部会区分字符串、可调用对象与非法类型三种情况。handoff_description智能体被用作 handoff 时供 LLM 判断何时该转交给它的自然语言描述。model与model_settings模型实现与温度、top_p 等采样参数不设置时回落到DEFAULT_MODEL。tools智能体可用的工具列表。mcp_serversMCP 服务器列表每次运行都会把服务器上的工具并入可用工具集见 src/cai/sdk/agents/mcp/util.py。input_guardrails/output_guardrails输入/输出护栏分别在生成响应前并行检查、在产生最终输出后校验。output_type输出对象类型缺省为str。tool_use_behavior控制工具调用后的行为默认run_llm_again工具结果回传给 LLM 继续推理也支持stop_on_first_tool、指定工具名列表命中即停止或自定义回调函数。reset_tool_choice工具调用后是否重置 tool choice防止智能体陷入工具死循环。此外Agent还提供clone(**kwargs)复制变体例如agent.clone(instructionsNew instructions)与as_tool(...)将整个智能体封装为可被其他智能体调用的工具。因此add_tool/remove_tool这类运行期操作在 SDK 中实际对应的是声明式地修改tools字段并借助get_all_tools()合并 MCP 工具与函数工具装配完整工具集。1.2 Runner智能体的执行入口智能体本身是声明真正驱动它运行的是Runner。在 src/cai/sdk/agents/run.py 中RunConfig可以配置整次运行的全局参数model/model_provider全局模型覆盖、model_settings、handoff_input_filter全局 handoff 输入过滤器、input_guardrails/output_guardrails、tracing_disabled、trace_include_sensitive_data是否把工具调用与 LLM 生成的输入输出写入 trace、workflow_name与trace_id。该文件还支持通过环境变量CAI_MAX_TURNS与CAI_PRICE_LIMIT限制运行轮数与费用上限。二、Tools智能体与世界的交互积木文档将 Tools 定义为智能体与世界交互的构建块并给出自定义工具的最小示例from cai import Tool class MyTool(Tool): def __init__(self): super().__init__( namemy_tool, descriptionDescription of what the tool does ) async def execute(self, **kwargs): # Implement tool logic here pass2.1 function_tool更符合实战的声明方式在 SDK 中日常开发更推荐用function_tool装饰器把普通 Python 函数一键变成工具src/cai/sdk/agents/tool.py。它会自动解析函数签名生成参数 JSON Schema、读取 docstring 作为工具描述与参数说明并支持name_override、description_override、strict_mode强烈建议开启提高 LLM 输出合法 JSON 的概率与failure_error_function工具失败时向 LLM 返回可读错误信息而非直接抛异常。同步函数会被放入线程池执行避免阻塞事件循环非法 JSON 输入会抛出ModelBehaviorError。实际用法参考 examples/cai/basic_usage.pyfunction_tool def execute_cli_command(command: str) - str: return run_command(command)2.2 内置工具家族文档列出的内置工具在仓库中有真实对应的实现模块LinuxCmd执行 Linux 命令核心实现在 src/cai/tools/reconnaissance/generic_linux_command.py底层由 src/cai/tools/common.py 的run_command驱动该模块还内置了 Unicode 同形字homograph检测与归一化用于识别试图绕过安全检查的伪字符——这正是安全场景下工具该有的防御意识。WebSearch网页搜索对应 src/cai/tools/web/search_web.py 与 src/cai/tools/web/google_search.py。Code执行代码对应 src/cai/tools/misc/code_interpreter.py 与 src/cai/tools/reconnaissance/exec_code.py。SSHTunnelSSH 隧道对应 src/cai/tools/command_and_control/sshpass.py 与 src/cai/tools/command_and_control/command_and_control.py。SDK 层还提供三类托管工具src/cai/sdk/agents/tool.pyFileSearchTool向量库检索、WebSearchToolWeb 检索可调search_context_size为 low/medium/high、ComputerTool控制计算机如点击与截图它们目前仅适用于 OpenAI Responses API。三、Patterns可组合复用的智能体行为模式文档将 Patterns 定义为可组合复用的智能体行为示例为一个独立的Pattern基类from cai import Pattern class MyPattern(Pattern): def __init__(self): super().__init__() async def execute(self, context): # Implement pattern logic here pass3.1 源码中的统一模式类在 src/cai/agents/patterns/pattern.py 中Pattern被实现为一个按类型自适应行为的统一数据类PatternType枚举定义了五种可组合的编排模式PARALLEL并行通过configs: List[ParallelConfig]与max_concurrent配置多个智能体并发执行。SWARM群组通过entry_agent指定入口智能体agents为参与成员。HIERARCHICAL层级通过root_agent作为根节点组织子智能体。SEQUENTIAL顺序通过sequence按次序流水执行一个智能体的输出作为下一个的输入。CONDITIONAL条件通过conditions依据运行结果分支路由。Pattern还提供unified_context是否共享上下文、timeout超时、retry_on_failure失败重试等通用配置并可挂载任意metadata。仓库中的具体攻防模式实现可参考 src/cai/agents/patterns/offsec.py、red_team.py、red_blue_team.py 与 parallel_offensive_patterns.py。四、Handoffs智能体间的控制权转移文档将 Handoffs 定义为允许智能体将控制权转移给其他智能体或人类操作员的机制示例为from cai import Handoff class MyHandoff(Handoff): def __init__(self): super().__init__() async def execute(self, context): # Implement handoff logic here pass4.1 handoff() 工厂与底层结构SDK 层更常见的做法是使用handoff()工厂函数src/cai/sdk/agents/handoffs.py把现成智能体包装为 Handofffrom cai.sdk.agents import handoff triage_agent Agent(nameTriage, ...) billing_agent Agent(nameBilling, ...) handoffs [ handoff(billing_agent), handoff(billing_agent, tool_name_overridetransfer_to_billing), ]关键参数包括tool_name_override/tool_description_override转交工具的命名与描述默认工具名形如transfer_to_agent_name、on_handoff转交触发时的钩子函数与input_type对转交输入做 pydantic 类型校验、input_filter过滤传给下一个智能体的会话历史默认传递完整历史。HandoffInputData封装了input_history、pre_handoff_items与new_items三类数据便于实现消息过滤Handoff数据类src/cai/sdk/agents/handoffs.py承载工具名、工具描述、输入 JSON Schema 与转交调用函数并默认开启严格 JSON Schema。典型应用是把多个子智能体挂到入口智能体的handoffs字段上由 LLM 根据handoff_description自主决定将任务分派给谁从而实现职责分离与模块化。注意它与as_tool()的差异handoff 中接收方看到完整会话历史并接管对话而 as_tool 中接收方只拿到生成的输入、对话仍由原智能体继续。五、Tracing智能体执行的可见性文档给出的 Tracing 最小用法是显式的开始/结束调用from cai import Tracer tracer Tracer() tracer.start_trace() # ... agent execution ... tracer.end_trace()5.1 SDK 的 trace / span 体系在实际 SDK 中Tracing 由一整套 trace span API 组成src/cai/sdk/agents/tracing/init.py 与 create.py。trace()函数创建一次工作流追踪支持workflow_name如 CTF agent、trace_id、group_id关联同一次会话的多次 trace与metadata随后可以用多种 span 构建函数记录执行细节agent_span(name, handoffs, tools, output_type)记录一个智能体的执行。function_span(name, input, output)记录一次函数/工具调用。generation_span(...)记录一次模型生成输入消息、输出、模型名、配置与 token 用量。handoff_span(from_agent, to_agent)记录一次控制权转移。guardrail_span(name, triggered)记录护栏是否触发。custom_span(name, data)挂载自定义结构化数据。Spansrc/cai/sdk/agents/tracing/spans.py支持with span:上下文管理器或手动start()/finish()两种生命周期并提供set_error()标记错误、export()导出结构化数据含trace.span对象类型、时间戳与错误信息。框架通过TracingProcessor消费 trace/span默认处理器会批量导出到后端可用add_trace_processor()追加、set_trace_processors()替换、set_tracing_disabled(True)全局关闭也可用set_tracing_export_api_key()单独设置导出密钥。5.2 在运行配置中控制追踪Runner.run()之外的追踪行为由RunConfig统一把关workflow_name给 trace 起逻辑名trace_include_sensitive_dataFalse可保留 span 结构但不落盘敏感输入输出tracing_disabledTrue直接关闭整次运行的追踪examples/cai/basic_usage.py 在运行前即调用set_tracing_disabled(True)。测试侧可参考 tests/tracing/test_tracing.py 与 tests/tracing/test_agent_tracing.py 理解 span 数据结构的校验方式。六、HITL将人类放入执行回路文档将 HITLHuman In The Loop定义为允许人类操作员在智能体执行过程中进行交互示例为from cai import HITL class MyHITL(HITL): def __init__(self): super().__init__() async def execute(self, context): # Implement HITL logic here passHITL 是安全自动化中人工监督的关键设计。在 src/cai/prompts/system_use_cases.md 中框架将模块化智能体设计与无缝工具集成、以及 HITL 人工监督功能并列为核心能力指出多智能体架构依赖人工在关键环节把关。结合前述 APIHITL 可以通过多种方式落地用Handoff把控制权转交给人类操作员智能体、用InputGuardrail/OutputGuardrail在关键输入输出上卡点等待确认、用AgentHooks/RunHooks生命周期回调在特定事件插入人工审批。护栏的具体实现可参考 src/cai/sdk/agents/guardrail.py 与 src/cai/agents/guardrails.py。七、组合实战一个可运行的 CTF 智能体将上述核心抽象串联起来参考 examples/cai/basic_usage.py一个完整的 CTF 攻防智能体如下import asyncio, os from openai import AsyncOpenAI from cai.sdk.agents import Runner, Agent, OpenAIChatCompletionsModel, set_tracing_disabled from cai.sdk.agents import function_tool from cai.tools.common import run_command function_tool def execute_cli_command(command: str) - str: return run_command(command) ctf_agent Agent( nameCTF agent, descriptionAgent focused on conquering security challenges, instructionsYou are a Cybersecurity expert Leader facing a CTF, tools[execute_cli_command], modelOpenAIChatCompletionsModel( modelos.getenv(CAI_MODEL, qwen2.5:14b), openai_clientAsyncOpenAI(), ) ) async def main(): result await Runner.run(ctf_agent, List the files in the current directory?) print(result.final_output) if __name__ __main__: set_tracing_disabled(True) asyncio.run(main())这段示例展示了完整闭环Agent声明身份与系统提示词 →function_tool把run_command包装成工具 →Runner.run()驱动推理与工具调用 → 可选地切换Runner.run_streamed()以流式事件方式消费输出。在此基础上你可以用handoff()接入侦察/利用/报告子智能体、用Pattern组织并行与层级编排、用 trace/span 记录每一步证据最终构建出面向真实攻防任务、全程可审计的网络安全 AI 智能体系统。延伸阅读CAI 快速上手安装与环境配置CAI 架构总览多智能体协作的整体设计SDK Agent 导出清单全部可导入的公开 API智能体模式示例guardrails、handoffs、LLM as judge 等实战模式CAI 基准测试CTF 与安全能力评估方法论【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考