代理 AI

CrewAI:为工程师重新设计的人工智能代理

用于编排角色扮演、自主人工智能代理的框架。

2024年1月11日
crewai
分享

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-mindmap

例子

您可以测试示例存储库中的人工智能的不同现实生活示例

代码

视频

快速教程

crewai2

旅行计划

crewai3

库存分析

crewai4

本地开源模型

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")
# 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

来自:

更多文章

Jan是ChatGPT的开源替代品,可在您的计算机上100%离线运行。

2024年1月10日 · ChatGPT AI
一个可以从头开始编写可扩展的应用程序的开发工具,由开发人员监督。
2024年1月9日 · 代码生成 AI
openvoice
OpenVoice是一种多功能的即时语音克隆方法,只需要参考说话者的一个简短的音频剪辑即可复制他们的声音并生成多种语言的语音。
2024年1月8日 · AI
magicanimate
一种基于扩散的人体图像动画框架,旨在增强时间一致性、忠实地保留参考图像并提高动画保真度。
2024年1月4日 · 论文 AI 动画