分享:多智能体旅游助手系统 - 基于 CrewAI 框架
的设计哲学,这是构建复杂 AI 系统的最佳实践。通过角色分离、工具隔离、上下文控制,系统既提高了效率,又增强了安全性和可维护性!这个系统提供了完整的架构模板,您可以根据实际需求进行定制化开发!系统使用 Subagent 架构实现了。
·
#今天分享一个完整的、生产级的多智能体旅游助手系统,从架构,流程及特点进行简要的介绍:
核心架构
1. Main Agent 作为协调中枢
main_agent = Agent(
role="旅游助手接待员",
allow_delegation=True, # ← 这是关键!
# ...
)
allow_delegation=True使 Main Agent 能够将任务委托给专家- 类似"项目经理"角色:不直接执行,而是分配任务
2. 专家 Subagents (领域隔离)
# 每个专家只关注自己的领域
flight_expert.tools = [search_flights, book_flight] # 只能操作航班
hotel_expert.tools = [compare_hotels, show_map] # 只能操作酒店
关键特性:
allow_delegation=False- 专家不能再委托(防止无限递归)- 工具隔离 - 每个 Subagent 只能访问特定工具
- 限流独立 -
max_rpm分别控制,避免单点过载
3. 上下文传递链 (Context Chain)
hotel_search_task.context = [flight_search_task] # 酒店任务依赖航班结果
这实现了 “信息胶囊化”:
- Hotel Expert 只看到 Flight Expert 的输出
- 不会看到原始用户输入或其他 Agent 的内部思考
- 减少 token 消耗,提高推理准确性
系统中的 Subagent 设计
1. 安全 Subagent 前置
# 所有任务必须先经过安全检查
flight_search_task.context = [security_task]
hotel_search_task.context = [security_task]
- Security_Agent 作为"防火墙"
- 保证下游 Subagent 永远看不到敏感原文
2. 人工干预点 (HITL)
flight_booking_task = Task(
human_input=True, # 在此 Subagent 执行完暂停
# ...
)
- 实现 “Human-in-the-Loop”
- Subagent 执行到关键节点时请求人工确认
3. 条件触发 Subagent
# Translation_Expert 只在需要时才参与
if "translate" in user_input.lower():
tasks.append(translation_task)
- 动态 Subagent 激活
- 节省不必要的计算资源
系统使用 Subagent 架构实现了 “分而治之” 的设计哲学,这是构建复杂 AI 系统的最佳实践。通过角色分离、工具隔离、上下文控制,系统既提高了效率,又增强了安全性和可维护性! 🎉
🎯 核心功能亮点
1. 安全隔离机制
SensitiveDataBuffer类实现了敏感数据的完整生命周期管理- 自动识别护照号、信用卡号等敏感信息
- 生成不可逆的安全令牌,确保下游 Agent 无法接触明文数据
2. 智能 Agent 架构
- 安全官: 最高优先级(max_rpm=15),负责入口把关
- 接待员: 唯一的用户接口,
allow_delegation=True支持任务委托 - 机票专家: 配备限流(max_rpm=10),专注航班业务
- 酒店专家: 独立工具集,处理住宿相关逻辑
- 翻译专家: 按需触发,支持跨语言场景
3. 任务协作流程
安全检查 → 航班搜索 → 航班预订(HITL) → 酒店搜索 → 最终整合
↓ ↑
└──────(抵达时间)──────────────┘
- 使用
context参数建立任务依赖 - 酒店任务自动获取航班抵达时间作为上下文
4. 人工干预(HITL)
flight_booking_task设置了human_input=True- 在支付前强制暂停,等待用户确认
- 确保关键决策的人工审核
5. 思考过程透明化
- 所有 Agent 启用
verbose=True - 完整展示 Thought → Action → Observation 循环
- 便于调试和理解决策逻辑
📦 使用方法
安装依赖
pip install crewai crewai-tools langchain langchain-openai
运行系统
python travel_assistant.py
配置 API Key
# 在代码开头添加
import os
os.environ["OPENAI_API_KEY"] = "your-api-key-here"
🔧 扩展建议
- 真实工具集成: 将 Mock 工具替换为真实 API
- 数据库持久化: 将
SensitiveDataBuffer连接到加密数据库 - 多轮对话: 添加对话历史管理
- 错误重试: 实现任务失败自动重试机制
- 监控告警: 集成日志和性能监控
这个系统提供了完整的架构模板,您可以根据实际需求进行定制化开发!
更多推荐


所有评论(0)