crewai学习

多智能体CREWAI研究

安装

pip install 'crewai[tools]'

升级

pip install --upgrade crewai crewai-tools

基本介绍

CrewAI 使您能够创建 AI 团队,其中每个代理都有特定的角色、工具和目标,共同完成复杂的任务。

可以将其视为组建您的梦之队 - 每个成员(代理)都拥有独特的技能和专业知识,无缝合作以实现您的目标。

组件介绍

Agent:

执行特定任务
根据其角色和目标做出决策
使用工具来实现目标
与其他代理沟通和协作
保留互动记忆
在允许的情况下委派任务

示例:

research_agent = Agent(
    role="Research Analyst",
    goal="Find and summarize information about specific topics",
    backstory="You are an experienced researcher with attention to detail",
    tools=[SerperDevTool()],
    verbose=True  # Enable logging for debugging
)

Task:

在CrewAI框架中,Task是由 完成的特定任务Agent。
任务提供执行所需的所有必要细节,例如描述、负责的代理、所需的工具等等,从而促进各种行动的复杂性。
CrewAI 中的任务可以协作,需要多个代理共同协作。这通过任务属性进行管理,并由 Crew 的流程进行协调,从而增强团队合作和效率。

任务可以通过两种方式执行:

顺序:任务按照定义顺序执行
层次化:根据代理的角色和专业知识为其分配任务

t = Task(
    description='诗词情节生动,多维度进行描写,风格是搞笑的,并把文件保存在我的电脑上',
    expected_output='用markdown的格式进行输出',
    agent=plan,
    verbose=True,
    tools=[save_content]
)

Crews:
crewAI 中的 crew 代表一组协作的代理,它们共同完成一组任务。每个 crew 都定义了任务执行、代理协作和整体工作流程的策略。

crew = Crew(
    agents=[agent1, agent2],
    tasks=[task1, task2],
    process=Process.sequential  # 或者 Process.hierarchical 
)

启动

kickoff():按照定义的工艺流程,开始执行流程。
kickoff_for_each():为每个代理单独执行任务。
kickoff_async():异步启动工作流。
kickoff_for_each_async():以异步方式为每个代理单独执行任务。

基本使用示例

让大模型作诗并把数据保存在本地

from crewai import Agent, Task, Crew, LLM, tools, process
import dotenv
import os

# 加载环境变量
dotenv.load_dotenv()


@tools.tool("save_content")
def save_content(content: str) -> str:
    """
    保存传入的文本内容到本地。
    :param content: 诗词文本的内容,字符串格式。
    :return: 文件保存成功的提示信息。
    """
    if not content:
        raise ValueError("content 参数不能为空,请提供有效的内容。")

    output_path = 'output.txt'
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(content)
    return f'文件已保存到本地:{output_path}'


# 实例化 LLM
llm = LLM(
    model='deepseek-chat',
    api_key=os.getenv('OPENAI_API_KEY'),
    base_url='https://api.deepseek.com/v1'
)

# 创建 Agent
plan = Agent(
    role='你是一个古诗词家',
    goal='创作一首关于{topic}的七言绝句,要求有创意,并把文件保存在我的电脑上',
    backstory='你是一个古诗词家,擅长创作七言绝句,提供适合10-18岁阅读的内容,要求有创意。',
    verbose=True,
    llm=llm,
    tools=[save_content]
)

# 创建 Task
t = Task(
    description='诗词情节生动,多维度进行描写,风格是搞笑的,并把文件保存在我的电脑上',
    expected_output='用markdown的格式进行输出',
    agent=plan,
    verbose=True,
    tools=[save_content]
)

# 创建 Crew
c = Crew(agent=[plan], tasks=[t], verbose=True, process=process.Process.sequential)

# 执行任务
result = c.kickoff(inputs={'topic': '可爱小猫'})

# 输出结果
print(result)

深入示例

  1. 创建项目,会生成一个项目目录
crewai create crew my_project_name
cd my_project_name
# 使用清华源,不然会巨慢
crewai install -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 配置config目录下的文件
    主要就是角色,目标,背景
agents.yaml
tasks.yaml
  1. 修改crew.py文件

启动:

crewai run

后续再深入讲解…

你可能感兴趣的:(python)