构建你的第一个 CrewAI Agent

让我们创建一个简单的 crew,帮助我们围绕某个给定的主题或对象,对 最新的 AI 发展 进行 研究报告

在继续之前,请确保你已经完成了 CrewAI 的安装。 如果你还没有安装,可以按照安装指南进行操作。

按照下面的步骤开始 Crewing 吧!🚣‍♂️

创建你的 crew

在终端中运行以下命令来创建一个新的 crew 项目。 这会创建一个名为 latest-ai-development 的新目录,并包含你的 crew 的基础结构。

  1. crewai create crew latest-ai-development

进入你新建的 crew 项目

```shell Terminal cd latest_ai_development

  1. ### 修改你的 `agents.yaml` 文件
  2. > 你也可以根据自己的使用场景对 agents 进行调整,或者直接复制粘贴到你的项目中使用。
  3. `agents.yaml` `tasks.yaml` 文件中插入的任何变量,例如 `{topic}`,都会被 `main.py` 文件中的变量值替换。
  4. ```yaml
  5. # src/latest_ai_development/config/agents.yaml
  6. researcher:
  7. role: >
  8. {topic} 高级数据研究员
  9. goal: >
  10. 挖掘 {topic} 领域的前沿发展
  11. backstory: >
  12. 你是一位经验丰富的研究员,擅长发现 {topic} 的最新进展。
  13. 你以能够找到最相关的信息,并以清晰简洁的方式呈现而闻名。
  14. reporting_analyst:
  15. role: >
  16. {topic} 报告分析师
  17. goal: >
  18. 基于对 {topic} 的数据分析和研究发现创建详细报告
  19. backstory: >
  20. 你是一位一丝不苟的分析师,拥有敏锐的细节洞察力。
  21. 你以能够将复杂数据转化为清晰简洁的报告而闻名,
  22. 让他人能够轻松理解并根据你提供的信息采取行动。

修改你的 tasks.yaml 文件

