Type something to search...
掌握人工智能代理:CrewAI 和 Google Search API 实用指南

掌握人工智能代理:CrewAI 和 Google Search API 实用指南

你知道最近大家都在谈论 AI 代理吗?它们在各个行业层出不穷,承诺改变工作方式。但说实话,试图理解这一切是如何运作的,确实让人感到不知所措。我也曾有过这种感觉——在一片流行词汇、新技术和随之而来的行话中迷失,直到我看到了 CrewAI。亲身体验 CrewAI 让我觉得 AI 代理变得实用而不再令人畏惧。如果你和我一样,是个被 AI 热潮淹没的技术爱好者,我的 CrewAI 体验可能会帮助你穿透噪音。没有企业级的白皮书——只是我经验的实用、接地气的视角。

CrewAI:AI代理人爱好者的游乐场

想象一下,你有一群超级智能的虚拟助手(AI代理人)。每个助手都经过特定任务的训练,比如研究或写作,他们共同合作完成任务。这就像拥有一支专业团队,他们知道该做什么。现在,想象一下能够组织这些助手,告诉他们谁应该处理什么。这基本上就是CrewAI的功能。可以把它看作是一个AI驱动团队的项目经理,你决定谁来处理哪个任务,而CrewAI确保一切顺利进行(即“编排”——基本上是协调不同的任务,以确保它们能够协调一致)。

以下是它如何工作的简要说明:

  1. 你创建这些“代理人”——把它们看作你的AI团队成员。
  2. 你为每个代理人分配一个角色、一个目标和一些背景信息。
  3. 你为你的代理人定义要处理的任务。
  4. CrewAI就像团队领导,确保所有虚拟助手(AI代理人)顺利合作。

这个概念具有良好的扩展性,提供了对更大企业平台在更宏大规模上所能实现的能力的洞察。

亲自动手…

如我所提到的,我一向认为实践是最好的学习方式。因此,我启动了 Google Colab(这基本上是一个可以运行 Python 代码的在线平台),决定使用 CrewAI 和 Google Search API 创建一个小项目。我的目标?自动化一些基本的研究和写作任务——组织通常每天都会做的事情。

由于之前没有真正做过这个,设置一切是……一次冒险。但一旦我整理好所有的 API 密钥(专业提示:将这些安全地保存在你的 Colab Secrets 中),事情就开始变得顺利起来。

为 CrewAI 和 Google Search API 设置环境可能看起来令人生畏,但一旦你知道从哪里开始,其实很简单。你可以在 这里 查看完整代码。

设置 API 密钥:你显然需要你的 LLM 提供者密钥(如果是本地则不需要),这个过程(以及更多)都有 详细文档。对于 Google-Search,我需要从我的 Google 控制台凭据部分 获取我的 Google Search API 密钥和 ID,然后将其存储在 Colab Secrets 中。

接下来,我需要用相关的包设置我的环境:

!sudo apt-get update
!pip install crewai
!pip install 'crewai[tools]'
!pip install google-api-python-client

这解决了所有问题——CrewAI、管理代理的工具,以及设置网络搜索集成的 Google Search API 框架。

以下是处理 API 密钥的快速代码片段:

import os
from google.colab import userdata

os.environ["GOOGLE_API_KEY"] = userdata.get('GOOGLE_API_KEY')
os.environ["GOOGLE_CSE_ID"] = userdata.get('GOOGLE_CSE_ID')

在单独的单元中设置主题,以便更易于管理…

## Set the Topic Here
#######
topic = """
Look for the latest Tech and AI trends in 2024.
"""
####

接下来的部分可能看起来复杂,但对于集成 Google Search API 来说很重要。完整代码可以在 这里 找到:

