自动化您的任务——crewAI 初学者教程

news2024/11/19 7:43:58

今天,我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息:crewAI。 我将在这里或那里跳过一些内容,使本教程成为一个精炼的教程,概述帮助您入门的关键概念和要点

今天,我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息:crewAI。 我将在这里或那里跳过一些内容,使本教程成为一个精炼的教程,概述帮助您入门的关键概念和要点。

什么是crewAI?

crewAI 是由 João Moura 创建的框架。 它旨在建立一个人工智能代理团队,共同完成任务。 它建立在LangChain之上,并提供直观易用的API。

为什么我需要AI代理?

假设您是一名博主,花费大量时间研究和撰写内容。 您能否自动化该过程并节省无数时间?

或者,您可能是 SEO 专家,并且浪费时间生成和解释报告。 有没有办法自动执行此操作,以便您可以专注于 SEO 的战略方面?

这两个问题的答案都是:是的,有。

在婴儿期,代理由于其效率和速度而有潜力取代人类在现实世界中完成的许多流程。

核心crewAI组件

我们将讨论crewAI 最重要的组成部分。 以下是我们将要介绍的内容的细分:

  • Agents
  • Tasks
  • Tools
  • Crews (and Processes)

现在,如果我将以上几点放在一个句子中来解释它们是如何联系在一起的,那么这句话将是这样的:

Crews, made up of Agents perform Tasks using Tools by following Processes. *

无法将内存组件放入该句子中 - 如果可以,请在评论中分享! 

认识 crewAI

假设您是一位博主(像我一样),希望优化您的促销后流程。 为了简单起见,我们假设这是一个 3 步过程,如下所示:

  • 获取博客上的最新帖子。
  • 根据该帖子写一条推文。
  • 根据帖子撰写新闻通讯电子邮件。

现在我将向您展示crewAI 如何帮助我在几秒钟内(而不是通常需要几分钟或几小时)实现上述目标。

crewAI 中的代理

代理一起工作,每个代理使用一种或多种工具为团队做出贡献,以解决共同的目标。

如果我们回到我们的示例,我们将需要创建两个代理。 第一个将从我的博客中提取最新帖子,然后第二个将使用该内容将其转换为 Twitter(或 X)帖子和时事通讯电子邮件。

好吧,太酷了 - 让我们看看第一个代理在 Python 中是什么样子的:

from crewai import Agent

...

extractor = Agent(
    role='Content Retriever',
    goal='Given a URL you will retrieve the content.',
    backstory='''As an expert at retrieving complete and accurate
    information, you are responsible for presenting the content of webpages
    that will be used to create engaging content for twitter and a newsletter.
    ''',
    verbose=True
)

第二个:

writer = Agent(
    role='Content Writer',
    goal='You are responsible to transforming long text into engaging content ready for promotion on different channels.',
    backstory="""
        You are an excellent communications specialist, known for your
        exceptional skill of transforming complex subject into easy to
        understand stories that attract people.
        """,
    verbose=True
)
  • role 属性指定代理的功能。
  • goal 属性指定代理必须实现的目标。
  • backstory 属性为代理的身份和行为添加了上下文。

代理属性

 

 

要创建代理,您通常需要使用所需的属性初始化 Agent 类的实例。 这是一个包含所有属性的概念示例:

# Example: Creating an agent with all attributes
from crewai import Agent

agent = Agent(
  role='Data Analyst',
  goal='Extract actionable insights',
  backstory="""You're a data analyst at a large company.
  You're responsible for analyzing data and providing insights
  to the business.
  You're currently working on a project to analyze the
  performance of our marketing campaigns.""",
  tools=[my_tool1, my_tool2],  # Optional, defaults to an empty list
  llm=my_llm,  # Optional
  function_calling_llm=my_llm,  # Optional
  max_iter=15,  # Optional
  max_rpm=None, # Optional
  verbose=True,  # Optional
  allow_delegation=True,  # Optional
  step_callback=my_intermediate_step_callback,  # Optional
  cache=True  # Optional
)

这就是创建代理所需了解的全部内容。 现在让我们分配任务。

crewAI 中的任务

任务是代理所做的事情。 任务至少由描述、预期输出以及对将执行该任务的代理的引用组成。

在我们的例子中,我们需要执行以下任务:

任务 1:从博客中获取内容
任务 2:根据内容撰写推文
任务3:根据内容撰写新闻通讯

