跳到主要内容

人类输入在执行中的应用

在多种执行场景中,人类输入对于代理至关重要,使代理能够在必要时请求额外信息或澄清问题。这一特性在复杂的决策过程中尤其有用,或者当代理需要更多细节来有效地完成任务时。

在 CrewAI 中使用人类输入

要将人类输入整合到代理执行中,需要在任务定义中设置 human_input 标志。启用后,代理会在提供最终答案之前提示用户输入。这种输入可以提供额外的上下文、澄清模糊之处,或验证代理的输出。

示例:

pip install crewai
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='发现人工智能和数据科学的前沿发展',
backstory=(
"您是一家领先科技智库的高级研究分析师。"
"您擅长发现人工智能和数据科学领域的新趋势和技术。"
"您善于分析复杂数据并提供可操作的见解。"
),
verbose=True,
allow_delegation=False,
tools=[search_tool],
max_rpm=100
)
writer = Agent(
role='科技内容策略师',
goal='撰写关于科技进步的引人入胜的内容',
backstory=(
"您是知名的科技内容策略师,以对科技和创新的深刻见解和引人入胜的文章而闻名。"
"凭借对科技行业的深刻理解,您将复杂概念转化为引人入胜的叙述。"
),
verbose=True,
allow_delegation=True,
tools=[search_tool],
cache=False, # 为该代理禁用缓存
)

# 为代理创建任务
task1 = Task(
description=(
"对 2024 年人工智能领域的最新进展进行全面分析。"
"识别关键趋势、突破性技术和潜在的行业影响。"
"将您的研究结果编制成详细报告。"
"确保在最终确定答案之前与人类核对草稿是否合适。"
),
expected_output='一份关于 2024 年最新人工智能进展的全面报告,不遗漏任何细节',
agent=researcher,
human_input=True,
)

task2 = Task(
description=(
"利用研究员报告中的见解,撰写一篇引人入胜的博客文章,重点突出最重要的人工智能进展。"
"您的文章应既具信息性又易于理解,迎合懂科技的受众。"
"力求以叙述方式捕捉这些突破性进展的本质及其对未来的影响。"
),
expected_output='一篇引人入胜的、以 Markdown 格式排版的关于 2024 年最新人工智能进展的 3 段博客文章',
agent=writer
)

# 使用顺序流程实例化您的团队
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=2
)

# 让您的团队开始工作!
result = crew.kickoff()

print("######################")
print(result)