class GoogleSearchTool:
    def __init__(self, api_key, cse_id):
        # Validate API key and Custom Search Engine ID upon initialization
        if not api_key or not cse_id:
            raise ValueError("API key and CSE ID must be provided")

        # Initialize the Google Custom Search API client
        self.api_key = api_key
        self.cse_id = cse_id
        self.service = build("customsearch", "v1", developerKey=self.api_key)
        self.name = "GoogleSearchTool"
        self.args = {"query": "Search term to find relevant results"}
        self.description = "Performs a Google search and returns relevant results."

研究与内容自动化:接下来,我创建了两个 CrewAI 代理:一个用于研究,一个用于写作。GoogleSearchTool 类是在 ChatGPT 和 Claude 的指导下编写的(嘿,向 AI 朋友寻求帮助没有什么可羞愧的!),使得代理能够通过 API 使用 Google 的自定义搜索。这些代理随后将研究与 AI 写作代理结合起来,生成一个良好的初步书面内容。例如,研究代理会深入最新的 AI 进展,而写作代理会根据这些发现撰写一篇引人入胜的博客/维基风格的文章。相当酷。

以下是定义代理的部分:

## Define your agents
researcher = Agent(
    role='Principal Researcher and Analyst',
    goal=f"Uncover cutting-edge developments in AI and related topics.",
    backstory="""
        You are an experienced and award-winning researcher who excels at 
        finding actionable insights and translating complex data 
        into engaging content.
    """,
    verbose=True,
    allow_delegation=False,
    llm=ChatOpenAI(model_name="gpt-4o", temperature=0.5),
    tools=[google_search_tool, ScrapeWebsiteTool()]
)

writer = Agent(
    role='Tech Content Strategist',
    goal=f"Craft compelling content on AI advancements.",
    backstory="""
      You are a renowned Content Strategist known for 
      translating complex ideas into engaging narratives.
    """,
    verbose=True,
    allow_delegation=True,
    llm=ChatOpenAI(model_name="gpt-4o", temperature=0.7)
)

……然后将他们需要完成的工作定义为任务。

## Define tasks
research = Task(
    description="""
      Extract key insights, ideas, and information from AI topics 
      related to technology and self-improvement.
    """,
    expected_output="""
      A concise report on AI and technology, containing key insights 
      and recommendations in bullet points.
    """,
    agent=researcher,
    output_file="researcher_tasks.md"
)

write_blog = Task(
    description="""
    Write an engaging blog post based on the research on AI advancements.
    """,
    expected_output="""
      A full blog post of around 500 words with citations from all the URLs.
    """,
    agent=writer,
    output_file="writer_tasks.md"
)

……最后将他们协调为一个“团队”以启动他们:

## Instantiate and kickoff the crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research, write_blog],
    verbose=True,
    process=Process.sequential  # Use parallel if no dependencies between tasks
)

## Kickoff the crew
result = crew.kickoff()

不久之后——我创建了两个 AI 代理。一个是研究者,另一个是写作者。研究者挖掘最新的 AI 趋势,而写作者将这些信息转化为人们可能真正想要阅读的内容(希望如此)。这很简单,也让我(至少对我来说)尝到了“代理编排”和任务完成的工作原理。

完整代码可参考 这里

那个灵光一现的时刻

让我感到震撼的是看到这些代理人如何协同工作……以及设置是多么简单。我让他们去研究并撰写关于这个主题的内容,看到他们之间的协调真是太好了,因为 LLM 的响应以文本日志的形式出现。研究代理人会在网上搜寻,提取信息,然后交给写作代理人。写作代理人则将这些事实编织成一篇连贯的文章。

输出虽然不是完美的,但已经足够好了,特别是在短时间的设置后几乎没有调整。然而,看到这一切结合在一起真是太棒了……而且实际上这几乎不需要任何编码技能。

它确实节省了研究和草拟的时间,是的。这也让我有时间去思考其他可以优化的方式。

这种自动化不仅加速了内容创作,还展示了企业和任何人如何简化研究任务,从而提高生产力。

