CrewAI 是用于编排角色扮演、自主人工智能代理的尖端框架。通过促进协作智能,CrewAI 使代理能够无缝协作,处理复杂的任务。
为什么选择 CrewAI?
人工智能协作的力量实在是太大了。CrewAI 旨在使人工智能代理能够承担角色、分享目标并在一个有凝聚力的单元中运作——就像一个运转良好的团队。无论您是要构建智能助理平台、自动化客户服务还是多代理研究团队,CrewAI 都可以为复杂的多代理交互提供支持。
入门
要开始使用 CrewAI,请按照以下简单步骤操作:
安装:
pip install crewai
下面的例子也使用了duckduckgo,所以也要安装它
pip install duckduckgo-search
设置你的团队:
import os from crewai import Agent, Task, Crew, Process os.environ["OPENAI_API_KEY"] = "YOUR KEY" # You can choose to use a local model through Ollama for example. # # from langchain.llms import Ollama # ollama_llm = Ollama(model="openhermes") # Install duckduckgo-search for this example: # !pip install -U duckduckgo-search from langchain.tools import DuckDuckGoSearchRun search_tool = DuckDuckGoSearchRun() # Define your agents with roles and goals researcher = Agent( role='Senior Research Analyst', goal='Uncover cutting-edge developments in AI and data science', backstory="""You work at a leading tech think tank. Your expertise lies in identifying emerging trends. You have a knack for dissecting complex data and presenting actionable insights.""", verbose=True, allow_delegation=False, tools=[search_tool] # You can pass an optional llm attribute specifying what mode you wanna use. # It can be a local model through Ollama / LM Studio or a remote # model like OpenAI, Mistral, Antrophic of others (https://python.langchain.com/docs/integrations/llms/) # # Examples: # llm=ollama_llm # was defined above in the file # llm=ChatOpenAI(model_name="gpt-3.5", temperature=0.7) ) writer = Agent( role='Tech Content Strategist', goal='Craft compelling content on tech advancements', backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles. You transform complex concepts into compelling narratives.""", verbose=True, allow_delegation=True, # (optional) llm=ollama_llm ) # Create tasks for your agents task1 = Task( description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024. Identify key trends, breakthrough technologies, and potential industry impacts. Your final answer MUST be a full analysis report""", agent=researcher ) task2 = Task( description="""Using the insights provided, develop an engaging blog post that highlights the most significant AI advancements. Your post should be informative yet accessible, catering to a tech-savvy audience. Make it sound cool, avoid complex words so it doesn't sound like AI. Your final answer MUST be the full blog post of at least 4 paragraphs.""", agent=writer ) # Instantiate your crew with a sequential process crew = Crew( agents=[researcher, writer], tasks=[task1, task2], verbose=2, # You can set it to 1 or 2 to different logging levels ) # Get your crew to work! result = crew.kickoff() print("######################") print(result)
目前唯一支持的进程是Process.sequential
,其中一个任务在另一个任务之后执行,并且其中一个任务的结果作为额外内容传递到下一个任务中。
主要特性
- 基于角色的代理设计:定制具有特定角色、目标和工具的代理。
- 代理间自主委派:代理可以自主委派任务并相互查询,提高解决问题的效率。
- 灵活的任务管理:使用可定制的工具定义任务并将其动态分配给代理。
- 流程驱动:目前仅支持
sequential
任务执行,正在实现更复杂的流程,例如共识和分层。
例子
您可以测试示例存储库中的人工智能的不同现实生活示例
代码
视频
快速教程
旅行计划
库存分析
本地开源模型
CrewAI 支持通过Ollama等工具与本地模型集成,以增强灵活性和定制性。这使您可以利用自己的模型,这对于特殊任务或数据隐私问题特别有用。
设置 Ollama
- 安装 Ollama:确保 Ollama 已正确安装在您的环境中。请按照 Ollama 提供的安装指南获取详细说明。
- 配置 Ollama:设置 Ollama 以与您的本地模型配合使用。您可能需要使用 Modelfile 调整模型。我建议添加
Observation
作为停用词并使用top_p
和temperature
。
将 Ollama 与 CrewAI 集成
- 实例化 Ollama 模型:创建 Ollama 模型的实例。您可以在实例化期间指定模型和基本 URL。例如:
from langchain.llms import Ollama ollama_openhermes = Ollama(model="openhermes") # Pass Ollama Model to Agents: When creating your agents within the CrewAI framework, you can pass the Ollama model as an argument to the Agent constructor. For instance: local_expert = Agent( role='Local Expert at this city', goal='Provide the BEST insights about the selected city', backstory="""A knowledgeable local guide with extensive information about the city, it's attractions and customs""", tools=[ SearchTools.search_internet, BrowserTools.scrape_and_summarize_website, ], llm=ollama_openhermes, # Ollama model passed here verbose=True )
CrewAI 和其他产品的比较
- Autogen:虽然 Autogen 擅长创建能够协同工作的会话代理,但它缺乏固有的流程概念。在 Autogen 中,编排代理的交互需要额外的编程,随着任务规模的增长,这可能会变得复杂和繁琐。
- ChatDev:ChatDev 将流程的概念引入了 AI 代理领域,但其实现相当僵化。ChatDev 中的自定义是有限的,并且不适合生产环境,这可能会阻碍实际应用程序中的可扩展性和灵活性。
CrewAI 的优势:CrewAI 的构建以生产为中心。它提供了 Autogen 对话代理的灵活性和 ChatDev 的结构化流程方法,但没有僵化。CrewAI 的流程设计为动态且适应性强,可无缝融入开发和生产工作流程。
贡献
CrewAI 是开源的,欢迎贡献。如果您想做出贡献,请:
- 分叉存储库。
- 为您的功能创建一个新分支。
- 添加您的功能或改进。
- 发送拉取请求。
- 感谢您的意见!
安装依赖项
poetry lock poetry install
虚拟环境
poetry shell
预提交挂钩
pre-commit install
运行测试
poetry run pytest
包装
poetry build
本地安装
pip install dist/*.tar.gz
来自: