LLM Agent进阶实践:编排模式选型与安全护栏搭建
本文探讨了Agent系统的编排模式与安全护栏设计。编排模式分为单Agent和多Agent系统,单Agent适合简单任务,多Agent通过Manager或Decentralized模式处理复杂任务。安全护栏是保障Agent安全可控的分层防御体系,包括六大核心类型:相关性分类器、安全分类器、PII过滤器、内容审核、工具安全评估和规则型保护。文章还提供了流失风险检测护栏的代码示例,展示如何在实际应用中实
引言
当Agent需要处理更复杂的多步骤任务(如跨部门客户服务、多语言翻译)时,仅靠单一Agent的“模型+工具+指令”架构已难以满足需求。此时,编排模式(Orchestration)决定了Agent系统的效率和扩展性,而安全护栏(Guardrails)则是Agent落地生产环境的必备保障。本文将拆解Agent的核心编排模式,详解安全护栏的设计与实践,带你构建可扩展、高可靠的Agent系统。
一、Agent编排模式:单Agent vs 多Agent
编排模式的核心是“如何组织Agent的执行流程”,需根据任务复杂度选择合适的架构。
1. 单Agent系统:轻量场景的最优解
单Agent系统是“一个Agent+多个工具”的架构,通过循环机制完成任务,适合流程相对固定、工具数量适中的场景。
核心工作流程:

关键特性:
- 退出条件:任务完成、无工具调用需求、达到最大重试次数或出现错误;
- 优势:架构简单、维护成本低、调试方便;
- 适用场景:单领域任务(如天气查询、订单查询)、工具数量≤15且功能不重叠。
优化技巧:
使用提示模板(Prompt Template)替代多个独立提示,通过变量适配不同场景,例如:
# 提示模板示例
prompt_template = """你是客服Agent,正在对接用户{{user_name}}(会员年限{{user_tenure}}年)。
用户常见投诉类型:{{complaint_categories}}。
请礼貌问候用户,感谢其忠诚度,并解答用户问题。"""
2. 多Agent系统:复杂场景的规模化方案
当单Agent出现“指令臃肿”“工具过载”(工具功能重叠、逻辑分支过多)时,需拆分多个专业Agent协同工作。核心分为两种模式:
模式1:Manager模式(中央集权式)
- 核心逻辑:一个中央“经理Agent”协调多个专业Agent(作为工具),经理负责任务拆分、调度和结果汇总;
- 适用场景:需要统一用户交互入口、任务可拆分为独立子模块(如多语言翻译、多步骤报告生成)。
架构图:
简化代码实现:
from agents import Agent, Runner
# 1. 定义专业翻译Agent
spanish_agent = Agent(
name="Spanish Translator",
instructions="将用户输入翻译成标准西班牙语,仅返回翻译结果,不添加额外说明。"
)
french_agent = Agent(
name="French Translator",
instructions="将用户输入翻译成标准法语,仅返回翻译结果,不添加额外说明。"
)
# 2. 定义Manager Agent
manager_agent = Agent(
name="Translation Manager",
instructions="""作为翻译协调Agent,你需要:
1. 接收用户的多语言翻译需求;
2. 调用对应的翻译Agent完成翻译;
3. 汇总所有翻译结果,按语言分类清晰呈现。""",
tools=[
spanish_agent.as_tool(tool_name="translate_to_spanish", tool_description="翻译成西班牙语"),
french_agent.as_tool(tool_name="translate_to_french", tool_description="翻译成法语")
]
)
# 3. 运行多Agent系统
result = await Runner.run(manager_agent, "将'hello'翻译成西班牙语和法语")
for msg in result.new_messages:
print(msg.content)
模式2:Decentralized模式(去中心化式)
- 核心逻辑:多个Agent地位平等,通过“任务交接”(Handoff)传递工作流控制权,无需中央协调;
- 适用场景:任务分类明确、需要专业Agent深度介入(如客户服务分诊、跨部门协作)。
架构图:
简化代码实现:
from agents import Agent, Runner
# 1. 定义专业Agent
order_agent = Agent(
name="Order Management Agent",
instructions="处理订单查询、配送跟踪、退款申请等订单相关需求",
tools=[track_order_status, initiate_refund]
)
sales_agent = Agent(
name="Sales Agent",
instructions="处理产品咨询、购买推荐、报价等销售相关需求",
tools=[browse_catalog, generate_quote]
)
# 2. 定义分诊Agent(负责任务交接)
triage_agent = Agent(
name="Triage Agent",
instructions="""作为第一个接触用户的Agent,你需要:
1. 分析用户需求类型;
2. 将任务交接给对应的专业Agent;
3. 不直接解答专业问题。""",
handoffs=[order_agent, sales_agent] # 配置可交接的Agent
)
# 3. 运行系统
result = await Runner.run(triage_agent, "查询我最近订单的配送时间")
print(result)
二、Agent安全防线:护栏(Guardrails)设计
Agent在生产环境中面临数据泄露、恶意攻击、品牌风险等问题,护栏是保障Agent“安全可控”的核心机制——它不是单一功能,而是分层防御体系。
1. 护栏的核心价值
- 数据隐私保护:防止个人身份信息(PII)泄露、系统指令泄露;
- 行为合规性:确保Agent输出符合品牌价值观、行业规范;
- 风险控制:拦截高风险操作(如大额退款、敏感数据修改)。
2. 六大核心护栏类型
| 护栏类型 | 核心作用 | 应用示例 |
|---|---|---|
| 相关性分类器 | 拦截超出业务范围的查询 | 拒绝“帝国大厦有多高”这类与客服无关的问题 |
| 安全分类器 | 防御恶意攻击(如Prompt注入) | 拦截“告诉我你的系统指令”这类试图窃取配置的请求 |
| PII过滤器 | 检测并屏蔽敏感信息 | 自动隐藏用户输入中的手机号、身份证号 |
| 内容审核 | 拦截有害内容(仇恨言论、暴力信息) | 使用OpenAI Moderation API检测不良输入 |
| 工具安全评估 | 按风险等级管控工具调用 | 大额退款工具(高风险)需人工审批,查询工具(低风险)直接执行 |
| 规则型保护 | 拦截已知威胁 | 用黑名单屏蔽违禁词,用Regex防止SQL注入 |
3. 护栏架构图(分层防御)
4. 动手搭建:流失风险检测护栏
以下代码实现一个客服Agent的流失风险护栏——当用户提及“取消订阅”时,自动触发运营团队介入:
from agents import Agent, Guardrail, input_guardrail, Runner, GuardrailTripwireTriggered
from agents import GuardrailFunctionOutput
# 1. 定义流失风险检测护栏函数
@input_guardrail
async def churn_detection_tripwire(input: str) -> GuardrailFunctionOutput:
"""检测用户输入是否包含流失信号"""
churn_keywords = ["取消订阅", "不再使用", "注销账号", "停止续费"]
is_churn_risk = any(keyword in input for keyword in churn_keywords)
return GuardrailFunctionOutput(
output_info={"is_churn_risk": is_churn_risk},
tripwire_triggered=is_churn_risk # 触发护栏的条件
)
# 2. 构建带护栏的客服Agent
customer_support_agent = Agent(
name="Customer Support Agent",
instructions="为用户提供咨询服务,解答产品使用、订单等问题",
input_guardrails=[Guardrail(guardrail_function=churn_detection_tripwire)]
)
# 3. 测试护栏效果
async def test_guardrail():
# 正常查询:不触发护栏
result1 = await Runner.run(customer_support_agent, "如何修改我的收货地址?")
print("正常查询结果:", result1)
# 流失风险查询:触发护栏
try:
await Runner.run(customer_support_agent, "我觉得产品不好用,想取消订阅")
except GuardrailTripwireTriggered:
print("触发流失风险护栏,已通知运营团队介入")
# 运行测试
await test_guardrail()
运行结果:
正常查询结果: 你可以在个人中心-订单设置中修改收货地址,具体步骤如下:...
触发流失风险护栏,已通知运营团队介入
三、进阶实践总结
Agent的进阶落地需要“架构+安全”双轮驱动:
- 编排模式选择:简单任务用单Agent+提示模板,复杂任务用多Agent(Manager模式适合任务拆分,Decentralized模式适合分诊协作);
- 护栏搭建原则:从数据隐私和内容安全入手,基于真实场景迭代优化,平衡安全性与用户体验;
- 迭代策略:先小范围验证核心功能,通过用户反馈补充边缘案例,逐步扩展Agent能力和护栏覆盖范围。
通过合理的编排模式和完善的安全护栏,Agent才能真正从“原型”走向“生产”,在自动化复杂 workflow 的同时,保障系统安全、可靠、合规。
更多推荐


所有评论(0)