任务 1 和 writer 代理将负责处理,并且由于代理可以执行多个任务,因此我们将把任务 2 和 3 分配给我们的 extractor。

我们将从任务 1 开始:fetch

from crewai import Task

...

fetch = Task(
    description=f'''
        Given a URL, retrieve the content of the webpage.
        It is important that you do not miss any information.
        
        Make sure that:
         - The content does not include html, css, or javascript.
         - The content is complete and accurate.
         - You do not include headers, footers, or sidebars.
    ''',
    agent=extractor, 
    expected_output='''
        Title: [The title of the article]
        Author: [The author of the article]
        Date: [The date the article was published]
        Content: [The content of the article]
    '''
)

任务 2 如下所示:

twitterize = Task(
    description='''
        Given a long text, transform it into engaging content ready for promotion on Twitter.
        Make sure that:
         - The content is engaging and informative.
         - The content is less than 280 characters.
         - The content includes relevant hashtags - Limit to one.
    ''',
    agent=writer,
    expected_output='''
        Title: [Engaging catchy title for the tweet]
        Content: [Engaging content for the tweet]
    '''
)

最后,任务3与twitterize比较相似。 您可以自己创建它,或者您可以在本文底部免费获取源代码。

嗯不错! 现在您知道什么是任务以及它们如何工作。下一个:工具。

有关可用任务参数和选项的完整列表

任务属性

属性描述
Description清晰、简洁地说明任务的内容。
Agent负责任务的代理,直接分配或由机组人员的进程分配。
Expected Output任务完成情况的详细描述。
Tools(可选)代理可以用来执行任务的功能或能力。
Async Execution(可选)如果设置,任务将异步执行,无需等待完成即可继续进行。
Context (可选)指定其输出用作该任务上下文的任务。
Config(可选)执行任务的代理的其他配置详细信息,允许进一步定制。
Output JSON (可选)输出 JSON 对象,需要 OpenAI 客户端。 只能设置一种输出格式。
Output Pydantic (可选)输出 Pydantic 模型对象,需要 OpenAI 客户端。 只能设置一种输出格式。
Output File (可选)将任务输出保存到文件中。 如果与输出 JSON 或输出 Pydantic 一起使用,指定如何保存输出。
Callback(可选)一个 Python 可调用函数,在完成后使用任务的输出执行。
Human Input (可选)指示任务最后是否需要人工反馈,这对于需要人工监督的任务很有用。

使用工具创建任务

import os
os.environ["OPENAI_API_KEY"] = "Your Key"
os.environ["SERPER_API_KEY"] = "Your Key" # serper.dev API key

from crewai import Agent, Task, Crew
from crewai_tools import SerperDevTool

research_agent = Agent(
  role='Researcher',
  goal='Find and summarize the latest AI news',
  backstory="""You're a researcher at a large company.
  You're responsible for analyzing data and providing insights
  to the business.""",
  verbose=True
)

search_tool = SerperDevTool()

task = Task(
  description='Find and summarize the latest AI news',
  expected_output='A bullet list summary of the top 5 most important AI news',
  agent=research_agent,
  tools=[search_tool]
)

crew = Crew(
    agents=[research_agent],
    tasks=[task],
    verbose=2
)

result = crew.kickoff()
print(result)

crewAI工具

正如您所看到的,我们的提取器代理的任务是从给定的 URL 中提取信息。 但如何呢?

提示:通过使用工具。

在crewAI中,您可以通过三种方式使用工具:

  • 自定义工具:您自己编写的工具,本质上是一个 Python 函数。
  • 内置工具:crewAI 附带了许多内置工具。
  • LangChain工具:由于crewAI是建立在LangChain之上的,因此您也将获得LangChain的所有好东西。


对于我们的示例,有很多现有工具可以帮助我们从博客中提取信息。 此类工具之一是内置于crewAI 中的ScrapeWebsiteTool。 所以在这种情况下,我们不需要自己构建。

要使用它,我们只需将它传递到提取器使用的工具列表中,如下所示:

from crewai_tools import ScrapeWebsiteTool

site_url = 'https://www.gettingstarted.ai/crewai-beginners-tutorial
scrape_tool = ScrapeWebsiteTool(url=site_url)

extractor = Agent(
    ...
    tools=[scrape_tool] # <----
    ...
)

确保使用 pip 安装可选工具包:

pip install crewai[tools]

