mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
391 lines
17 KiB
Plaintext
391 lines
17 KiB
Plaintext
---
|
|
title: 첫 번째 크루 만들기
|
|
description: 복잡한 문제를 함께 해결할 수 있는 협업 AI 팀을 만드는 단계별 튜토리얼입니다.
|
|
icon: users-gear
|
|
---
|
|
|
|
## 협업 AI의 힘을 발휘하기
|
|
|
|
여러 AI 에이전트가 각자의 전문성을 바탕으로 원활하게 협력하며 복잡한 문제를 해결한다고 상상해 보세요. 각자 고유한 기술을 발휘해 공동의 목표를 달성합니다. 이것이 바로 CrewAI의 힘입니다. CrewAI 프레임워크를 통해 단일 AI로는 달성할 수 없는 과업을 협업 AI 시스템으로 실현할 수 있습니다.
|
|
|
|
이 가이드에서는 연구 크루를 만들어 주제를 조사 및 분석하고, 종합적인 보고서를 작성하는 과정을 안내합니다. 이 실용적인 예시는 AI 에이전트들이 어떻게 협력하여 복잡한 작업을 수행할 수 있는지 보여 주지만, CrewAI로 실현할 수 있는 가능성의 시작에 불과합니다.
|
|
|
|
### 무엇을 만들고 배우게 될까요
|
|
|
|
이 가이드를 마치면 다음을 할 수 있게 됩니다:
|
|
|
|
1. **특화된 AI 연구팀 조직**: 각기 다른 역할과 책임을 가진 연구팀을 만듭니다
|
|
2. **여러 AI 에이전트 간의 협업 조율**
|
|
3. **정보 수집, 분석, 보고서 생성을 포함한 복잡한 workflow 자동화**
|
|
4. **더 야심찬 프로젝트에도 적용할 수 있는 기초 역량 구축**
|
|
|
|
이 가이드에서는 간단한 research crew를 만들지만, 동일한 패턴과 기법을 활용하여 다음과 같은 훨씬 더 정교한 팀도 만들 수 있습니다:
|
|
|
|
- 전문 writer, editor, fact-checker가 참여하는 다단계 콘텐츠 생성
|
|
- 단계별 지원 에이전트가 있는 복잡한 고객 서비스 시스템
|
|
- 데이터 수집, 시각화, 인사이트 생성까지 하는 자율 business analyst
|
|
- 아이디어 구상, 디자인, 구현 계획까지 진행하는 product development 팀
|
|
|
|
이제 여러분의 첫 crew를 만들어 봅시다!
|
|
|
|
### 필수 조건
|
|
|
|
시작하기 전에 다음을 확인하세요:
|
|
|
|
1. [설치 가이드](/ko/installation)를 참고하여 CrewAI를 설치했는지 확인하세요.
|
|
2. [LLM 설정 가이드](/ko/concepts/llms#setting-up-your-llm)를 참고하여 환경에 LLM API 키를 설정했는지 확인하세요.
|
|
3. Python에 대한 기본적인 이해
|
|
|
|
## 1단계: 새로운 CrewAI 프로젝트 생성
|
|
|
|
먼저, CLI를 사용하여 새로운 CrewAI 프로젝트를 생성해봅시다. 이 명령어는 필요한 모든 파일을 포함한 전체 프로젝트 구조를 설정해 주어, 보일러플레이트 코드를 설정하는 대신 에이전트와 그들의 작업 정의에 집중할 수 있습니다.
|
|
|
|
```bash
|
|
crewai create crew research_crew
|
|
cd research_crew
|
|
```
|
|
|
|
이렇게 하면 crew에 필요한 기본 구조를 갖춘 프로젝트가 생성됩니다. CLI는 다음을 자동으로 생성합니다:
|
|
|
|
- 필요한 파일이 포함된 프로젝트 디렉터리
|
|
- 에이전트와 작업에 대한 구성 파일
|
|
- 기본 crew 구현
|
|
- crew를 실행하는 메인 스크립트
|
|
|
|
<Frame caption="CrewAI 프레임워크 개요">
|
|
<img src="/images/crews.png" alt="CrewAI Framework Overview" />
|
|
</Frame>
|
|
|
|
## 2단계: 프로젝트 구조 살펴보기
|
|
|
|
CLI가 생성한 프로젝트 구조를 이해하는 시간을 가져봅시다. CrewAI는 Python 프로젝트의 모범 사례를 따르므로, crew가 더 복잡해질수록 코드를 쉽게 유지 관리하고 확장할 수 있습니다.
|
|
|
|
```
|
|
research_crew/
|
|
├── .gitignore
|
|
├── pyproject.toml
|
|
├── README.md
|
|
├── .env
|
|
└── src/
|
|
└── research_crew/
|
|
├── __init__.py
|
|
├── main.py
|
|
├── crew.py
|
|
├── tools/
|
|
│ ├── custom_tool.py
|
|
│ └── __init__.py
|
|
└── config/
|
|
├── agents.yaml
|
|
└── tasks.yaml
|
|
```
|
|
|
|
이 구조는 Python 프로젝트의 모범 사례를 따르며, 코드를 체계적으로 구성할 수 있도록 해줍니다. 설정 파일(YAML)과 구현 코드(Python)의 분리로 인해, 기본 코드를 변경하지 않고도 crew의 동작을 쉽게 수정할 수 있습니다.
|
|
|
|
## 3단계: 에이전트 구성하기
|
|
|
|
이제 재미있는 단계가 시작됩니다 - 여러분의 AI 에이전트를 정의하는 것입니다! CrewAI에서 에이전트는 특정 역할, 목표 및 배경을 가진 전문화된 엔터티로, 이들이 어떻게 행동할지를 결정합니다. 각각 고유한 성격과 목적을 지닌 연극의 등장인물로 생각하면 됩니다.
|
|
|
|
우리의 리서치 crew를 위해 두 명의 에이전트를 만들겠습니다:
|
|
1. 정보를 찾아 정리하는 데 뛰어난 **리서처**
|
|
2. 연구 결과를 해석하고 통찰력 있는 보고서를 작성할 수 있는 **애널리스트**
|
|
|
|
이러한 전문화된 에이전트를 정의하기 위해 `agents.yaml` 파일을 수정해봅시다. `llm` 항목은 사용 중인 제공업체에 맞게 설정하세요.
|
|
|
|
```yaml
|
|
# src/research_crew/config/agents.yaml
|
|
researcher:
|
|
role: >
|
|
Senior Research Specialist for {topic}
|
|
goal: >
|
|
Find comprehensive and accurate information about {topic}
|
|
with a focus on recent developments and key insights
|
|
backstory: >
|
|
You are an experienced research specialist with a talent for
|
|
finding relevant information from various sources. You excel at
|
|
organizing information in a clear and structured manner, making
|
|
complex topics accessible to others.
|
|
llm: provider/model-id # e.g. openai/gpt-4o, google/gemini-2.0-flash, anthropic/claude...
|
|
|
|
analyst:
|
|
role: >
|
|
Data Analyst and Report Writer for {topic}
|
|
goal: >
|
|
Analyze research findings and create a comprehensive, well-structured
|
|
report that presents insights in a clear and engaging way
|
|
backstory: >
|
|
You are a skilled analyst with a background in data interpretation
|
|
and technical writing. You have a talent for identifying patterns
|
|
and extracting meaningful insights from research data, then
|
|
communicating those insights effectively through well-crafted reports.
|
|
llm: provider/model-id # e.g. openai/gpt-4o, google/gemini-2.0-flash, anthropic/claude...
|
|
```
|
|
|
|
각 에이전트가 고유한 역할, 목표, 그리고 배경을 가지고 있다는 점에 주목하세요. 이 요소들은 단순한 설명 그 이상으로, 실제로 에이전트가 자신의 과업을 어떻게 접근하는지에 적극적으로 영향을 미칩니다. 이러한 부분을 신중하게 설계함으로써 서로 보완하는 전문적인 역량과 관점을 가진 에이전트를 만들 수 있습니다.
|
|
|
|
## 4단계: 작업 정의하기
|
|
|
|
이제 agent들을 정의했으니, 이들에게 수행할 구체적인 작업을 지정해야 합니다. CrewAI의 작업(task)은 agent가 수행할 구체적인 업무를 나타내며, 자세한 지침과 예상 결과물이 포함됩니다.
|
|
|
|
연구 crew를 위해 두 가지 주요 작업을 정의하겠습니다:
|
|
1. 포괄적인 정보 수집을 위한 **연구 작업**
|
|
2. 인사이트 있는 보고서 생성을 위한 **분석 작업**
|
|
|
|
`tasks.yaml` 파일을 다음과 같이 수정해 보겠습니다:
|
|
|
|
```yaml
|
|
# src/research_crew/config/tasks.yaml
|
|
research_task:
|
|
description: >
|
|
{topic}에 대해 철저한 연구를 수행하세요. 다음에 중점을 두세요:
|
|
1. 주요 개념 및 정의
|
|
2. 역사적 발전과 최근 동향
|
|
3. 주요 과제와 기회
|
|
4. 주목할 만한 적용 사례 또는 케이스 스터디
|
|
5. 향후 전망과 잠재적 발전
|
|
|
|
반드시 명확한 섹션으로 구성된 구조화된 형식으로 결과를 정리하세요.
|
|
expected_output: >
|
|
{topic}의 모든 요구 사항을 다루는, 잘 구성된 섹션이 포함된 포괄적인 연구 문서.
|
|
필요에 따라 구체적인 사실, 수치, 예시를 포함하세요.
|
|
agent: researcher
|
|
|
|
analysis_task:
|
|
description: >
|
|
연구 결과를 분석하고 {topic}에 대한 포괄적인 보고서를 작성하세요.
|
|
보고서에는 다음 내용이 포함되어야 합니다:
|
|
1. 간결한 요약(executive summary)으로 시작
|
|
2. 연구의 모든 주요 정보 포함
|
|
3. 동향과 패턴에 대한 통찰력 있는 분석 제공
|
|
4. 추천사항 또는 미래 고려 사항 제시
|
|
5. 명확한 제목과 함께 전문적이고 읽기 쉬운 형식으로 작성
|
|
|
|
expected_output: >
|
|
연구 결과와 추가 분석, 인사이트를 포함한 {topic}에 대한 정제되고 전문적인 보고서.
|
|
보고서는 간결한 요약, 본문, 결론 등으로 잘 구조화되어 있어야 합니다.
|
|
agent: analyst
|
|
context:
|
|
- research_task
|
|
output_file: output/report.md
|
|
```
|
|
|
|
분석 작업 내의 `context` 필드에 주목하세요. 이 강력한 기능을 통해 analyst가 연구 작업의 결과물을 참조할 수 있습니다. 이를 통해 정보가 human team에서처럼 agent 간에 자연스럽게 흐르는 워크플로우가 만들어집니다.
|
|
|
|
## 5단계: 크루 구성 설정하기
|
|
|
|
이제 크루를 구성하여 모든 것을 하나로 모을 시간입니다. 크루는 에이전트들이 함께 작업을 완료하는 방식을 조율하는 컨테이너 역할을 합니다.
|
|
|
|
`crew.py` 파일을 다음과 같이 수정해보겠습니다:
|
|
|
|
```python
|
|
# src/research_crew/crew.py
|
|
from crewai import Agent, Crew, Process, Task
|
|
from crewai.project import CrewBase, agent, crew, task
|
|
from crewai_tools import SerperDevTool
|
|
from crewai.agents.agent_builder.base_agent import BaseAgent
|
|
from typing import List
|
|
|
|
@CrewBase
|
|
class ResearchCrew():
|
|
"""Research crew for comprehensive topic analysis and reporting"""
|
|
|
|
agents: List[BaseAgent]
|
|
tasks: List[Task]
|
|
|
|
@agent
|
|
def researcher(self) -> Agent:
|
|
return Agent(
|
|
config=self.agents_config['researcher'], # type: ignore[index]
|
|
verbose=True,
|
|
tools=[SerperDevTool()]
|
|
)
|
|
|
|
@agent
|
|
def analyst(self) -> Agent:
|
|
return Agent(
|
|
config=self.agents_config['analyst'], # type: ignore[index]
|
|
verbose=True
|
|
)
|
|
|
|
@task
|
|
def research_task(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['research_task'] # type: ignore[index]
|
|
)
|
|
|
|
@task
|
|
def analysis_task(self) -> Task:
|
|
return Task(
|
|
config=self.tasks_config['analysis_task'], # type: ignore[index]
|
|
output_file='output/report.md'
|
|
)
|
|
|
|
@crew
|
|
def crew(self) -> Crew:
|
|
"""Creates the research crew"""
|
|
return Crew(
|
|
agents=self.agents,
|
|
tasks=self.tasks,
|
|
process=Process.sequential,
|
|
verbose=True,
|
|
)
|
|
```
|
|
|
|
이 코드에서는 다음을 수행합니다:
|
|
1. researcher 에이전트를 생성하고, SerperDevTool을 장착하여 웹 검색 기능을 추가합니다.
|
|
2. analyst 에이전트를 생성합니다.
|
|
3. research와 analysis 작업(task)을 설정합니다.
|
|
4. 크루가 작업을 순차적으로 수행하도록 설정합니다(analyst가 researcher가 끝날 때까지 대기).
|
|
|
|
여기서 마법이 일어납니다. 몇 줄의 코드만으로도, 특화된 에이전트들이 조율된 프로세스 내에서 협업하는 협동 AI 시스템을 정의할 수 있습니다.
|
|
|
|
## 6단계: 메인 스크립트 설정
|
|
|
|
이제 우리 crew를 실행할 메인 스크립트를 설정해 보겠습니다. 이곳에서 crew가 리서치할 구체적인 주제를 지정합니다.
|
|
|
|
```python
|
|
#!/usr/bin/env python
|
|
# src/research_crew/main.py
|
|
import os
|
|
from research_crew.crew import ResearchCrew
|
|
|
|
# Create output directory if it doesn't exist
|
|
os.makedirs('output', exist_ok=True)
|
|
|
|
def run():
|
|
"""
|
|
Run the research crew.
|
|
"""
|
|
inputs = {
|
|
'topic': 'Artificial Intelligence in Healthcare'
|
|
}
|
|
|
|
# Create and run the crew
|
|
result = ResearchCrew().crew().kickoff(inputs=inputs)
|
|
|
|
# Print the result
|
|
print("\n\n=== FINAL REPORT ===\n\n")
|
|
print(result.raw)
|
|
|
|
print("\n\nReport has been saved to output/report.md")
|
|
|
|
if __name__ == "__main__":
|
|
run()
|
|
```
|
|
|
|
이 스크립트는 환경을 준비하고, 리서치 주제를 지정하며, crew의 작업을 시작합니다. CrewAI의 강력함은 이 코드가 얼마나 간단한지에서 드러납니다. 여러 AI 에이전트를 관리하는 모든 복잡함이 프레임워크에 의해 처리됩니다.
|
|
|
|
## 7단계: 환경 변수 설정하기
|
|
|
|
프로젝트 루트에 `.env` 파일을 생성하고 API 키를 입력하세요:
|
|
|
|
```sh
|
|
SERPER_API_KEY=your_serper_api_key
|
|
# Add your provider's API key here too.
|
|
```
|
|
|
|
선택한 provider를 구성하는 방법에 대한 자세한 내용은 [LLM 설정 가이드](/ko/concepts/llms#setting-up-your-llm)를 참고하세요. Serper API 키는 [Serper.dev](https://serper.dev/)에서 받을 수 있습니다.
|
|
|
|
## 8단계: 필수 종속성 설치
|
|
|
|
CrewAI CLI를 사용하여 필요한 종속성을 설치하세요:
|
|
|
|
```bash
|
|
crewai install
|
|
```
|
|
|
|
이 명령어는 다음을 수행합니다:
|
|
1. 프로젝트 구성에서 종속성을 읽어옵니다
|
|
2. 필요하다면 가상 환경을 생성합니다
|
|
3. 모든 필수 패키지를 설치합니다
|
|
|
|
## 9단계: Crew 실행하기
|
|
|
|
이제 흥미로운 순간입니다 - crew를 실행하여 AI 협업이 어떻게 이루어지는지 직접 확인해보세요!
|
|
|
|
```bash
|
|
crewai run
|
|
```
|
|
|
|
이 명령어를 실행하면 crew가 즉시 작동하는 모습을 볼 수 있습니다. researcher는 지정된 주제에 대한 정보를 수집하고, analyst가 그 연구를 바탕으로 종합 보고서를 작성합니다. 에이전트들의 사고 과정, 행동, 결과물이 실시간으로 표시되며 서로 협력하여 작업을 완수하는 모습을 확인할 수 있습니다.
|
|
|
|
## 10단계: 결과물 검토
|
|
|
|
crew가 작업을 완료하면, 최종 보고서는 `output/report.md` 파일에서 확인할 수 있습니다. 보고서에는 다음과 같은 내용이 포함됩니다:
|
|
|
|
1. 요약 보고서
|
|
2. 주제에 대한 상세 정보
|
|
3. 분석 및 인사이트
|
|
4. 권장사항 또는 향후 고려사항
|
|
|
|
지금까지 달성한 것을 잠시 돌아보세요. 여러분은 여러 AI 에이전트가 협업하여 각자의 전문적인 기술을 발휘함으로써, 단일 에이전트가 혼자서 이루어낼 수 있는 것보다 더 뛰어난 결과를 만들어내는 시스템을 구축한 것입니다.
|
|
|
|
## 기타 CLI 명령어 탐색
|
|
|
|
CrewAI는 crew 작업을 위한 몇 가지 유용한 CLI 명령어를 추가로 제공합니다:
|
|
|
|
```bash
|
|
# 모든 사용 가능한 명령어 보기
|
|
crewai --help
|
|
|
|
# crew 실행
|
|
crewai run
|
|
|
|
# crew 테스트
|
|
crewai test
|
|
|
|
# crew 메모리 초기화
|
|
crewai reset-memories
|
|
|
|
# 특정 task에서 재실행
|
|
crewai replay -t <task_id>
|
|
```
|
|
|
|
## 가능한 것의 예술: 당신의 첫 crew를 넘어서
|
|
|
|
이 가이드에서 구축한 것은 시작에 불과합니다. 여러분이 배운 기술과 패턴은 점점 더 정교한 AI 시스템을 만드는 데 적용할 수 있습니다. 다음은 이 기본 research crew를 확장할 수 있는 몇 가지 방법입니다:
|
|
|
|
### 팀원 확장하기
|
|
|
|
더 전문화된 에이전트를 팀원으로 추가할 수 있습니다:
|
|
- 연구 결과를 검증하는 **팩트체커**
|
|
- 차트와 그래프를 만드는 **데이터 시각화 담당자**
|
|
- 특정 분야에 전문 지식을 가진 **도메인 전문가**
|
|
- 분석의 약점을 파악하는 **비평가**
|
|
|
|
### 도구 및 기능 추가
|
|
|
|
에이전트에 추가 도구를 통해 기능을 확장할 수 있습니다:
|
|
- 실시간 연구를 위한 웹 브라우징 도구
|
|
- 데이터 분석을 위한 CSV/데이터베이스 도구
|
|
- 데이터 처리를 위한 코드 실행 도구
|
|
- 외부 서비스와의 API 연결
|
|
|
|
### 더 복잡한 워크플로우 생성
|
|
|
|
더 정교한 프로세스를 구현할 수 있습니다:
|
|
- 매니저 에이전트가 워커 에이전트에게 위임하는 계층적 프로세스
|
|
- 반복적 피드백 루프로 정제하는 반복 프로세스
|
|
- 여러 에이전트가 동시에 작업하는 병렬 프로세스
|
|
- 중간 결과에 따라 적응하는 동적 프로세스
|
|
|
|
### 다양한 도메인에 적용하기
|
|
|
|
동일한 패턴은 다음과 같은 분야에서 crew를 구성하는 데 적용할 수 있습니다:
|
|
- **콘텐츠 제작**: 작가, 에디터, 팩트체커, 디자이너가 함께 협업
|
|
- **고객 서비스**: 분류 담당자, 전문가, 품질 관리자가 함께 협업
|
|
- **제품 개발**: 연구원, 디자이너, 기획자가 협업
|
|
- **데이터 분석**: 데이터 수집가, 분석가, 시각화 전문가
|
|
|
|
## 다음 단계
|
|
|
|
이제 첫 crew를 구축했으니, 다음과 같은 작업을 시도해 볼 수 있습니다:
|
|
|
|
1. 다양한 에이전트 구성 및 성격을 실험해 보세요
|
|
2. 더 복잡한 작업 구조와 워크플로우를 시도해 보세요
|
|
3. 맞춤 도구를 구현하여 에이전트에게 새로운 기능을 제공하세요
|
|
4. crew를 다양한 주제나 문제 도메인에 적용해 보세요
|
|
5. [CrewAI Flows](/ko/guides/flows/first-flow)를 탐색하여 절차적 프로그래밍을 활용한 더 고급 워크플로우를 경험해 보세요
|
|
|
|
<Check>
|
|
축하합니다! 이제 주어진 모든 주제를 조사하고 분석할 수 있는 첫 번째 CrewAI crew를 성공적으로 구축하셨습니다. 이 기본적인 경험은 협업 인텔리전스를 통해 복잡하고 다단계의 문제를 해결할 수 있는 점점 더 정교한 AI 시스템을 제작하는 데 필요한 역량을 갖추는 데 도움이 됩니다.
|
|
</Check> |