? ? ? ?随着大模型技术的发展,AI Agent正在成为大模型游戏规则的改变者,它可以帮助用户分解任务、规划任务和执行任务,这就是CrewAI的独特之处。CrewAI是AutoGEN的顶级替代品,为您提供轻松组建人工智能Agent团队执行自动化任务的能力。
? ? ? ?在本文中,将介绍什么是CrewAi,架构设计,Autogen、ChatDev和Crew Ai之间的差异,以及如何使用Crew Ai、Langchain和Ollama的Solar或Hermes Power来构建超级Ai Agent。
? ? ? ?Crew AI是一个优秀的框架,旨在协调角色扮演、自主的AI代理,使这些代理能够高效地协作和解决复杂任务。
CrewAi的主要特点包括:
基于角色的代理设计:CrewAi允许您自定义具有特定角色、目标和工具的人工智能AI代理;
自主代理间委托:代理可以自主委托任务并相互协商,提高解决问题的效率;
灵活的任务管理:用户可以使用自定义工具定义任务,并将其动态分配给代理;
本地模型集成:CrewAI可以通过Ollama等工具与本地模型集成,用于特殊任务或数据隐私考虑;
基于流程的操作:目前支持按顺序执行操作,并计划在未来支持更复杂的流程,如共识和分层流程。
AutoGen:
? ? ? 虽然Autogen擅长创建会话代理,但它缺乏固有的流程概念。在Autogen中,协调代理的交互需要额外的编程,随着任务规模的增长,编程可能会变得复杂和繁琐。
ChatDev:
? ? ? ChatDev将过程的概念引入了人工智能代理领域,但其实现相当僵化。ChatDev中的定制是有限的,不适合生产环境,这可能会阻碍实际场景应用程序的可扩展性和灵活性。
CrewAI:
? ? ? CrewAI在构建时就考虑到了生产环境,它既具有Autogen对话代理的灵活性,也具有ChatDev的体系化过程方法。CrewAI是柔性的,流程设计是动态的且强大,能够无缝适应开发和生产工作流程。
我们首先下载Ollama.ai,下载链接:https://ollama.ai/。
选择合适的操作系统Ollama版本
您可以下载适用于Mac和Linux的Ollama。Windows版本即将推出
将Ollama移动到应用程序
? ? ? ?将Ollama拖放到Applications文件夹中,此步骤仅适用于Mac用户。完成此步骤后,Ollama将完全安装在您的设备上。单击“下一步”按钮。
? ? ? ?现在我们需要安装要在本地使用的LLM,命令如下:
Ollama run Solar
? ? ? ?Ollama现在将下载Solar,这可能需要几分钟的时间,具体取决于您的网速。一旦安装好,你就可以开始与它交谈了。
创建文件夹
? ? ? ? 让我们创建一个名为crewai的文件夹并导航到它。
? ? ? ?我们用“python2.11-m venv crew”创建了一个虚拟环境,并用“source crew/bin/activate”激活它,然后安装“pip-install crewai”
? ? ? ?在开始之前,让我们安装所需的库。创建一个名为requirements.txt的文件,并在下面写入依赖项。
unstructured
langchain
Jinja2>=3.1.2
click>=7.0
duckduckgo-search
? ? ? ? ?之后,只需在VS Code中打开终端或者在打开Mac终端,并运行以下命令:
pip install -r requirements.txt
? ? ? 我们将从crewai导入Agent、Task、Crew和Process,然后从langchain.tools导入DuckDuckGoSearchRun来收集web信息。
? ? ? ?DuckDuckGoSearchRun被创建并存储在变量search_tool中
? ? ? ? 我们从langchain.lms导入ollama来加载一个模型,这里使用Solar和Openhermes进行实验
from crewai import Agent, Task, Crew, Process
import os
?
from langchain.tools import DuckDuckGoSearchRun
search_tool = DuckDuckGoSearchRun()
from langchain.llms import Ollama
ollama_openhermes = Ollama(model="openhermes")
ollama_solar = Ollama(model="Solar")
让我们创建一个代理来执行任务、做出决策并与其他代理通信。
role:表明其主要功能是进行研究。
goal:研究人员的目标是找到发展特定YouTube频道并增加其订户数量的方法。
backstory:协助研究活动并简化某些任务。
tools:代理可用的工具列表包括search_tool,
verbose:设置为True,这通常意味着代理将提供详细的日志、输出或解释
llm:这代表“大型语言模型”,在这种情况下,ollama_openhermes作为代理使用的模型传递。
allow_delegation:设置为False,表示不允许此代理将其任务委派给其他代理或进程
researcher = Agent(
role='Researcher',
goal='Research methods to grow this channel Gao Dalie (高達烈) on youtube and get more subscribers',
backstory='You are an AI research assistant',
tools=[search_tool],
verbose=True,
llm=ollama_openhermes, # Ollama model passed here
allow_delegation=False
)
? ? ? ?作为内容策略师的Agent,其目标是撰写关于YouTube增长渠道的有趣博客文章。它可以将撰写博客文章的任务委派给代理
writer = Agent(
role='Writer',
goal='Write compelling and engaging reasons as to why someone should join Gao Dalie (高達烈) youtube channel',
backstory='You are an AI master mind capable of growing any youtube channel',
verbose=True,
llm=ollama_openhermes, # Ollama model passed here
allow_delegation=False
)
? ? ? 任务1和任务2被分配给一名“研究人员”Agent,负责调查“Gao Dalie (高達烈)”YouTube频道,并找到可靠的方法来生成一个频道。
? ? ? ?任务3被分配给一名“作家”Agent,为“Gao Dalie (高達烈)”编制一份行动清单来实现频道生成。
task1 = Task(description='Investigate Gao Dalie (高達烈) Youtube channel', agent=researcher)
task2 = Task(description='Investigate sure fire ways to grow a channel', agent=researcher)
?
task3 = Task(description='Write a list of tasks Gao Dalie (高達烈) must do to grow his channel', agent=writer)
Crew:定义以研究人员和作家为成员的团队。
Process.sequential:使用按顺序执行任务的流程。上一个任务的结果将作为附加内容传递给下一个任务。
crew.kickoff():命令crew开始工作。
crew = Crew(
agents=[researcher, writer],
tasks = [task1,task2,task3],
verbose=2,
process=Process.sequential
)
?
result = crew.kickoff()
? ? ? crew运行结束时会输出结果,结果是一条简单的分界线和crew的执行结果。
Openherms
下面是Openhermes作为作家和Solar作为研究人员的运行结果:
Solar
? ? ? ?Openhermes将扮演研究员的角色,Solor将扮演作家的角色,这一角色的变化将展示不同模型如何适应不同的生成过程。
? ? ? ?CrewAI不仅是解决人工智能协作问题的有效工具,而且重塑了人类与人工智能之间的关系。
? ? ? ?这将是人工智能助手的能力得到充分发挥,促进人工智能在各行各业的广泛应用。随着CrewAI技术的成熟,人工智能将成为企业协同工作的重要力量。
[1]?https://pub.towardsai.net/crewai-solor-hermes-langchain-ollama-super-ai-agent-0ee348404428
[2]?https://github.com/joaomdmoura/crewAI
[3]?https://arxiv.org/abs/2312.15166
[4]?https://huggingface.co/teknium/OpenHermes-2.5-Mistral-7B
[5]?https://quickaitutorial.com/