```yaml tasks.yaml

  1. # src/latest_ai_development/config/tasks.yaml
  2. research_task:
  3. description: >
  4. 针对 {topic} 开展深入研究
  5. 请确保结合当前年份为 2025
  6. 找到任何有趣且相关的信息。
  7. expected_output: >
  8. 10 条项目符号列表的形式,列出关于 {topic} 最相关的信息
  9. agent: researcher

reporting_task: description: > 回顾你获得的上下文信息,并将每个主题扩展为报告中的完整章节。 请确保报告内容详尽,并包含所有相关信息。 expected_output: > 一份完整的报告,包含主要主题,并且每个主题都有完整的信息章节。 以 markdown 格式输出,不包含 ‘```’ agent: reporting_analyst output_file: report.md

  1. ### 修改你的 `crew.py` 文件
  2. ```python
  3. # src/latest_ai_development/crew.py
  4. from crewai import Agent, Crew, Process, Task
  5. from crewai.project import CrewBase, agent, crew, task
  6. from crewai_tools import SerperDevTool
  7. from crewai.agents.agent_builder.base_agent import BaseAgent
  8. from typing import List
  9. @CrewBase
  10. class LatestAiDevelopmentCrew():
  11. """LatestAiDevelopment crew"""
  12. agents: List[BaseAgent]
  13. tasks: List[Task]
  14. @agent
  15. def researcher(self) -> Agent:
  16. return Agent(
  17. config=self.agents_config['researcher'], # type: ignore[index]
  18. verbose=True,
  19. tools=[SerperDevTool()]
  20. )
  21. @agent
  22. def reporting_analyst(self) -> Agent:
  23. return Agent(
  24. config=self.agents_config['reporting_analyst'], # type: ignore[index]
  25. verbose=True
  26. )
  27. @task
  28. def research_task(self) -> Task:
  29. return Task(
  30. config=self.tasks_config['research_task'], # type: ignore[index]
  31. )
  32. @task
  33. def reporting_task(self) -> Task:
  34. return Task(
  35. config=self.tasks_config['reporting_task'], # type: ignore[index]
  36. output_file='output/report.md' # 这是最终报告将会写入的文件。
  37. )
  38. @crew
  39. def crew(self) -> Crew:
  40. """创建 LatestAiDevelopment crew"""
  41. return Crew(
  42. agents=self.agents, # 由 @agent 装饰器自动创建
  43. tasks=self.tasks, # 由 @task 装饰器自动创建
  44. process=Process.sequential,
  45. verbose=True,
  46. )

[可选] 添加 crew 执行前和执行后的函数

  1. # src/latest_ai_development/crew.py
  2. from crewai import Agent, Crew, Process, Task
  3. from crewai.project import CrewBase, agent, crew, task, before_kickoff, after_kickoff
  4. from crewai_tools import SerperDevTool
  5. @CrewBase
  6. class LatestAiDevelopmentCrew():
  7. """LatestAiDevelopment crew"""
  8. @before_kickoff
  9. def before_kickoff_function(self, inputs):
  10. print(f"Kickoff 前函数,输入内容为: {inputs}")
  11. return inputs # 你可以按需直接返回 inputs,或对其进行修改
  12. @after_kickoff
  13. def after_kickoff_function(self, result):
  14. print(f"Kickoff 后函数,结果为: {result}")
  15. return result # 你可以按需直接返回 result,或对其进行修改
  16. ... 其余代码

你也可以向 crew 传入自定义输入

例如,你可以向 crew 传入 topic 参数,以自定义研究和报告内容。

  1. #!/usr/bin/env python
  2. # src/latest_ai_development/main.py
  3. import sys
  4. from latest_ai_development.crew import LatestAiDevelopmentCrew
  5. def run():
  6. """
  7. 运行 crew。
  8. """
  9. inputs = {
  10. 'topic': 'AI Agents'
  11. }
  12. LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)

设置你的环境变量

在运行 crew 之前,请确保你已经在 .env 文件中设置了以下环境变量:

  1. - 一个 [Serper.dev](https://serper.dev/) API 密钥:`SERPER_API_KEY=YOUR_KEY_HERE`
  2. - 你所选择模型的配置,例如 API 密钥。请参阅
  3. [LLM 设置指南](/en/concepts/llms#setting-up-your-llm) 以了解如何配置任意提供商的模型。

锁定并安装依赖

  1. - 使用 CLI 命令锁定依赖并安装:
  1. crewai install
  1. - 如果你还想安装其他额外的包,可以运行:
  1. uv add <package-name>

运行你的 crew

  1. - 在项目根目录执行以下命令来运行 crew
  1. crewai run

企业版替代方案:在 Crew Studio 中创建

对于 CrewAI AMP 用户,你可以无需编写代码,以同样方式创建这个 crew:

  1. 登录你的 CrewAI AMP 账户(可在 app.crewai.com 免费创建账户)
  2. 打开 Crew Studio
  3. 输入你想构建的自动化流程
  4. 以可视化方式创建任务,并按顺序连接它们
  5. 配置输入项,然后点击 “Download Code” 或 “Deploy”

CrewAI AMP 免费开始你的账户

查看你的最终报告

你应该会在控制台中看到输出,并且项目根目录下会生成 report.md 文件,其中包含最终报告。

下面是报告示例的样子:

  1. # 2025 年 AI Agents 崛起及影响的综合报告
  2. `

1. AI Agents 简介

到了 2025 年,人工智能(AI)代理已成为多个行业创新的前沿力量。作为能够执行通常需要人类认知能力任务的智能系统,AI 代理正在推动人力资源(HR)和金融等领域在运营效率、决策制定以及整体生产力方面取得显著进步。本报告旨在详细阐述 AI 代理的崛起、其框架、应用以及对劳动力可能带来的影响。

2. AI Agents 的优势

AI 代理带来了众多优势,正在改变传统工作环境。主要优势包括:

  • 任务自动化:AI 代理可以在无人干预的情况下执行数据录入、日程安排和薪资处理等重复性任务,大幅减少这些活动所需的时间和资源。
  • 效率提升:通过快速处理大型数据集,并完成需要人类花费更长时间的分析工作,AI 代理提高了运营效率。这使团队能够专注于需要更高层次思考的战略任务。
  • 增强决策能力:AI 代理可以分析数据中的趋势和模式,提供洞察,甚至提出行动建议,帮助相关方基于事实数据而非直觉作出明智决策。

3. 流行的 AI Agent 框架

为了促进 AI 代理开发,已经出现了多个框架,每个框架都具有其独特功能与能力。其中一些最受欢迎的框架包括:

  • Autogen:一个旨在通过自动化代码生成来简化 AI 代理开发的框架。
  • Semantic Kernel:专注于自然语言处理与理解,使代理能够更好地理解用户意图。
  • Promptflow:为开发者提供工具,用于创建能够无缝处理复杂交互的对话代理。
  • Langchain:专注于利用多种 API,确保代理能够有效访问并使用外部数据。
  • CrewAI:面向协作环境,CrewAI 通过 AI 驱动的洞察促进沟通,从而增强团队协作。
  • MemGPT:将内存优化架构与生成能力结合,使其能够与用户进行更加个性化的交互。