为什么这很重要(即使你不是程序员)

现在,我知道你在想什么。“太好了,你玩了一些代码。这怎么能帮助我理解这些功能,更不用说一个企业平台了?”无论你是在个人项目中使用AI代理,还是在企业系统中,核心理念都是一样的,让AI代理在复杂任务上协同工作,以解决现实世界的问题,这将改变游戏规则。

至于我那个小的CrewAI项目?它就像是一个迷你模拟,展示了AI如何承担研究、分析和内容创作——这些任务在几乎每个行业中都是至关重要的。

输出

代理性和生成性阶段的实践

这些术语我开始听得很多。因此,我的理解是代理性阶段提供了策略和编排,确保将正确的任务分配给合适的代理,而生成性阶段则处理执行和内容创建。这两个阶段协同工作,以实现协调良好的输出,展示了自主决策(代理性阶段)与人工智能的创造能力(生成性阶段)的结合。

简单来说,代理性阶段是关于规划和组织任务,而生成性阶段则处理执行和内容创建。它们共同形成一个无缝的过程,确保一切高效完成。

这里是一个详细说明:

定义代理:

  • ResearchAgentWriter Agent 是根据特定角色和目标创建的。例如,ResearchAgent 负责从搜索结果中发现洞察,而 Writer Agent 则负责撰写内容。
researcher = ResearchAgent(
    name='Principal Researcher and Analyst',
    role='Researcher',
    goal=f"""Uncover cutting-edge developments in {search_query} and 
          related topics.""",
    backstory="""
        You are an experienced and award-winning researcher who excels 
        at finding actionable insights and 
        translating complex data into engaging content.
    """,
    tools=[google_search_tool, ScrapeWebsiteTool()]
)

任务协调

  • 任务被分配给代理,CrewAI 管理 流程。我认为这是一种 代理 关注的方式,因为这是对代理如何协作的高层次编排,确保正确的任务按正确的顺序执行。
crew = Crew(
    agents=[researcher, writer],
    tasks=[research, write_blog],
    verbose=True,
    process=Process.sequential  # 确保研究任务在写作开始之前完成
)

任务定义

  • 任务的定义,包括其预期输出和描述,反映了 代理思维。它为每个代理设定了 高层次目标 并定义了它们如何相互互动。
research = Task(
    description=f"""
      Extract key insights, ideas, and information from {search_query}.
    """,
    expected_output=f"""
      A concise report on {search_query}, containing key insights and 
      recommendations in bullet points.
    """,
    agent=researcher,
    output_file="researcher_tasks.md",
    execution_function=researcher_task_execution  # 执行研究者的功能以收集洞察
)

它们在代码中的协同工作:

Agentic Phase:

  • 设置结构: 它定义了每个代理的角色,概述了任务,并组织了工作流程。
  • 决定顺序: 该过程按顺序进行,以便研究任务在写作任务之前运行(使用 Process.sequential)。

生成阶段:

  • 执行策略: 代理从代理阶段获取指令并生成实际内容(研究洞察、博客文章)。
  • 创建输出: 通过 GoogleSearchTool 和写作任务,代理根据研究发现生成最终输出。

代理阶段 处理更高层次的决策、协调和任务定义(例如定义代理、任务和流程)。生成阶段 负责执行这些决策并生成实际内容(例如搜索、处理洞察和撰写博客文章)。它们共同创建一个无缝的工作流程,其中策略与执行相辅相成。

收获

在一个人工智能正在革新各个行业的世界里,像 CrewAI 这样的工具提供了一个易于访问的起点。无论你是否是程序员,尝试这些工具都可以帮助你理解人工智能和人工智能代理的潜力。

我鼓励你尝试像 CrewAI 和 Google Search API 这样的工具,亲身体验人工智能如何改变你的工作流程——无论你是否是程序员。这既有教育意义又很有趣!

保持好奇,科技爱好者们!

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多