人类输入在代理执行中的应用¶
人类输入在多个代理执行场景中至关重要,允许代理在必要时请求额外信息或澄清。此功能在复杂决策过程中或代理需要更多细节以有效完成任务时尤其有用。
在CrewAI中使用人类输入¶
要将人类输入集成到代理执行中,请在任务定义中设置human_input标志。启用后,代理会在提供最终答案之前提示用户输入。此输入可以提供额外上下文、澄清歧义或验证代理的输出。
示例:¶
import os
from crewai import Agent, Task, Crew
from crewai_tools import SerperDevTool
os.environ["SERPER_API_KEY"] = "Your Key" # serper.dev API key
os.environ["OPENAI_API_KEY"] = "Your Key"
# 加载工具
search_tool = SerperDevTool()
# 定义具有角色、目标、工具和附加属性的代理
researcher = Agent(
role='高级研究分析师',
goal='揭示AI和数据科学的前沿发展',
backstory=(
"你是领先科技智库的高级研究分析师。"
"你的专长在于识别AI和数据科学中的新兴趋势和技术。"
"你擅长剖析复杂数据并提出可操作见解。"
),
verbose=True,
allow_delegation=False,
tools=[search_tool]
)
writer = Agent(
role='科技内容策略师',
goal='撰写关于科技进展的引人入胜的内容',
backstory=(
"你是一位知名的科技内容策略师,以你对技术和创新的深刻见解和引人入胜的文章而闻名。"
"凭借对科技行业的深入了解,你将复杂概念转化为引人入胜的叙述。"
),
verbose=True,
allow_delegation=True,
tools=[search_tool],
cache=False, # 为此代理禁用缓存
)
# 为你的代理创建任务
task1 = Task(
description=(
"对2024年AI的最新进展进行全面分析。"
"识别关键趋势、突破性技术及其对行业的潜在影响。"
"将你的发现汇编成一份详细的报告。"
"在最终确定答案之前,确保与人类检查草稿是否良好。"
),
expected_output='一份关于2024年AI最新进展的全面完整报告,不要遗漏任何内容',
agent=researcher,
human_input=True
)
task2 = Task(
description=(
"利用研究人员的报告中的见解,撰写一篇引人入胜的博客文章,突出最重要的AI进展。"
"你的文章应既信息丰富又易于理解,适合科技爱好者读者。"
"力求以叙事方式捕捉这些突破的本质及其对未来的影响。"
),
expected_output='一篇关于2024年AI最新进展的引人入胜的3段式Markdown格式博客文章',
agent=writer,
human_input=True
)
# 使用顺序流程实例化你的团队
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=True,
memory=True,
planning=True # 为团队启用规划功能
)
# 让你的团队开始工作!
result = crew.kickoff()
print("######################")
print(result)