🤖 AI

[CrewAI] CrewAI 시작하기

heywantodo 2024. 11. 19. 09:35
728x90
반응형

[CrewAI] CrewAI 시작하기

아래 포스팅에서 CrewAI에 대한 간략한 설명과, 설치 방법에 대해서 알아보았다.

리포터를 생성하기 위한 리서치 크루를 생성하는 과정을 이어서 진행해보자 😚

 

[CrewAI] CrewAI란?

[CrewAI] CrewAI란?❗ 해당 포스팅에선 CrewAI Open Source Platform에 대해 알아본다. CrewAI?CrewAI는 롤플레잉, 자율 AI 에이전트를 사용하기 위한 최첨단 파이썬 프레임워크다.역할을 정해 상호작용함으로

heywantodo.tistory.com

 

Crew 생성하기

다음 CLI 명령어로 crew_test라는 크루를 생성해준다.

아래 사진과 같이 사용할 모델과 API KEY를 입력해주면 앞선 포스팅에서 말했던 폴더 구조가 생성된다. 

crewai create crew crew_test

 

CrewAI의 핵심 요소

Crewai에는 Agent, Task, Crew 크게 세개의 핵심 요소들이 있다. 각각의 요소들에 대해 알아보자.

  • 🤖 Agent : Task를 수행하고, 결정을 내리고, 다른 에이전트들과 소통하는 역할을 한다. 에이전트는 Researcher, Writer와 같은 다양한 역할을 할 수 있다. 
  • 🧾 Task : 에이전트가 실행하는 특정 작업을 의미한다. 에이전트는 해당 작업을 수행하여 목표를 달성한다. 
  • 👨‍👩‍👧‍👧Crew : 일련의 작업을 달성하기 위한 에이전트의 협력 그룹을 나타낸다. 

에이전트는 크루 내에서 할당된 작업을 수행하며, 필요에 따라 다른 에이전트와 소통하거나 협력한다.

작업은 크루에 의해 관리되며, 각 작업은 특정 에이전트에게 할당된다. 크루는 전체 작업의 흐름과 에이전트 간의 협업을 조율하여 목표를 달성한다.

 

코드 작성하기

간단하게 최근의 AI 뉴스를 수집하고 요약하는 Agent 모델을 만들어서 실행시켜보자. 

에이전트 정의 -> 작업 정의 -> 크루 구성의 순서로 진행한다.

 

1. 에이전트 정의 (agents.yaml)

뉴스 데이터를 수집하고, 수집된 데이터를 요약하는 에이전트를 생성한다.

news_collector:
  role: >
    뉴스 수집가
  goal: >
    인터넷에서 최신 AI 뉴스를 검색하고 데이터를 수집합니다.
  backstory: >
    빠르고 정확하게 정보를 수집하는 데 특화된 AI 에이전트입니다.

news_summarizer:
  role: >
    뉴스 요약가
  goal: >
    수집된 뉴스를 간결하고 명확하게 요약합니다.
  backstory: >
    대량의 텍스트 데이터를 분석하고 핵심 내용을 도출하는 데 능숙한 AI입니다.

 

2. 작업 정의 (task.yaml)

에이전트가 뉴스 데이터를 수집하고, 수집된 데이터를 요약하는 작업을 생성한다.

collector_ai_news:
  description: >
    최신 AI 관련 뉴스를 수집합니다.
  expected_output: >
    AI 관련 뉴스 기사들의 링크와 간략한 설명
  agent: news_collector

summarizer_ai_news:
  description: >
    수집된 뉴스를 요약하여 중요한 정보만 제공합니다.
  expected_output: >
    각 뉴스 기사에 대한 간략한 요약과 주요 키워드.
  agent: news_summarizer

 

3. Crew 구성 (crew.py)

정의된 에이전트와 작업을 조합하여 크루를 생성한다.

from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task

@CrewBase
class CrewTest():
	"""CrewTest crew"""

	agents_config = 'config/agents.yaml'
	tasks_config = 'config/tasks.yaml'

	@agent
	def news_collector(self) -> Agent:
		return Agent(
			config=self.agents_config['news_collector'],
			# tools=[MyCustomTool()], 
            # Example of custom tool, loaded on the beginning of file
			verbose=True
		)

	@agent
	def news_summarizer(self) -> Agent:
		return Agent(
			config=self.agents_config['news_summarizer'],
			verbose=True
		)

	@task
	def collector_ai_news(self) -> Task:
		return Task(
			config=self.tasks_config['collector_ai_news'],
		)

	@task
	def summarizer_ai_news(self) -> Task:
		return Task(
			config=self.tasks_config['summarizer_ai_news'],
			output_file='summaries.md'
		)

	@crew
	def crew(self) -> Crew:
		"""Creates the CrewTest crew"""
		return Crew(
        	# Automatically created by the @agent decorator
			agents=self.agents, 
            # Automatically created by the @task decorator
			tasks=self.tasks, 
			process=Process.sequential,
			verbose=True,
		)

 

4. 실행

crewai 프로젝트 루트 폴더에서 다음 명령어를 실행하면 아래 사진과같이 crew가 잘 실행되는 모습을 확인할 수 있다.

crewai run

👍

💡 전체적인 흐름 알아보기
1. main.py의 run() 함수가 호출된다.
2. CrewTest 클래스가 agents.yaml과 tasks.yaml 에서 설정을 로드하여 각 작업이 순차적으로 실행된다.
3. collect_ai_news 작업 --> news_collector 에이전트가 최신 AI 뉴스를 수집한다.
4. summarize_ai_news 작업 --> news_summarizer 에이전트가 수집된 뉴스를 요약한다.
5. 뉴스 요약 결과가 콘솔 출력 및 지정된 파일(summaries.md)에 저장된다.

 

728x90
반응형