🧠 개요
OpenAPIToolset은 OpenAPI(v3.x) 스펙 문서를 기반으로 자동으로 API 호출 도구(RestApiTool) 를 생성해주는 ADK 기능입니다.
이 도구들을 통해 LLM이 외부 REST API를 직접 호출하고 응답을 받아 처리할 수 있습니다.
🔧 핵심 구성 요소
구성 요소 설명
OpenAPIToolset |
OpenAPI 스펙 전체를 받아 파싱하고, 모든 API operation을 RestApiTool로 변환 |
RestApiTool |
하나의 API 엔드포인트(예: GET /pets)를 대표하는 개별 호출 도구 |
자동 기능 |
operationId, parameters, requestBody 등을 기반으로 자동 함수 선언 + HTTP 요청 수행 |
⚙️ 동작 방식 요약
- OpenAPI 스펙 입력
- JSON, YAML, 또는 Python dict 형식 지원
- 파싱 및 변환
- $ref, 경로(path), 메서드(POST/GET 등) 분석
- 도구 생성
- 각 API operation에 대해 RestApiTool 자동 생성
- 이름은 operationId → snake_case 변환으로 자동 결정
- LLM 호출 흐름
- LLM이 툴 호출 필요 판단 → 자동 생성된 도구 호출 → HTTP 요청 수행 → 응답 반환
- 인증 처리 지원
- API key, OAuth 등은 OpenAPIToolset 초기화 시 옵션으로 설정 가능
🛠 설정 단계별 가이드
✅ 1단계: OpenAPI 스펙 준비
- JSON 또는 YAML 형식의 OpenAPI 3.x 문서
- 예: PetStore API (httpbin 기반 mock API)
✅ 2단계: OpenAPIToolset 인스턴스 생성
✅ 3단계: Agent에 도구 추가
✅ 4단계: Runner로 실행
🧪 예시 요청 흐름
📌 주요 특징 요약
기능 설명
🔄 자동 변환 |
OpenAPI 명세 → RestApiTool 자동 생성 |
🧠 LLM 최적화 |
operationId, summary, request/response 구조 기반 자동 안내 |
🔐 인증 지원 |
API Key, Bearer Token 등 자동 헤더 추가 설정 가능 |
🔁 반복 개발 최소화 |
하나의 OpenAPI 문서로 여러 개 도구 생성 자동화 |
🧪 모의 테스트 가능 |
httpbin.org 기반 테스트 가능 (Echo 응답 확인용) |
📂 예시 저장소 or 추가 자료
- 샘플 코드 경로: openapi_example.py
- 서버 URL: https://httpbin.org
- 사용된 메서드: GET /get, POST /post, GET /get?petId={id}