太酷了 - 我们快完成了,这意味着您快成为超级巨星了!

crewAI crews

现在我们已经定义了任务、工具和代理。 我们必须将它们全部分组,以便它们一起工作。 这就是我们定义工作人员的地方,但在此之前 - 让我解释一下特工如何一起工作。

crew 流程

现在您知道船员是由特工组成的。 但这些代理必须知道如何相互交谈,比如由哪一个发起对话。 在crewAI 中,有两个受支持的流程,第三个流程即将推出。 目前的流程是:

  • 顺序:一项接着一项任务,有秩序地进行。
  • 分层:经理将协调对话流程。

由于我们的任务可以按顺序完成,因此我们将采用顺序流程。

我们开始做吧:

from crewai import Crew

...

crew = Crew(
    agents=[extractor, writer],
    tasks=[fetch, twitterize, newsletterize],
    Process=Process.sequential
)

这就是全部,非常简单,不是吗?

最后,我们调用 kickoff() 方法来设置一切:

result = crew.kickoff()

print("#### USAGE ####")
print (crew.usage_metrics) # <-- Optional

print("#### RESULT ####")
print(result)

快速仅供参考:usage_metrics 函数返回一个很好的执行摘要,如下所示: Crew use {'total_tokens': 65002, 'prompt_tokens': 55305, 'completion_tokens': 9697, 'successful_requests': 67}

结论和想法

老实说,crewAI 的美妙之处无疑在于其简单的结构。 您可以添加另一个代理,负责在 Twitter 上发布消息并向您的订阅者发送电子邮件。

您可以通过利用工具来完成此操作,可以使用现有工具,也可以创建自己的与第三方 API 的集成。
现在,如果您正在使用 OpenAI 或其他付费 LLM 服务,我建议您密切关注计费仪表板,因为代理往往会消耗大量代币,例如,本教程中的工作人员运行一次的成本约为 0.90 美元。

Agent 会取代人类团队吗? 是的,也不是?

是的,如果您或您的公司能够以更少的成本更快地取得成果,您会不会这么做吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算期末复习(1)

云计算基础 作业&#xff08;问答题&#xff09; &#xff08;1&#xff09;总结云计算的特点。 透明的云端计算服务 “无限”多的计算资源&#xff0c;提供强大的计算能力 按需分配&#xff0c;弹性伸缩&#xff0c;取用方便&#xff0c;成本低廉资源共享&#xff0c;降低企…

一位老网工19年前写下的话,激励无数网工人

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 中午好&#xff0c;我是老杨。 2005年的互联网没有如今这么发达&#xff0c;但2005年&#xff0c;有一个技术人写了一段话&#xff0c;感动了无数…

LoadBalancer

一、手写随机负载均衡 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><!--引入nacos discovery--> <dependency><groupId>com…

vue列表数据添加和删除实例

运行效果如下&#xff1a; 详细代码&#xff1a; 自行添加vue.min.js文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&…

光耦合器的特性和应用概述

光耦合器又称光电耦合器&#xff0c;是现代电子学中必不可少的元件&#xff0c;确保隔离电路之间安全有效的信号传输。本文探讨了光耦合器的特性及其多样化应用&#xff0c;强调了它们在各种电子系统中的关键作用。 什么是光耦合器&#xff1f; 光耦合器是一种设计用于利用光传…

SpringCloud Alibaba详解:打造高可用的分布式系统

SpringCloud Alibaba是一个基于Spring Cloud的微服务开发框架&#xff0c;它集成了阿里巴巴的一系列中间件和工具&#xff0c;能够快速构建高可用的分布式系统。在本文中&#xff0c;将详细介绍如何使用SpringCloud Alibaba来打造高可用的分布式系统&#xff0c;并通过代码案例…

SAP-FICO-凭证编号控制

成本凭证编号KANK 如果自己的公司下没有&#xff0c;直接复制系统原有的就可以。使用系统默认即可。 如果不维护 会报错“CO-凭证编号分配对于成本控制范围****中的商业事务COIN无效” 财务凭证编号FBN1 可以用OBH2批量复制编号范围。 物料账期MMPV 财务账期OB52

TCP—三次握手和四次挥手

目录 一、三次握手和四次挥手的目的 二、TCP可靠的方面 三、什么是三次握手 四、第三次握手的目的 五、什么是四次挥手 六、超时时间的目的 七、SYN包、ACK包、FIN包 八、解决丢包和乱序 九、参考资料 一、三次握手和四次挥手的目的 TCP三次握手的目的主要是为了确保两…