这些框架使开发者能够构建灵活而智能的代理,它们可以与用户互动、执行高级分析,并完成与组织目标一致的各种任务。

4. AI Agents 在人力资源中的应用

AI 代理正在通过自动化和优化关键职能,彻底变革 HR 实践:

  • 招聘:AI 代理可以筛选简历、安排面试,甚至进行初步评估,从而加快招聘流程并尽量减少偏见。
  • 继任规划:AI 系统能够分析员工绩效数据和潜力,帮助组织识别未来领导者并规划适当培训。
  • 员工参与度:由 AI 驱动的聊天机器人可以促进员工与管理层之间的反馈循环,推动开放文化并及时解决问题。

随着 AI 持续演进,采用这些代理的 HR 部门能够在效率和员工满意度两方面实现显著提升。

5. AI Agents 在金融中的应用

金融领域正在广泛整合 AI 代理,以增强金融实践:

  • 费用追踪:自动化系统可管理和监控支出,标记异常情况,并根据消费模式提出建议。
  • 风险评估:AI 模型通过分析交易数据和行为模式来评估信用风险并发现潜在欺诈。
  • 投资决策:AI 代理基于历史数据和当前市场状况提供股票预测与分析,为投资者提供有价值的洞察。

AI 代理融入金融领域,正在推动一个更具响应能力和风险意识的金融生态形成。

6. 市场趋势与投资

AI 代理的发展吸引了大量投资,尤其是在聊天机器人和生成式 AI 技术日益流行的背景下。企业和创业者都热衷于探索这些系统的潜力,认识到它们能够简化运营并改善客户参与度。

与此同时,像微软这样的公司也在积极将 AI 代理整合进其产品中,例如增强 Copilot 365 应用。这一战略举措凸显了 AI 素养在现代职场中的重要性,也表明 AI 代理正逐渐稳定为企业必不可少的工具。

7. 未来预测与影响

专家预测,AI 代理将改变工作生活中的关键方面。展望未来,几个预期变化包括:

  • AI 代理将在所有业务职能中实现更深层集成,形成互联系统,利用来自不同部门孤岛的数据进行全面决策。
  • AI 技术将持续进步,带来更智能、更具适应性的代理,能够从用户互动中学习并不断演化。
  • 随着 AI 代理日益普及,围绕数据隐私和员工监控等问题的伦理使用将面临更严格的监管审查。

为了保持竞争力并充分释放 AI 代理的潜力,组织必须密切关注 AI 技术的最新发展,并在战略规划中考虑持续学习与适应。

8. 结论

AI 代理的出现无疑正在重塑 5 年中的职场格局。凭借其自动化任务、提升效率和改善决策的能力,AI 代理正在成为推动运营成功的关键力量。组织必须拥抱并适应 AI 发展,才能在日益数字化的商业环境中蓬勃发展。

  1. `

恭喜!

你已经成功设置好了 crew 项目,并准备开始构建你自己的 agent 工作流!

关于命名一致性的说明

你在 YAML 文件(agents.yamltasks.yaml)中使用的名称,应当与你 Python 代码中的方法名保持一致。 例如,你可以在 tasks.yaml 文件中为特定任务引用对应的 agent。 这种命名一致性使 CrewAI 能够自动将你的配置与代码关联起来;否则,你的任务将无法正确识别该引用。

引用示例

请注意,我们在 agents.yaml 文件中使用的 agent 名称 (email_summarizer) 与 crew.py 中的方法名 (email_summarizer) 保持一致。

  1. email_summarizer:
  2. role: >
  3. 邮件摘要员
  4. goal: >
  5. 将邮件总结为简明清晰的摘要
  6. backstory: >
  7. 你将把报告总结为 5 条项目符号摘要
  8. llm: provider/model-id # 在此填写你选择的模型

请注意,我们在 tasks.yaml 文件中使用的任务名称 (email_summarizer_task) 与 crew.py 中的方法名 (email_summarizer_task) 保持一致。

  1. email_summarizer_task:
  2. description: >
  3. 将邮件总结为 5 条项目符号摘要
  4. expected_output: >
  5. 邮件的 5 条项目符号摘要
  6. agent: email_summarizer
  7. context:
  8. - reporting_task
  9. - research_task

部署你的 Crew

将你的 crew 部署到生产环境的最简单方式,是通过 CrewAI AMP

观看下面这段视频教程,了解如何使用 CLI 逐步将你的 crew 部署到 CrewAI AMP