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)
crewai create crew my_project_name
cd my_project_name
# 使用清华源,不然会巨慢
crewai install -i https://pypi.tuna.tsinghua.edu.cn/simple
agents.yaml
tasks.yaml
启动:
crewai run
后续再深入讲解…