에이전트 능력 (Agent Capabilities)¶
CrewAI 에이전트를 하나 만들면 그건 그냥 LLM 하나가 "말만 하는" 존재로 끝날 수 있어요. 실제 문제는 거기서 생겨요 — 조사 전담인데 웹 검색을 못 하고, 보안 감사인데 파일을 못 읽고, 그러니까 "이 에이전트가 뭘 할 수 있게 만들 거냐"를 정해줘야 하거든요. CrewAI는 이런 확장 수단을 다섯 가지 유형으로 정리해서 줘요. 이 페이지에서는 각 유형이 뭘 하는지, 그리고 언제 어떤 걸 골라야 하는지를 같이 볼게요.
다섯 가지 능력, 그게 다 뭐냐¶
다섯 유형은 모두 "에이전트가 더 잘 일하게 해주는" 장치인데, 하는 일이 조금씩 달라요. 먼저 이름과 한 줄 설명만 잡아볼게요.
- Tools(도구) — 호출 가능한 함수예요. 웹 검색, 파일 조작, API 호출, 코드 실행처럼 에이전트가 실제로 어떤 행동을 취할 수 있게 해줘요.
- MCP Servers — 원격에 있는 도구 서버예요. Model Context Protocol이라는 규약으로 외부 도구 서버에 연결해요. 효과는 도구와 같지만, 그 도구가 우리 프로그램 밖에 따로 떠 있는 방식이죠.
- Apps — 플랫폼 연동이에요. Gmail, Slack, Jira, Salesforce 같은 SaaS 앱에 CrewAI 플랫폼을 통해 연결해요. 로컬에서 도는데 플랫폼 연동 토큰(platform integration token)을 써요.
- Skills(스킬) — 도메인 전문 지식이에요. 지침(instructions), 가이드라인, 참고 자료를 에이전트 프롬프트에 주입해요. 스킬은 에이전트에게 "어떻게 생각할지"를 알려줘요.
- Knowledge(지식) — 검색으로 가져온 사실이에요. 문서, 파일, URL에서 데이터를 의미 기반 검색(시맨틱 검색, RAG) 으로 공급해요. 지식은 에이전트에게 "무엇을 알아야 하는지"를 알려줘요.
이 능력들을 두 갈래로 나누는 핵심 구분¶
다섯 가지를 다 외우기 전에, 가장 중요한 단 하나를 먼저 잡는 게 좋아요. 이 능력들은 결국 두 범주로 딱 갈라져요.
행동 능력 (Tools, MCPs, Apps)¶
이 셋은 에이전트가 무언가를 하게 만드는 능력이에요. API를 호출하고, 파일을 읽고, 웹을 검색하고, 이메일을 보내죠. 흥미로운 점은 실행 시점에는 이 셋이 전부 같은 내부 형식(BaseTool 인스턴스)으로 변환되고, 에이전트가 부를 수 있는 하나의 도구 목록으로 합쳐진다는 거예요. 그러니까 겉보기엔 세 가지로 보여도, "에이전트가 손댈 수 있는 도구가 늘어난다"는 본질은 같아요.
from crewai import Agent
from crewai_tools import SerperDevTool, FileReadTool
agent = Agent(
role="Researcher",
goal="Find and compile market data",
backstory="Expert market analyst",
tools=[SerperDevTool(), FileReadTool()], # Local tools
mcps=["https://mcp.example.com/sse"], # Remote MCP server tools
apps=["gmail", "google_sheets"], # Platform integrations
)
여기서 헷갈리기 쉬운 건 셋이 각자 뭘 채워 넣는지예요. tools=에는 로컬 도구를, mcps=에는 원격 MCP 서버 주소를, apps=에는 연동할 SaaS 앱 이름을 넣어요. 그리고 실행 시 이 세 목록이 하나의 도구 목록으로 합쳐진다는 점만 기억하면 돼요.
맥락 능력 (Skills, Knowledge)¶
나머지 둘은 에이전트에게 새 행동을 주는 게 아니라, 프롬프트 자체를 바꾸는 능력이에요. 에이전트가 추리(reasoning)를 시작하기 전에 전문 지식·지침·검색된 데이터를 주입해줘요. 쉽게 말해 도구가 "손"을 늘려준다면, 스킬과 지식은 "머리와 정보"를 바꿔주는 거예요 — 에이전트가 어떻게 생각하고 어떤 정보에 접근하는지를 결정하죠.
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"], # Domain instructions
knowledge_sources=[pdf_source, url_source], # Retrieved facts
)
skills=에는 도메인 지침이 담긴 경로를, knowledge_sources=에는 검색할 자료(여기선 PDF와 URL 소스)를 넣어요.
언제 뭘 써야 하나¶
선택이 막힐 때 이 표로 정리하면 편해요.
| 필요한 것 | 쓰는 것 | 예시 |
|---|---|---|
| 에이전트가 웹을 검색하게 | Tools | tools=[SerperDevTool()] |
| MCP로 원격 API를 호출하게 | MCPs | mcps=["https://api.example.com/sse"] |
| Gmail로 이메일을 보내게 | Apps | apps=["gmail"] |
핵심만 요약하면 — 행동을 시키고 싶으면 Tools/MCPs/Apps, 생각과 배경지식을 넣고 싶으면 Skills/Knowledge예요. 새 에이전트를 설계할 때 이 두 갈래를 먼저 구분하면, 다섯 개를 뒤죽박죽 고민할 일이 줄어요.
데이터스케쳐스 실무 관점¶
실무에서 이 다섯 능력은 "에이전트 하나에 다 넣으려는" 유혹과 싸우는 데서 출발해요. 조사 에이전트라면 검색 도구(Tools)를 주고, 회사 내부 SaaS 연동이 필요하면 Apps로 Gmail·슬랙을 붙이고, 팀만의 조사 기준이나 전문 용어집은 Skills로 주입하고, 과거 보고서나 정책 문서는 Knowledge(RAG)로 넣어주는 식이죠. 여기서 자주 하는 실수는 행동 능력으로 해결할 걸 지식으로, 지식으로 해결할 걸 도구로 바꾸는 거예요 — 예를 들어 "검색을 못 한다"는 문제에 Knowledge로 문서를 넣어봤자 최신 데이터는 못 얻어요. 또 주의할 점은 Tools·MCPs·Apps가 실행 시 전부 BaseTool 하나로 합쳐진다는 성질이에요. 그래서 어디에 어떤 도구가 붙어 있는지 착각하기 쉬우니, 에이전트 정의 단계에서 주석으로 출처를 남겨두는 걸 권해요. (위 코드의 # Local tools / # Remote MCP server tools 같은 주석이 그 역할을 해요.) 다만 MCP·Apps는 플랫폼 계정·토큰 설정이 필요한 경우가 많고 문서에 완전히 명시되지 않은 부분(예: Apps 실행 환경 조건)도 있어서, 도입 전에 팀 환경에서 실제로 동작하는지 확인이 필요해요. 확인 필요.
더 알아보기¶
- 원문 문서를 직접 보려면 공식 문서를 참고하세요: Agent Capabilities — CrewAI 공식 문서