에이전트 기능
CrewAI 에이전트는 다섯 가지 고유한 기능 유형으로 확장할 수 있으며, 각각 다른 목적을 가지고 있습니다. 각 유형을 언제 사용해야 하는지, 그리고 어떻게 함께 작동하는지 이해하는 것이 효과적인 에이전트를 구축하는 핵심입니다.
도구
호출 가능한 함수 — 에이전트가 행동을 취할 수 있게 합니다. 웹 검색, 파일 작업, API 호출, 코드 실행.
MCP 서버
원격 도구 서버 — Model Context Protocol을 통해 에이전트를 외부 도구 서버에 연결합니다. 도구와 같은 효과이지만 외부에서 호스팅됩니다.
앱
플랫폼 통합 — CrewAI 플랫폼을 통해 에이전트를 SaaS 앱(Gmail, Slack, Jira, Salesforce)에 연결합니다. 플랫폼 통합 토큰으로 로컬에서 실행됩니다.
스킬
도메인 전문성 — 에이전트 프롬프트에 지침, 가이드라인 및 참조 자료를 주입합니다. 스킬은 에이전트에게 어떻게 생각할지를 알려줍니다.
지식
검색된 사실 — 시맨틱 검색(RAG)을 통해 문서, 파일 및 URL에서 에이전트에게 데이터를 제공합니다. 지식은 에이전트에게 무엇을 알아야 하는지를 제공합니다.
핵심 구분
섹션 제목: “핵심 구분”가장 중요한 점: 이 기능들은 두 가지 범주로 나뉩니다.
액션 기능 (도구, MCP, 앱)
섹션 제목: “액션 기능 (도구, MCP, 앱)”에이전트에게 무언가를 할 수 있는 능력을 부여합니다 — API 호출, 파일 읽기, 웹 검색, 이메일 전송. 실행 시점에 세 가지 모두 동일한 내부 형식(BaseTool 인스턴스)으로 변환되며, 에이전트가 호출할 수 있는 통합 도구 목록에 나타납니다.
from crewai import Agentfrom crewai_tools import SerperDevTool, FileReadTool
agent = Agent( role="Researcher", goal="Find and compile market data", backstory="Expert market analyst", tools=[SerperDevTool(), FileReadTool()], # 로컬 도구 mcps=["https://mcp.example.com/sse"], # 원격 MCP 서버 도구 apps=["gmail", "google_sheets"], # 플랫폼 통합)컨텍스트 기능 (스킬, 지식)
섹션 제목: “컨텍스트 기능 (스킬, 지식)”에이전트의 프롬프트를 수정합니다 — 에이전트가 추론을 시작하기 전에 전문성, 지침 또는 검색된 데이터를 주입합니다. 에이전트에게 새로운 액션을 제공하는 것이 아니라, 에이전트가 어떻게 생각하고 어떤 정보에 접근할 수 있는지를 형성합니다.
from crewai import Agent
agent = Agent( role="Security Auditor", goal="Audit cloud infrastructure for vulnerabilities", backstory="Expert in cloud security with 10 years of experience", skills=["./skills/security-audit"], # 도메인 지침 knowledge_sources=[pdf_source, url_source], # 검색된 사실)언제 무엇을 사용할까
섹션 제목: “언제 무엇을 사용할까”| 필요한 것… | 사용할 것 | 예시 |
|---|---|---|
| 에이전트가 웹을 검색 | 도구 | tools=[SerperDevTool()] |
| 에이전트가 MCP를 통해 원격 API 호출 | MCP | mcps=["https://api.example.com/sse"] |
| 에이전트가 Gmail로 이메일 전송 | 앱 | apps=["gmail"] |
| 에이전트가 특정 절차를 따름 | 스킬 | skills=["./skills/code-review"] |
| 에이전트가 회사 문서 참조 | 지식 | knowledge_sources=[pdf_source] |
| 에이전트가 웹 검색 AND 리뷰 가이드라인 준수 | 도구 + 스킬 | 둘 다 함께 사용 |
기능 조합하기
섹션 제목: “기능 조합하기”실제로 에이전트는 종종 여러 기능 유형을 함께 사용합니다. 현실적인 예시입니다:
from crewai import Agentfrom crewai_tools import SerperDevTool, FileReadTool, CodeInterpreterTool
# 완전히 갖춘 리서치 에이전트researcher = Agent( role="Senior Research Analyst", goal="Produce comprehensive market analysis reports", backstory="Expert analyst with deep industry knowledge",
# 액션: 에이전트가 할 수 있는 것 tools=[ SerperDevTool(), # 웹 검색 FileReadTool(), # 로컬 파일 읽기 CodeInterpreterTool(), # 분석을 위한 Python 코드 실행 ], mcps=["https://data-api.example.com/sse"], # 원격 데이터 API 접근 apps=["google_sheets"], # Google Sheets에 쓰기
# 컨텍스트: 에이전트가 아는 것 skills=["./skills/research-methodology"], # 연구 수행 방법 knowledge_sources=[company_docs], # 회사 특화 데이터)비교 테이블
섹션 제목: “비교 테이블”| 특성 | 도구 | MCP | 앱 | 스킬 | 지식 |
|---|---|---|---|---|---|
| 에이전트에게 액션 부여 | ✅ | ✅ | ✅ | ❌ | ❌ |
| 프롬프트 수정 | ❌ | ❌ | ❌ | ✅ | ✅ |
| 코드 필요 | 예 | 설정만 | 설정만 | 마크다운만 | 설정만 |
| 로컬 실행 | 예 | 경우에 따라 | 예 (환경 변수 필요) | N/A | 예 |
| API 키 필요 | 도구별 | 서버별 | 통합 토큰 | 아니오 | 임베더만 |
| Agent에 설정 | tools=[] | mcps=[] | apps=[] | skills=[] | knowledge_sources=[] |
| Crew에 설정 | ❌ | ❌ | ❌ | skills=[] | knowledge_sources=[] |
상세 가이드
섹션 제목: “상세 가이드”각 기능 유형에 대해 더 알아볼 준비가 되셨나요?