国产AI服务器Tr i - M o d e R A I D 卡,Tri-Mode HBA卡,SAS RAID卡

技术规格 • 主机接口&#xff1a;PCIe 4.0 x8 • 数据接口&#xff1a;SATA/SAS/PCIe三模 • 连接器&#xff1a;2x8 SFF-8654&#xff0c;2x M-Key M.2(2280) • 控制器&#xff1a;IOC 2250 • 硬盘数量&#xff1a;16 2 块SATA/SAS/PCIe • RAID模式&#xff1a;RAID…

蓝牙模块在无人机 ID识别、标准制定发挥的作用及其应用优势和面临的挑战

随着科技的飞速发展&#xff0c;无人机已经广泛应用于航拍、农业、救援、物流等多个领域。而在无人机的通信与控制系统中&#xff0c;蓝牙模块扮演着重要的角色。本文将探讨蓝牙模块在无人机Remote ID识别和标准制定执行中发挥的作用&#xff0c;并分析其应用优势和面临的挑战。…

mysql-索引、存储引擎、事务、锁机制和优化

1. MySQL的索引 1.1 概述 索引是通过某种算法&#xff0c;构建出一个数据模型&#xff0c;用于快速找出在某个列中有以特定值的行&#xff0c;不使用索引&#xff0c;MySQL必须从一条记录开始读完整个表&#xff0c;直到找出相关的行&#xff0c;表越大查询数据所花的时间越多…

【全部更新完毕】2024长三角数学建模A题思路代码文章教学-“抢救”落水手机

文章摘要部分&#xff1a; “抢救”落水手机 摘要 文章主要探讨了如何科学地处理和搜索在水体中意外掉落的物品&#xff1a;华为 Mate 60 Pro手机和居民身份证。本文基于物理模型和动力学分析&#xff0c;为不同水体环境中的掉落物品提供了详尽的搜索策略和打捞建议。 本文…

C++ | Leetcode C++题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution { public:bool check(TreeNode *u, TreeNode *v) {queue <TreeNode*> q;q.push(u); q.push(v);while (!q.empty()) {u q.front(); q.pop();v q.front(); q.pop();if (!u && !v) continue;if ((!u || !v) ||…

碳课堂|ISO 14067 产品碳足迹国际标准

为规范评估产品碳排放&#xff0c;国际标准化组织发布了《ISO14067&#xff1a;2018温室气体-产品碳足迹-量化要求及指南》&#xff0c;标准量化产品生命周期阶段&#xff08;包括从资源开采、原材料采购到产品的生产、使用和报废阶段&#xff09;的温室气体排放的通用标准。该…

java项目之桂林旅游景点导游平台源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的桂林旅游景点导游平台。 项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 桂林旅游景点导游…

腾讯TDSQL-C灰度发布列存索引; Azure Copilot集成支持Azure上各种托管数据库;

重要更新 1. Copilot for Azure新增了对Azure SQL、 Azure Database for MySQL的支持([8] [14])。Copilot for Azure是微软云提供的基于大模型技术的助手工具&#xff0c;主要能力包括了&#xff1a;该大模型可以获得最新的文档&#xff0c;以及客户的Azure资源情况&#xff0c…

如何排查hpet导致的CPU高负载——《OceanBase诊断系列》之十

1. 前言 我在OceanBase问答社区协助用户排查了一个CPU占用率过高的问题&#xff0c;帖子原文是&#xff1a; 《刚刚新安装的OceanBase集群&#xff0c;没有任何数据&#xff0c;CPU占用非常高&#xff0c;这正常吗&#xff1f;》。从这个场景出发&#xff0c;来分享相关的诊断…

毫米波雷达的自我学习——TI毫米波雷达数据的BIN存储

这里写目录标题 TI毫米波数据以16位二进制补码的形式存储数据存储具有DCA1000数据格式的xWR12xx和xWR14xx&#xff08;交错模式&#xff09;具有DCA1000数据格式的xWR16xx和**IWR6843**&#xff08;只能非交错模式&#xff09;其他 TI毫米波数据以16位二进制补码的形式存储 按…

VUE3好看的酒网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 十大名酒界面1.3 名酒新闻界面1.4 联系我们界面1.5 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 3.VUE框架系列源码4.源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/detai…