복잡한 의사결정 과정에서 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 키
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=(
"2025년 AI 분야의 최신 발전에 대한 종합적인 분석을 수행한다. "
"주요 트렌드, 획기적인 기술, 잠재적인 산업 영향을 파악한다. "
"분석 결과를 상세한 보고서로 작성한다. "
"최종 답변을 확정하기 전에 사람에게 초안을 확인받는다."
),
expected_output='2025년 AI 최신 발전에 대한 종합 보고서, 모든 내용을 빠짐없이 포함',
agent=researcher,
human_input=True
)
task2 = Task(
description=(
"연구 분석가의 보고서를 바탕으로 가장 중요한 AI 발전을 강조하는 매력적인 블로그 글을 작성한다. "
"글은 정보 제공적이면서도 접근 가능하도록 작성하며, 기술에 익숙한 독자를 대상으로 한다. "
"이러한 혁신의 본질과 미래에 대한 함의를 담은 이야기를 만든다."
),
expected_output='2025년 AI 최신 발전에 관한 3단락의 매력적인 블로그 글, 마크다운 형식으로 작성',
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)