이전 페이지에서는 에이전트에서 LLM을 래핑하여 지속적인 정체성, 지침, 세션 관리를 제공하는 방법을 설명했습니다. 그러나 이 모든 것을 사용하더라도 에이전트는 콘텐츠(텍스트, 이미지 등)만 생성할 수 있습니다. 오늘날의 주가를 조회하거나, 이메일을 보내거나, 데이터베이스를 쿼리할 수 없습니다. 학습 과정에서 내재된 지식과 프롬프트에서 제시하는 컨텍스트에 대한 답변을 제공합니다.
도구 는 이러한 격차를 해소합니다. 에이전트는 학습 데이터를 넘어 실제 세계와 상호 작용할 수 있는 기능을 제공합니다. 도구를 추가하는 것은 에이전트를 진정으로 유용하게 만들기 위해 수행할 수 있는 가장 영향력 있는 단일 단계입니다.
이것을 사용해야 하는 경우
에이전트에 도구를 추가해야 하는 상황은 다음과 같습니다.
- 에이전트는 모델의 학습 데이터에 없는 실시간 또는 외부 데이터 (라이브 가격, 날씨, 데이터베이스 레코드, 검색 결과)에 액세스해야 합니다.
- 에이전트는 단순히 콘텐츠를 생성하는 대신 전자 메일 보내기, 티켓 만들기, API 호출, 파일 작성 등의 작업을 수행해야 합니다.
고려 사항
| 고려 사항 | 세부 정보 |
|---|---|
| Latency | 각 도구 요청을 생성할 때마다 통신 과정이 추가됩니다. 모델이 도구 요청을 생성하고, 코드에서 이를 실행한 후, 모델이 계속 진행하기 전에 결과가 다시 전송됩니다. 다기능 도구는 이것을 혼합합니다. |
| 토큰 오버헤드 | 도구 정의(이름, 설명, 매개 변수 스키마)는 모든 프롬프트에 포함됩니다. 도구가 많을수록 대화 기록 및 모델의 응답에 사용할 수 있는 토큰이 줄어듭니다. |
| 디버깅 복잡성 | 문제가 발생하면 모델의 도구 선택, 선택한 인수 또는 도구 실행에 원인이 있을 수 있습니다. 추론과 코드를 함께 디버깅 합니다 . |
| Reliability | 모델은 도구를 잘못 호출하거나, 잘못된 인수를 전달하거나, 도구가 호출되지 않아야 하는 경우 호출할 수 있습니다. 좋은 설명과 도구 승인 은 이를 완화하지만 제거하지는 않습니다. |
에이전트에 도구가 필요한 이유
LLM 기본 사항에서 다루는 것처럼 LLM은 도구 호출을 나타내는 특수 구조화된 형식을 포함하여 토큰을 생성하도록 학습됩니다. 그러나 모델 자체는 아무 것도 실행하지 않습니다. 모델의 출력을 구문 분석하고, 실제 함수를 실행하고, 결과를 다시 제공하는 것은 애플리케이션(또는 에이전트 프레임워크)입니다.
즉, 도구 는 모델의 기능을 변경하지 않습니다. 즉, 에이전트가 수행할 수 있는 작업을 변경합니다. 도구가 없으면 에이전트는 대화형 사용자입니다. 도구를 사용하면 연산자가 됩니다.
여행 예약 담당자를 고려합니다. 도구가 없으면 항공편에 대해 논의하고 일반적인 지식을 기반으로 여정을 제안할 수 있습니다. 도구를 사용하면 다음을 수행할 수 있습니다.
- 실시간으로 가용성과 가격에 대해 항공편 API 검색
- 사용자를 대신하여 항공편 예약
이러한 각 작업에는 외부 세계와 상호 작용하기 위해 에이전트가 호출할 수 있는 코드 조각인 도구가 필요합니다.
도구 호출 루프의 작동 방식
에이전트 도구를 제공하면 에이전트 프레임워크는 도구 호출 루프를 자동으로 관리합니다.
┌──────────────────────────────────────────────────────┐
│ User: "What's the weather in Seattle?" │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ Agent sends messages + tool definitions to LLM │
└──────────────┬───────────────────────────────────────┘
▼
┌───────────────┐
│ LLM responds │
└───┬───────┬───┘
│ │
Tool call? No ──────────────────────────┐
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ Agent Framework executes │ │ Final response: │
│ the tool (e.g., │ │ "It's cloudy in Seattle │
│ get_weather("Seattle")) │ │ with a high of 15°C." │
└──────────────┬──────────────┘ └─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ Agent sends tool result │
│ back to the LLM │
└──────────────┬──────────────┘
│
└──────► (back to "LLM responds")
핵심 사항:
- 루프를 작성할 필요가 없습니다. 에이전트 프레임워크는 모델의 응답에서 도구 호출 검색, 도구 실행 및 결과를 다시 공급하는 것을 처리합니다. 도구를 정의합니다. 프레임워크는 나머지를 오케스트레이션합니다.
- 턴당 여러 도구 호출. 모델은 최종 답변을 생성하기 전에 여러 도구(잠재적으로 병렬로)를 호출하거나 하나의 출력이 다음을 알리는 체인 도구 호출을 호출할 수 있습니다.
- 모델은 도구를 호출할 시기를 결정합니다. 사용자의 요청 및 사용자가 제공하는 도구 설명에 따라 모델은 도구가 필요한지 여부를 판단합니다. 좋은 도구 설명은 더 나은 도구 선택으로 이어지고 있습니다.
팁 (조언)
첫 번째 도구를 추가하고 이 루프가 작동하는 것을 확인하는 실습 연습은 2단계: 시작 자습서의 도구 추가를 참조하세요.
도구 유형
에이전트 프레임워크는 여러 범주의 도구를 지원합니다. 올바른 것을 선택하는 것은 에이전트가 수행해야 하는 작업과 기능이 있는 위치에 따라 달라집니다.
함수 도구
기능 도구는 사용자가 작성하고 에이전트에 등록하는 사용자 지정 함수입니다. 프로세스에서 실행되어 논리, 보안 경계 및 오류 처리를 완전히 제어할 수 있습니다.
다음과 같은 경우 함수 도구를 사용합니다.
- 에이전트가 호출해야 하는 사용자 지정 비즈니스 논리가 있습니다(데이터베이스 쿼리, 내부 API 호출, 계산 수행)
- 리소스에 액세스할 수 있는 환경에서 실행할 도구가 필요합니다.
- 컴파일 시간 형식 안전성 및 테스트 용이성을 원합니다.
함수 도구는 가장 일반적이고 유연한 도구 유형입니다. 대부분의 에이전트는 여기에서 시작합니다.
MCP 도구(모델 컨텍스트 프로토콜)
MCP 는 애플리케이션이 LLM에 도구를 제공하는 방법을 정의하는 개방형 표준입니다. 도구 논리를 직접 작성하는 대신 REST API가 엔드포인트를 노출하는 방식과 유사하게 표준 프로토콜을 통해 도구 집합을 노출하는 MCP 서버에 연결합니다.
에이전트 프레임워크는 다음 두 가지 버전을 지원합니다.
| 맛 | 그것이 무엇인지 | 사용 시기 |
|---|---|---|
| 호스트된 MCP 도구 | Microsoft Foundry 또는 다른 공급자가 호스트하고 관리하는 MCP 서버 | 인프라를 관리하지 않고 일반적인 기능(예: 파일 검색, 코드 실행)에 대한 턴키 액세스를 원합니다. |
| 로컬 MCP 도구 | 직접 실행하거나 공급자로부터 연결하는 MCP 서버 | 사용자 지정 또는 타사 MCP 서버가 있거나 사용자 고유의 환경에서 실행되는 도구가 필요합니다. |
다음과 같은 경우 MCP 도구를 사용합니다.
- 미리 빌드된 MCP 서버는 이미 필요한 기능을 제공합니다.
- 공유 서버를 통해 여러 에이전트 또는 애플리케이션에서 도구를 다시 사용하려고 합니다.
- MCP 엔드포인트를 노출하는 타사 서비스와 통합하고 있습니다.
공급자 호스팅 도구
일부 공급자는 공급자의 인프라에서 실행되는 기본 제공 도구를 제공하며, 로컬 코드는 필요하지 않습니다. 여기에는 다음이 포함됩니다.
| 도구 | 용도 |
|---|---|
| 코드 해석기 | 공급자 인프라의 샌드박스 환경에서 코드를 실행합니다. |
| 파일 검색 | 공급자에 업로드하는 파일을 검색합니다. |
| 웹 검색 | 웹에서 실시간 정보 검색 |
다음과 같은 경우 공급자 호스팅 도구를 사용합니다.
- 도구를 직접 빌드하거나 호스팅하지 않고 코드 실행 또는 웹 검색과 같은 기능이 필요합니다.
- 공급자는 이미 요구 사항을 충족하는 관리되는 버전을 제공합니다.
메모
공급자 호스팅 도구 가용성은 공급자에 따라 다릅니다. 전체 공급자 지원 매트릭스에 대한 도구 개요 를 참조하세요.
메모
일부 LLM 공급자는 OpenAI의 응답 API 와 같이 유추 중에 인프라에서 호스트된 도구를 실행할 수 있습니다. 이러한 유추 서비스는 유추를 도구 실행과 결합하는 반 에이전트 서비스로 간주합니다. 기본 모델의 작동 방식은 변경되지 않지만 서비스 응답 생성의 일부로 도구 실행이 발생할 수 있음을 의미합니다. 이러한 서비스는 사용자 고유의 인프라에서 실행되어야 하는 로컬 도구를 실행할 수 없습니다.
올바른 도구 유형 선택
| 질문 | 권장 사항 |
|---|---|
| 사용자 지정 비즈니스 논리가 있나요? | 함수 도구 - 사용자 고유의 함수 작성 및 등록 |
| 이미 필요한 작업을 수행하는 MCP 서버가 있나요? | |
| 코드 실행, 파일 검색 또는 웹 검색이 필요한가요? | 공급자 호스팅 도구 - 공급자가 지원하는지 확인 |
| 여러 범주의 도구가 필요한가요? | 혼합하라 — 에이전트는 함수 도구, MCP 도구 및 공급자 호스팅 도구를 동시에 사용할 수 있습니다. |
도구 설명이 중요합니다.
모델은 이름과 설명에 따라 도구를 선택합니다. 모호한 설명은 잘못된 도구 선택으로 이어집니다. 모델이 잘못된 도구를 호출하거나, 사용해야 하는 도구를 건너뛰거나, 잘못된 인수를 전달할 수 있습니다.
도구 설명은 도구가 수행하는 작업, 각 매개 변수의 의미, 반환하는 내용 등 API 문서를 작성하는 것과 동일한 방식으로 설명합니다. 설명이 명확할수록 모델의 판단이 향상 됩니다.
팁 (조언)
도구 정의(이름, 설명, 매개 변수 스키마)는 프롬프트에 포함되며 컨텍스트 창에서 토큰을 사용합니다. 많은 도구를 등록하는 경우 오버헤드가 클 수 있습니다. 에이전트에 실제로 필요한 도구만 등록합니다.
도구 승인: 휴먼 인 더 루프
일부 작업은 돈을 전송하고, 레코드를 삭제하고, 전자 메일을 보내는 등 민감합니다. 에이전트가 이러한 도구를 자율적으로 실행하지 않도록 할 수 있습니다. 도구 승인을 사용하면 도구를 실행하기 전에 사용자 확인을 요구할 수 있습니다.
도구가 승인이 필요한 것으로 표시되면 에이전트는 실행 전에 일시 중지되고 승인이 필요하다는 응답을 반환합니다. 애플리케이션은 사용자에게 이를 제시하고 해당 결정을 다시 전달할 책임이 있습니다.
이 패턴은 종종 휴먼 인 더 루프 라고 하며 결과적 작업을 처리하는 신뢰할 수 있는 에이전트를 빌드하는 데 필수적입니다.
공통 문제
| 잠재적인 문제 | 안내 |
|---|---|
| 도구가 너무 많습니다. | 모든 도구 정의는 토큰을 사용합니다. 에이전트의 목적과 관련된 도구만 등록합니다. |
| 모호한 설명 | "데이터를 다루는 활동은 모델에 도움이 되지 않습니다." 구체적으로 설명합니다. "SKU별 제품 가용성을 위해 인벤토리 데이터베이스를 쿼리합니다." |
| 오류 처리 없음 | 도구가 실패할 수 있습니다(네트워크 오류, 잘못된 입력). 모델이 잘못된 원인을 파악하고 다시 시도하거나 사용자에게 알릴 수 있도록 명확한 오류 메시지를 반환합니다. |
| 지나치게 관대한 도구 | "SQL 쿼리를 실행"할 수 있는 도구는 보안 위험입니다. 도구 범위를 잘 정의된 특정 작업으로 지정합니다. |
| 중요한 작업에 대한 승인 누락 | 도구가 되돌릴 수 없는 변경을 수행할 수 있는 경우 도구 승인을 추가하여 휴먼을 루프에 유지합니다. |
특별 언급: 코드 인터프리터 도구
LLM 기본 사항에서 설명한 대로 LLM은 정확한 계산 및 공식 논리에서 오류를 만들 수 있습니다. 이는 LLM이 패턴 일치를 기반으로 토큰별로 답변 토큰을 생성하기 때문입니다. 실제로 계산하지는 않습니다. 두 개의 큰 숫자를 곱하라는 LLM이 산술 연산을 수행하지 않습니다. 학습 데이터를 기반으로 답변이 "어떻게 표시되는지" 예측합니다. 이는 놀라울 정도로 자주 작동하지만 에지 사례에서는 예측할 수 없을 정도로 실패합니다.
코드 인터프리터는 에이전트가 샌드박스 환경에서 코드를 작성하고 실행하도록 하여 이 문제를 해결합니다. 모델은 대답을 추측하는 대신 정확하게 계산하고, 실행하고, 응답에서 확인된 결과를 사용하는 Python 스크립트를 작성합니다.
메모
모델은 동일한 문제를 해결하라는 메시지가 표시될 때마다 약간 다른 스크립트를 작성할 수 있지만 결과는 대부분 일치해야 합니다.
경고
코드 인터프리터는 인간의 부분에 대한 신중한 추론을 대체하지 않습니다. 항상 에이전트의 작업을 확인하고 필요한 경우 결과를 독립적으로 확인합니다.
필요한 경우 에이전트 코드 인터프리터를 제공합니다.
- 대략적인 "최적 추측"이 허용되지 않는 정확한 계산(재무 모델링, 통계 분석, 단위 변환)을 수행합니다.
- 데이터 변환 또는 분석 - CSV 구문 분석, 행 집계, 차트 생성 또는 구조화된 데이터 재구성
- 파일 처리 - 업로드된 문서를 읽고, 콘텐츠를 추출하거나, 형식을 변환하거나, 새 파일을 생성합니다.
- 고유한 추론의 유효성을 검사합니다. 사용자에게 표시하기 전에 논리적 클레임을 확인하는 테스트 코드를 작성합니다.
팁 (조언)
코드 인터프리터는 공급자 호스팅 도구일 수 있습니다. 코드는 사용자 환경이 아닌 샌드박스의 공급자 인프라에서 실행됩니다. 이렇게 하면 서버에서 임의 코드가 실행되는 것에 대해 걱정하지 않고도 안전하게 사용할 수 있습니다. 설치 세부 정보는 코드 인터프리터 참조 를 참조하세요.
다음 단계
에이전트가 도구를 갖추면, 다음 단계는 에이전트가 필요할 때 로드하여 사용할 수 있는 도메인 전문 지식을 제공하는 지침, 참조 자료 및 스크립트로 구성된 포터블 패키지인 기술에 대해 배우는 것입니다.
더 자세히 살펴보기:
- 도구 개요 - 모든 도구 유형 및 공급자 지원 매트릭스
- 함수 도구 - 자세한 함수 도구 참조
- Hosted MCP Tools — Microsoft Foundry MCP 서버 또는 기타 공급자
- 로컬 MCP 도구 - 사용자 지정 MCP 서버
- 도구 승인 - 도구에 대한 휴먼 인 더 루프
- 2단계: 도구 추가 - 실습 자습서