728x90
[CrewAI] CrewAI 시작하기
아래 포스팅에서 CrewAI에 대한 간략한 설명과, 설치 방법에 대해서 알아보았다.
리포터를 생성하기 위한 리서치 크루를 생성하는 과정을 이어서 진행해보자 😚
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)에 저장된다.
반응형
'🤖 AI' 카테고리의 다른 글
[CrewAI] CrewAI란? (0) | 2024.11.18 |
---|---|
[LLM] 체인(Chains) - 문서 체인 (0) | 2024.07.10 |
[LLM] 체인(Chains) - 대화형 체인 (0) | 2024.07.09 |