AI Skills & Tools란 무엇인가

function calls에서 MCP servers까지 패키지화된 기능을 agents가 사용하는 방법. LLM으로 구축하는 개발자를 위한 실용 가이드.

읽는 시간: 7분 업데이트: 2026년 4월

🔧 스킬이란 무엇인가?

AI 에이전트의 맥락에서, skill (또한 다음과 같이 호출됨 tool or function) 는 패키지화된 재사용 가능한 기능으로서 LLM이 컨텍스트 창 밖의 세계와 상호작용하기 위해 호출할 수 있습니다. 스킬은 언어 이해와 실제 행동 사이의 간극을 메웁니다.

각 스킬은 네 가지 구성요소를 가집니다:

  • Name — 모델이 스킬을 참조할 때 사용하는 고유 식별자 (예: web_search)
  • Description — 스킬이 무엇을 하는지, 언제 사용해야 하는지 설명하는 자연어 텍스트; LLM은 이것을 읽고 언제 스킬을 호출할지 결정합니다
  • 입력 스키마 — 인수의 구조화된 정의(JSON Schema); 모델은 작업에 따라 이를 채웁니다
  • Implementation — 실제로 실행되는 코드: API 호출, 데이터베이스 쿼리, 셸 명령 또는 기타 작업

예: A get_weather 스킬의 설명이 "도시의 현재 날씨를 가져옴"이고, 입력으로 { "city": "string" } 를 받아 날씨 API를 호출합니다. LLM은 API 키나 HTTP 호출을 직접 보지 못하며 — 단지 결과를 텍스트로 반환받습니다.

⚙️ 도구 호출의 동작 방식

에이전트가 스킬에 접근할 수 있을 때, LLM은 이를 직접 호출하지 않습니다 — 그것은 requests 구조화된 출력을 생성하여 호출을 수행합니다. 런타임(귀하의 애플리케이션 코드)이 실제 호출을 실행하고 결과를 반환합니다. 전체 사이클은 다음과 같습니다:

  1. 도구 등록 — 귀하의 코드가 사용 가능한 스킬 목록과 그 설명 및 스키마를 모델에 보냅니다
  2. 모델 추론 — LLM은 작업과 사용 가능한 도구들을 읽고 어떤 도구를 어떤 인수로 호출할지 결정합니다
  3. 도구 호출 요청 — 모델이 구조화된 "tool call" 메시지를 출력합니다 (예: { "tool": "web_search", "args": { "query": "current Gemini models" } })
  4. Execution — 귀하의 런타임 코드는 실제 함수, API 또는 서비스를 호출합니다
  5. 결과 주입 — 그 결과가 대화 컨텍스트에 다시 추가됩니다
  6. 추가 추론 — 모델은 결과를 읽고 다른 도구를 호출하거나 후속 질문을 하거나 최종 답변을 생성합니다

이 루프는 한 번의 턴에서 여러 번 반복될 수 있습니다. 복잡한 에이전트 작업은 최종 응답을 생성하기 전에 10~20개의 도구를 순차적으로 호출할 수 있습니다.

📊 스킬 vs 플러그인 vs MCP 서버

용어는 빠르게 진화했습니다. 개념들이 역사적으로 어떻게 연관되는지 설명합니다:

EraName작동 방식Status
2023 ChatGPT 플러그인 OpenAPI 스펙을 가진 사용자가 설치 가능한 확장; ChatGPT가 HTTP를 통해 호출함 사용 중단(대체: GPTs + tools)
2023 OpenAI Function Calling API 수준의 JSON Schema 정의; 모델이 구조화된 함수 호출을 출력하고 귀하의 코드가 이를 실행함 활성 — "tool use"로 이름 변경됨
2023– Tool Use / Skills 함수 호출과 동일; Anthropic이 "tool use"를 만들었고, 다른 이들은 "skills" 또는 "functions"를 사용합니다 활성 — 현재 표준
2024– MCP 서버 표준화된 프로토콜(Anthropic, 2024년 12월)로 도구 서버를 패키징하고 배포하기 위한 규격; 어떤 MCP 클라이언트든 어떤 MCP 서버와도 연결할 수 있음 활성 — 성장 중인 생태계

핵심 차이점: 전통적인 도구 사용은 애플리케이션 코드에 인라인으로 정의됩니다. MCP 서버는 도구를 표준화된 프로토콜을 통해 노출하는 독립 실행형 프로세스입니다 — 이를 통해 다양한 AI 클라이언트(Claude Desktop, Cursor, VS Code, 맞춤형 에이전트)에서 재사용할 수 있습니다. 자세히 보기: MCP란 무엇인가.

🗂️ 도구 분류 및 위험 수준

모든 도구가 동일한 위험을 지니지는 않습니다. 위험 수준별 분류는 에이전트의 행동 공간 및 사람 개입 체크포인트를 추가할 위치:

CategoryExamplesRiskRecommendation
Read-only web_search, read_file, get_weather, list_dir Low 자율 허용; 모든 호출 로깅
쓰기(로컬) write_file, create_dir, edit_code Medium 샌드박스된 작업 디렉터리로 범위를 제한
네트워크 / 외부 send_email, post_to_slack, call_api 중간–높음 되돌릴 수 없는 전송은 HITL 승인 필요
OS / Shell run_command, execute_script, install_package High 컨테이너화된 환경으로 제한; HITL 필요
Destructive delete_file, drop_table, revoke_access Critical 항상 명시적인 사람 확인 필요

🏗️ 좋은 스킬의 구조

스킬 설계에서 가장 중요한 결정은 description모델은 어떤 도구를 호출할지 결정하기 위해 설명을 읽습니다 — 설명이 부실하면 잘못된 도구 선택, 호출 누락 또는 인수 모호성이 발생합니다.

설명이 효과적이게 만드는 요소

  • 언제 사용해야 하는지 명확히 하라 — "사용자가 실시간 데이터나 최신 이벤트에 대해 물을 때 이 도구를 사용"은 "웹을 검색"보다 더 낫습니다
  • 무엇을 하지 않는지 명시하라 — "30일 이전의 과거 데이터는 반환하지 않음"
  • 출력 형식을 설명하라 — "제목, url, 스니펫 필드를 가진 검색 결과의 JSON 배열을 반환"
  • 200단어 이내로 유지하라 — ~200 토큰보다 긴 설명은 많은 도구가 등록된 경우 모델의 주의를 과도하게 소모할 수 있습니다

스키마 설계 원칙

  • 필수 vs 선택 — 필드를 정말로 필요로 하는 경우에만 필수로 표시하세요; 기본값이 있는 선택 필드는 모델 오류를 줄입니다
  • 제한된 값에는 열거형을 사용하라"format": {"enum": ["json", "markdown", "text"]} 이는 환각된 값을 방지합니다
  • 멱등성 있는 도구를 선호하라 — 안전하게 재시도할 수 있는 도구(읽기, 조회)는 일회성 동작(전송, 삭제)보다 더 안전합니다
  • 구조화된 데이터를 반환하라 — JSON 응답은 모델이 구조화되지 않은 텍스트 블롭보다 추론하기 쉽습니다

💡 실제 사례

스킬 이름무엇을 하는지핵심 인수Risk
web_search 검색 엔진을 질의하여 상위 결과 반환 query: string, num_results?: number Low
read_file 워크스페이스 디렉터리에서 파일을 읽기 path: string, offset?: number, limit?: number Low
write_file 파일 생성 또는 덮어쓰기 path: string, content: string Medium
run_tests 프로젝트 테스트 스위트를 실행하고 결과 반환 filter?: string Medium
browser_screenshot URL로 이동하여 스크린샷 반환 url: string Medium
send_email 한 명 이상의 수신자에게 이메일 전송 to: string[], subject: string, body: string 높음 — 항상 HITL
run_shell 임의의 셸 명령을 실행 command: string, cwd?: string 높음 — 샌드박스 필요

✅ 모범 사례

최소 권한

각 에이전트에 그 특정 작업에 필요한 도구만 부여하세요. FAQ에 답하는 에이전트는 write_file or send_email. 액션 공간이 작을수록 에이전트가 조작되었을 때 발생하는 영향 범위가 작아집니다. 참고: 과도한 에이전시.

모든 도구 호출 감사

모든 도구 호출과 그 인수 및 결과를 로깅하세요. 이는 디버깅, 비용 귀속 및 이상 행동(예: 에이전트가 ~/.ssh/ 프로젝트 디렉터리만 접근해야 할 때 접근하는 경우)을 탐지할 수 있게 합니다. LangSmith와 같은 AgentOps 플랫폼이 이를 쉽게 만듭니다.

되돌릴 수 없는 동작에 대한 사람 개입

되돌리기 어렵거나 불가능한 모든 동작 — 메시지 전송, 데이터 삭제, 구매 등 — 은 실행 전에 명시적인 사람 확인이 필요합니다. HITL 체크포인트를 프롬프트가 아니라 에이전트 런타임에 구축하세요. 프롬프트는 무시될 수 있지만 코드에는 그렇지 않습니다.

도구 중독에 주의하라

에이전트가 MCP 서버를 동적으로 설치하거나 발견하게 허용하면, 악의적인 서버가 숨겨진 지시문을 포함한 설명으로 도구를 등록할 수 있습니다. 도구를 에이전트 레지스트리에 추가하기 전에 항상 도구 설명을 검토하세요. 참고: 도구 중독.

명확한 오류 반환 작성

도구가 실패할 때는 모델이 복구하거나 대체 도구를 사용하거나 사용자에게 우아하게 알릴 수 있도록 충분한 컨텍스트를 담은 구조화된 오류를 반환하세요 — 생 예외 스택 트레이스는 피하세요. 예: { "error": "rate_limited", "retry_after": 5 }. 잘 설명된 오류는 에이전트가 재시도하거나 대체 도구를 사용하거나 사용자에게 적절히 알리도록 합니다.