解构智能体:手把手教你用 CrewAI 打造网络调研专家
解构智能体:手把手教你用 CrewAI 打造“网络调研专家”
导读:在大模型时代,Agent(智能体)被认为是下一个爆发点。但如何从一个简单的对话机器人,进化为能独立完成任务的“智能员工”?本文通过一段完整的 CrewAI 代码,深度解构 Agent 的解剖学,带你掌握 ReAct 范式与人设工程的核心技巧。
大家好,我是你们的 AI 领航员。
在上一节课中,我们了解了 Agent 的基本概念。今天,我们直接进入实战环节。
很多初学者在写 Agent 代码时,容易陷入一个误区:只关注代码逻辑,忽略了“人设工程”。结果就是,Agent 虽然能跑,但像个没有灵魂的脚本,稍微复杂的任务就“幻觉”满天飞。
今天分享的这段代码,是一个标准的单 Agent 执行任务示例。它构建了一个**“网络调研专家”**,不仅能搜索,还能深度抓取网页、撰写报告并保存文件。
我们将通过这段代码,深入理解 Agent 的解剖学结构以及ReAct 执行范式。
🤖 一、Agent 的解剖学:灵魂三问
在 CrewAI 框架中,定义一个 Agent 核心在于三个参数:role(角色)、goal(目标)、backstory(背景故事)。
这不仅仅是填字段,这是提示词工程(Prompt Engineering)的封装。
1. 代码中的“人设”
1 | searcher = Agent( |
💡 学习要点
- Role(角色):给模型一个身份锚点。告诉它“你是专家”,它的输出语气和专业度会立刻不同。
- Goal(目标):明确终点。这里不仅是“搜索”,而是“生成报告并写入文件”。
- Backstory(背景故事):这是最关键的部分!
- 在代码中,
backstory占据了最大篇幅。 - 它不仅仅是背景介绍,更是思维链(Chain of Thought)的硬编码。
- 注意看代码中的第 4 点:“搜索结果的摘要信息通常不够详细…必须使用网页抓取工具”。这是通过人设强行纠正大模型“偷懒”只读摘要的习惯。
- 在代码中,
📝 记忆口诀:角色定身份,目标定方向,背景定流程。
🛠️ 二、工具集成:给 Agent 装上“手”
没有工具的 Agent 只是聊天机器人。有了工具,它才能改变世界(或者至少改变本地文件)。
1. 代码中的工具配置
1 | tools=[ |
💡 学习要点
- 搜索 vs 抓取:这是本示例的精髓。
BaiduSearchTool返回的是摘要(Snippet),信息往往不全。ScrapeWebsiteTool返回的是全文(Content),信息准确。- 最佳实践:代码中的
backstory反复强调“搜索后必须抓取”。这是为了保证信息的可追溯性和准确性。
- 文件操作:Agent 的产出必须落地。
FileWriterTool让 Agent 能将虚拟的思考转化为本地的.md文件。
🧠 三、ReAct 范式:Agent 是如何思考的?
代码中有一行 result = crew.kickoff()。当这行代码执行时,Agent 内部发生了什么?
这就是 ReAct 范式(Reasoning + Acting)。
1. ReAct 循环流程
- Thought(思考):Agent 分析任务。“我要调研极客时间,我需要先搜索关键词。”
- Action(行动):Agent 调用工具。“调用
BaiduSearchTool,参数是‘极客时间’。” - Observation(观察):工具返回结果。“搜索到了 10 条结果,包含链接和摘要。”
- Repeat(循环):Agent 再次思考。“摘要不够,我需要调用
ScrapeWebsiteTool抓取前 3 个链接。” - Final Answer(最终回答):信息收集完毕,撰写报告,调用
FileWriterTool保存。
2. 代码中的控制
1 | max_iter=100, # 最大迭代次数,防止 Agent 陷入无限循环 |
max_iter:防止 Agent 钻牛角尖,比如一直搜索不到满意结果而死循环。verbose=True:学习调试神器。在控制台你能亲眼看到 Agent 的Thought和Action,这是理解 ReAct 最好的方式。
📝 四、任务与 Crew:组织与执行
有了 Agent 和工具,还需要明确具体的任务(Task)和组织(Crew)。
1. Task 定义
1 | task = Task( |
expected_output:这不仅是给人类看的,更是给 Agent 的验收标准。代码中详细列出了“内容完整性”、“信息准确性”等标准,这能显著提高输出质量。
2. Crew 定义
1 | crew = Crew( |
- Crew 是管家。在单 Agent 场景下,它负责启动流程;在多 Agent 场景下,它负责协调多个 Agent 的协作。
🚀 五、实战建议与避坑指南
基于这段代码,在大家自己尝试时,我有几条建议:
不要吝啬 Backstory:
很多教程里的 Backstory 只有一句话。但你看示例代码,它写了 10 步流程。你给 Agent 的指令越细致,它犯错的概率越低。 把 Backstory 当作 SOP(标准作业程序)来写。强制工具使用:
大模型有惰性,它可能觉得搜索摘要就够了。必须在 Backstory 里用加粗、强制要求等词汇,明确告诉它:“不抓取网页内容视为任务失败”。关注 LLM 配置:
代码中使用了aliyun_llm.AliyunLLM。不同的模型对 ReAct 的支持能力不同。如果 Agent 经常陷入循环或工具调用失败,尝试更换更强的模型(如 Qwen-Max 或 GPT-4)。观察日志:
运行代码时,不要只看最后的结果。打开verbose=True,观察 Agent 的每一次思考。这是调试 Agent 行为最直观的方法。
🎓 六、总结
通过这段代码,我们不仅学会了 CrewAI 的 API 调用,更掌握了构建高质量 Agent 的核心心法:
- 人设工程:用详细的
Backstory规范 Agent 的思维链。 - 工具组合:搜索 + 抓取 + 写入,形成闭环。
- ReAct 机制:理解 思考 - 行动 - 观察 的循环本质。
- 验收标准:在 Task 中明确
expected_output的质量要求。




