14.8k Star!CrewAI:部署一支由你指挥的人工智能代理大军,股票分析、发布帖子、支持Ollama!

技术

Aitrainee | 公众号:AI进修生

🌟Crew AI: 一个前沿AI框架,使用它便可部署一支由你指挥的人工智能代理大军,创建强大数字劳动力。

picture.image

Hello,大家好,我是Aitrainee,今天要给大家介绍一个超酷的新AI框架——Crew AI(Crew:船员,顾名思义: 机组人员人工智能 )。 该框架使代理能够通过 角色扮演 无缝协作和协同工作。可以将其视为协调一支 高效、有凝聚力 的 AI 代理团队,每个代理都有自己 独特的角色和目标。 所以 Crew AI 就是让一群 AI 代理像一个团队一样协同工作。

关键特性

  • 基于角色的代理设计 :使用特定的角色、目标和工具自定义代理。
  • 自主的代理间委派 :代理可以自主委派任务并互相询问,提高问题解决效率。
  • 灵活的任务管理 :定义带有可定制工具的任务,并动态分配给代理。
  • 流程驱动 :目前仅支持顺序任务执行和层级流程,但更复杂的流程如共识和自主流程正在开发中。
  • 保存输出为文件 :将单个任务的输出保存为文件,以便日后使用。
  • 解析输出为Pydantic或Json :将单个任务的输出解析为Pydantic模型或Json。
  • 支持开源模型 :使用Open AI或开源模型运行你的crew,详见连接crewAI到LLMs页面,了解如何配置代理连接到模型,即使是本地运行的模型!
  • picture.image
教程与演示视频

最简单入门教程:

一个例子:CrewAI LLaMa 3:如何创建AI代理来实现新闻机构自动化

利用 Groq 和 Llama 3 API支持Crew AI 以创建 AI 代理。🤖✨ 我们将首先设置数据库并创建 API,然后将这些元素与 Crew AI 集成,为新闻机构开发自定义工具和 AI 代理。

🔥 您将学到什么:为体育新闻设置自己的数据库。开发与数据库交互的 API。在 Crew AI 中创建自定义工具以利用您的 API。为体育领域的研究和新闻构建 AI 代理。

官方演示:股票分析人工智能团队

股票分析人工智能团队: CrewAI 旨在促进角色扮演 AI 代理的协作。在此示例中,这些代理共同提供完整的股票分析和投资建议

  1. 运行脚本 =======

默认使用 GPT-4,因此您需要具备 GPT-4 的访问权限来运行它。

免责声明: 这将使用 GPT-4,除非您更改设置,否则将花费您费用。

  • 配置环境 :复制 .env.example 并设置 Browseless、Serper、SEC-API 和 OpenAI 的环境变量。
  • 安装依赖项 :运行 poetry install --no-root
  • 执行脚本 :运行 python main.py 并输入您的想法。

详细信息与解释

  • 运行脚本 :执行 python main.py 并在提示时输入要分析的公司。脚本将利用 CrewAI 框架来分析公司并生成详细报告。
  • 关键组件
  • ./main.py:主脚本文件。
  • ./stock_analysis_tasks.py:包含任务提示的主要文件。
  • ./stock_analysis_agents.py:包含代理创建的主要文件。
  • ./tools:包含代理使用的工具类。

使用 GPT 3.5

CrewAI 允许您将 llm 参数传递给代理构造函数,使其成为代理的大脑。因此,将代理更改为使用 GPT-3.5 而不是 GPT-4 只需在您希望使用该 LLM 的代理(在 main.py 中)传递该参数。


      
      
          

        from
         langchain
        .
        chat\_models 
        import
         
        ChatOpenAI
          

          

        llm 
        =
         
        ChatOpenAI
        (
        model
        =
        'gpt-3.5'
        )
         
        # 加载 GPT-3.5
          

          

        def
         
        local\_expert
        (
        self
        ):
          

            
        return
         
        Agent
        (
          

              role
        =
        '最佳金融分析师'
        ,
          

              goal
        =
        
 """以您的财务数据和市场趋势分析
   

       给所有客户留下深刻印象"""
 
        ,
          

              backstory
        =
        
 """最有经验的金融分析师,拥有丰富的股票市场分析和
   

       投资策略经验,正在为一个非常重要的客户工作。"""
 
        ,
          

              verbose
        =
        True
        ,
          

              llm
        =
        llm
        ,
         
        # <----- 在这里传递我们的 llm 引用
          

              tools
        =[
          

                
        BrowserTools
        .
        scrape\_and\_summarize\_website
        ,
          

                
        SearchTools
        .
        search\_internet
        ,
          

                
        CalculatorTools
        .
        calculate
        ,
          

                
        SECTools
        .
        search\_10q
        ,
          

                
        SECTools
        .
        search\_10k
          

              
        ]
          

            
        )
      
    
  1. 与 Ollama 结合使用本地模型 ====================

CrewAI 框架支持与本地模型(如 Ollama)的集成,以增强灵活性和定制化。这使您能够利用自己的模型,这对于专门任务或数据隐私问题特别有用。

