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

3 篇文章 0 订阅
1 篇文章 0 订阅

今天,我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息: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 会取代人类团队吗? 是的,也不是?

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

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python的OpenGL库是一个用于渲染图形和实现3D图形应用的强大工具。如果你是一个初学者,以下是一些学习OpenGL的指南: 1. 学习基本的计算机图形学概念:在深入学习OpenGL之前,了解一些基本的计算机图形学概念是很重要的。你可以学习像坐标系、向量、矩阵变换等基础知识。 2. 学习Python语言基础:作为一个初学者,你需要先掌握Python的基本语法和编程概念。这将帮助你更好地理解和使用OpenGL库。 3. 安装OpenGL库:在开始之前,你需要确保你的计算机上已经安装了OpenGL库。你可以使用pip来安装PyOpenGL库。 4. 学习OpenGL的核心知识:一旦你准备好了,可以开始学习OpenGL的核心知识,如顶点缓冲对象(VBO)、着色器(programs)、着色器语言(GLSL)等。掌握这些基本概念对于理解和使用OpenGL非常重要。 5. 编写简单的OpenGL程序:接下来,你可以开始编写一些简单的OpenGL程序来实践所学的知识。你可以从简单的绘制一些基本图形开始,然后逐渐扩展到更复杂的场景和效果。 6. 学习OpenGL的高级特性:一旦你熟悉了OpenGL的基本知识,你可以探索一些更高级的主题,如光照、纹理映射、深度测试、投影等。这将帮助你创建更逼真和交互式的3D图形应用。 7. 参考文档和教程:除了上述的自学方法外,你还可以参考一些优秀的OpenGL文档和教程。一些推荐的资源包括OpenGL官方文档、PyOpenGL官方文档、学习OpenGL的在线教程等。 记住,学习OpenGL需要时间和实践。通过不断地编写代码和实验,你将逐渐掌握OpenGL的技能并创建出令人惊叹的图形应用。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值