设置 Ollama

  • 安装 Ollama :确保 Ollama 在您的环境中正确安装。请按照 Ollama 提供的安装指南进行详细说明。
  • 配置 Ollama :设置 Ollama 以使用您的本地模型。您可能需要使用 Modelfile 调整模型,我建议添加 Observation 作为停用词,并调整 top_ptemperature

将 Ollama 与 CrewAI 集成

  • • 实例化 Ollama 模型:创建 Ollama 模型的实例。您可以在实例化期间指定模型和基本 URL。例如:

      
      
          

        from
         langchain
        .
        llms 
        import
         
        Ollama
          

        ollama\_openhermes 
        =
         
        Ollama
        (
        model
        =
        "openhermes"
        )
          

        # 将 Ollama 模型传递给代理:在 CrewAI 框架内创建代理时,您可以将 Ollama 模型作为参数传递给代理构造函数。例如:
          

          

        def
         
        local\_expert
        (
        self
        ):
          

            
        return
         
        Agent
        (
          

              role
        =
        '最佳金融分析师'
        ,
          

              goal
        =
        
 """以您的财务数据和市场趋势分析
   

       给所有客户留下深刻印象"""
 
        ,
          

              backstory
        =
        
 """最有经验的金融分析师,拥有丰富的股票市场分析和
   

       投资策略经验,正在为一个非常重要的客户工作。"""
 
        ,
          

              verbose
        =
        True
        ,
          

              llm
        =
        ollama\_openhermes
        ,
         
        # 在这里传递 Ollama 模型
          

              tools
        =[
          

                
        BrowserTools
        .
        scrape\_and\_summarize\_website
        ,
          

                
        SearchTools
        .
        search\_internet
        ,
          

                
        CalculatorTools
        .
        calculate
        ,
          

                
        SECTools
        .
        search\_10q
        ,
          

                
        SECTools
        .
        search\_10k
          

              
        ]
          

            
        )
      
    
使用本地模型的优势
  • 隐私 :本地模型允许在您自己的基础设施内处理数据,确保数据隐私。
  • 定制化 :您可以根据任务的具体需求定制模型。
  • 性能 :根据您的设置,本地模型可以提供性能优势,特别是在延迟方面。

下面提供官方的 文档介绍、相关资源、部署教程 等,进一步支撑你的行动,以提升本文的帮助力。

官方教程

要开始使用CrewAI,请按照以下简单步骤操作:

1. 安装


      
      
          

        pip install crewai
      
    

如果您希望安装带有可选功能(包括代理额外工具)的‘crewai’包,可以使用以下命令:pip install 'crewai[tools]'。此命令安装基本包并添加需要更多依赖项才能运行的额外组件。


      
      
          

        pip install 
        'crewai[tools]'
      
    

2. 设置你的Crew


      
      
          

        import
         os
          

        from
         crewai 
        import
         
        Agent
        ,
         
        Task
        ,
         
        Crew
        ,
         
        Process
          

        from
         crewai\_tools 
        import
         
        SerperDevTool
          

          

        os
        .
        environ
        [
        "OPENAI\_API\_KEY"
        ]
         
        =
         
        "YOUR\_API\_KEY"
          

        os
        .
        environ
        [
        "SERPER\_API\_KEY"
        ]
         
        =
         
        "Your Key"
         
        # serper.dev API key
          

          

        # 您可以选择通过Ollama使用本地模型。更多信息请参阅https://docs.crewai.com/how-to/LLM-Connections/
          

          

        # os.environ["OPENAI\_API\_BASE"] = 'http://localhost:11434/v1'
          

        # os.environ["OPENAI\_MODEL\_NAME"] ='openhermes'  # 根据可用模型进行调整
          

        # os.environ["OPENAI\_API\_KEY"] ='sk-111111111111111111111111111111111111111111111111'
          

          

        # 您可以传递一个可选的llm属性来指定您想要使用的模型。
          

        # 它可以是通过Ollama / LM Studio的本地模型,或是远程模型
          

        # 如OpenAI、Mistral、Antrophic等(https://docs.crewai.com/how-to/LLM-Connections/)
          

        #
          

        # import os
          

        # os.environ['OPENAI\_MODEL\_NAME'] = 'gpt-3.5-turbo'
          

        #
          

        # 或
          

        #
          

        # from langchain\_openai import ChatOpenAI
          

          

        search\_tool 
        =
         
        SerperDevTool
        ()
          

          

        # 定义具有角色和目标的代理
          

        researcher 
        =
         
        Agent
        (
          

          role
        =
        '高级研究分析师'
        ,
          

          goal
        =
        '发现AI和数据科学的最新发展'
        ,
          

          backstory
        =
        
 """你在一家领先的科技智库工作。
   

   你的专长在于识别新兴趋势。
   

   你擅长解析复杂数据并提出可行的见解。"""
 
        ,
          

          verbose
        =
        True
        ,
          

          allow\_delegation
        =
        False
        ,
          

          
        # 您可以传递一个可选的llm属性来指定您想要使用的模型。
          

          
        # llm=ChatOpenAI(model\_name="gpt-3.5", temperature=0.7),
          

          tools
        =[
        search\_tool
        ]
          

        )
          

        writer 
        =
         
        Agent
        (
          

          role
        =
        '科技内容策划师'
        ,
          

          goal
        =
        '撰写引人入胜的科技进展内容'
        ,
          

          backstory
        =
        
 """你是一位著名的内容策划师,以洞察力和引人入胜的文章而闻名。
   

   你将复杂概念转化为引人入胜的叙述。"""
 
        ,
          

          verbose
        =
        True
        ,
          

          allow\_delegation
        =
        True
          

        )
          

          

        # 为你的代理创建任务
          

        task1 
        =
         
        Task
        (
          

          description
        =
        
 """对2024年AI的最新进展进行全面分析。
   

   识别关键趋势、突破性技术及潜在行业影响。"""
 
        ,
          

          expected\_output
        =
        "要点形式的完整分析报告"
        ,
          

          agent
        =
        researcher
          

        )
          

          

        task2 
        =
         
        Task
        (
          

          description
        =
        
 """利用提供的见解,撰写一篇引人入胜的博客
   

   文章,突出最重要的AI进展。
   

   你的文章应该既信息丰富又易于理解,面向技术精通的观众。
   

   使其听起来很酷,避免使用复杂的词汇以免听起来像AI。"""
 
        ,
          

          expected\_output
        =
        "至少四段的完整博客文章"
        ,
          

          agent
        =
        writer
          

        )
          

          

        # 用顺序流程实例化你的crew
          

        crew 
        =
         
        Crew
        (
          

          agents
        =[
        researcher
        ,
         writer
        ],
          

          tasks
        =[
        task1
        ,
         task2
        ],
          

          verbose
        =
        2
        ,
         
        # 您可以设置为1或2以不同的日志记录级别
          

        )
          

          

        # 让你的crew开始工作吧!
          

        result 
        =
         crew
        .
        kickoff
        ()
          

          

        print
        (
        "######################"
        )
          

        print
        (
        result
        )
      
    

除了顺序流程,您还可以使用层级流程,它会自动分配一个经理给已定义的crew,以通过委派和结果验证来正确协调任务的规划和执行。了解更多关于流程的信息。

快速教程

picture.image

撰写职位描述

查看此示例代码或观看下面的视频:

picture.image

旅行计划

查看此示例代码或观看下面的视频:

picture.image

股票分析

[查看此示例代码](https://github.com/jo

aomdmoura/crewAI-examples/tree/main/stock_analysis)或观看下面的视频:

picture.image

连接你的Crew到模型

CrewAI支持通过多种连接选项使用不同的LLM。默认情况下,你的代理会在查询模型时使用OpenAI API。然而,还有其他多种方式允许你的代理连接到模型。例如,你可以通过Ollama工具配置你的代理使用本地模型。

请参考连接crewAI到LLMs页面,了解如何配置代理连接到模型。

CrewAI的比较

  • Autogen :虽然Autogen在创建能够协作的对话代理方面表现不错,但它缺乏内在的流程概念。在Autogen中,编排代理的交互需要额外的编程,随着任务规模的扩大,这可能变得复杂和繁琐。
  • ChatDev :ChatDev引入了流程的概念到AI代理领域,但其实现相当僵化。ChatDev的自定义能力有限,并不面向生产环境,这可能会阻碍在实际应用中的可扩展性和灵活性。

CrewAI的优势 :CrewAI是以生产为目的构建的。它结合了Autogen的对话代理的灵活性和ChatDev的结构化流程方法,但没有僵化性。CrewAI的流程设计动态且适应性强,能够无缝融入开发和生产工作流中。

贡献

CrewAI是开源的,我们欢迎贡献。如果你想贡献,请:

  • • Fork 仓库。
  • • 为你的特性创建一个新分支。
  • • 添加你的特性或改进。
  • • 发送 pull 请求。
  • • 我们感谢你的输入!

安装依赖项


      
      
          

        poetry lock
          

        poetry install
      
    

虚拟环境


      
      
          

        poetry shell
      
    

Pre-commit hooks


      
      
          

        pre
        -
        commit install
      
    

运行测试


      
      
          

        poetry run pytest
      
    

运行静态类型检查


      
      
          

        poetry run mypy
      
    

打包


      
      
          

        poetry build
      
    

本地安装


      
      
          

        pip install dist
        /*.
        tar
        .
        gz
      
    

参考链接:

[安装教程]https://www.youtube.com/watch?v=Kbq9m-x7gYU

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

picture.image

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

picture.image picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生环境下的日志采集存储分析实践
云原生场景下,日志数据的规模和种类剧增,日志采集、加工、分析的多样性也大大增加。面对这些挑战,火山引擎基于超大规模下的 Kubernetes 日志实践孵化出了一套完整的日志采集、加工、查询、分析、消费的平台。本次主要分享了火山引擎云原生日志平台的相关实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论