인공지능이 단순한 대화를 넘어 실제 도구를 활용해 복잡한 작업을 수행하는 시대가 열렸습니다. 특히 대형 언어 모델이 외부 API나 함수를 직접 호출할 수 있는 도구 호출 기능은 AI 애플리케이션의 가능성을 무한대로 확장했습니다. 하지만 각 AI 플랫폼마다 서로 다른 방식을 사용하고 있어 개발자들은 혼란을 겪고 있습니다.
오늘은 OpenAI의 Tool Calling 기능부터 LangChain, LangGraph까지 현재 AI 도구 호출 생태계의 모든 것을 체계적으로 정리해보겠습니다. 실무진들이 가장 궁금해하는 “어떤 도구를 언제 써야 하는가”에 대한 명확한 답을 제시할 예정입니다.
OpenAI Tool Calling의 혁신적 변화
Function Calling에서 Tool Calling으로의 진화
OpenAI는 2023년 중반 Function Calling 기능을 출시했지만, 곧이어 더욱 강력한 Tool Calling으로 완전히 전환했습니다. 이 변화는 단순한 명칭 변경이 아닌 근본적인 기능 개선이었습니다.
기존 Function Calling은 한 번에 하나의 함수만 호출할 수 있었고, 복잡한 작업을 위해서는 여러 번의 API 호출이 필요했습니다. 반면 현재의 Tool Calling은 하나의 요청으로 여러 도구를 동시에 호출할 수 있으며, 향후 코드 인터프리터나 이미지 생성 등 다양한 도구 유형을 지원할 수 있는 확장성을 갖췄습니다.
AI가 도구를 선택하는 원리
많은 개발자들이 궁금해하는 핵심 질문이 있습니다. “AI는 어떻게 수많은 도구 중에서 적절한 것을 선택할까요?” 답은 놀랍도록 간단하면서도 정교합니다.
AI 모델 자체가 라우터 역할을 수행합니다. 사용자의 자연어 질문과 각 도구의 설명 및 JSON 스키마를 의미적으로 매칭하여 가장 적합한 도구를 선택하는 것입니다. 예를 들어 “12와 15를 곱해줘”라는 질문이 들어오면, 모델은 등록된 도구들 중에서 곱셈 관련 설명을 가진 도구를 찾아내고, 해당 도구의 스키마에 맞는 인자까지 자동으로 생성합니다.
이 과정에서 JSON Schema가 핵심적인 역할을 합니다. 도구의 파라미터 타입, 필수 여부, 설명 등이 모두 표준화된 형식으로 정의되어 있어 AI가 정확한 인자를 생성할 수 있습니다. 특히 한국어 설명과 동의어를 풍부하게 제공하면 라우팅 정확도를 크게 높일 수 있습니다.
벤더별 도구 호출 방식의 차이점
주요 AI 플랫폼별 특징
현재 AI 시장의 주요 플레이어들은 각자 고유한 도구 호출 방식을 사용하고 있습니다. OpenAI는 tools 배열과 tool_choice 파라미터를 통해 직관적인 인터페이스를 제공합니다. Anthropic의 Claude는 Messages API에서 도구를 정의하며, 특히 도구 설명의 품질을 매우 중요하게 여깁니다.
Google의 Gemini는 Function Calling이라는 명칭을 사용하며 Vertex AI와 동일한 개념을 적용합니다. Mistral은 OpenAI와 유사한 형태이지만 일부 고급 기능은 아직 완전히 구현되지 않은 상태입니다.
호환성 문제와 해결책
가장 큰 문제는 “OpenAI 호환”을 표방하는 서버들이 실제로는 Tool Calling의 모든 기능을 지원하지 않는다는 점입니다. 특히 오픈소스 모델을 vLLM으로 서빙하는 경우, 기본적인 채팅은 가능하지만 도구 호출 관련 기능은 불안정하거나 누락되는 경우가 많습니다.
이러한 호환성 문제를 해결하기 위해 등장한 것이 바로 LangChain과 LangGraph입니다. 이들은 벤더별 차이를 추상화하여 개발자가 일관된 인터페이스로 다양한 AI 모델을 활용할 수 있게 해줍니다.
LangChain의 통합 솔루션
추상화 계층의 필요성
LangChain이 create_tool_calling_agent를 만든 핵심 이유는 명확합니다. 각 AI 벤더마다 제각각인 도구 호출 기능을 하나의 통일된 인터페이스로 감싸 개발자에게 제공하는 것입니다.
실제로 OpenAI에서 Anthropic로 모델을 변경할 때, LangChain을 사용하면 모델 초기화 부분만 수정하면 됩니다. 도구 정의, 실행 로직, 결과 처리 등 핵심 비즈니스 로직은 그대로 유지할 수 있습니다.
도구 정의의 표준화
LangChain의 @tool 데코레이터는 도구 정의를 크게 간소화합니다. 함수의 독스트링이 자동으로 도구 설명이 되고, 타입 힌트에서 파라미터 스키마를 추론합니다. 특히 한국어 설명과 동의어를 독스트링에 포함하면 AI의 도구 선택 정확도를 높일 수 있습니다.
AgentExecutor와 create_tool_calling_agent의 조합은 간단한 도구 호출 워크플로우에 최적화되어 있습니다. 빠른 응답 시간과 낮은 비용이 장점이지만, 복잡한 흐름 제어나 오류 처리에는 한계가 있습니다.
LangGraph: 차세대 AI 오케스트레이션
프로덕션 환경의 요구사항
실제 기업 환경에서 AI 시스템을 운영하다 보면 단순한 도구 호출을 넘어선 복잡한 요구사항들이 나타납니다. 다단계 워크플로우, 조건부 분기, 오류 복구, 사람의 승인이 필요한 작업, 멀티 에이전트 협업 등이 그것입니다.
LangGraph는 이러한 프로덕션 환경의 요구사항을 해결하기 위해 탄생했습니다. 그래프 기반 상태 머신으로 AI 워크플로우를 모델링하여 복잡한 제어 흐름을 명시적으로 관리할 수 있습니다.
ReAct 패턴의 강력함
LangGraph의 create_react_agent는 ReAct 패턴을 구현합니다. ReAct는 “추론(Reasoning) – 행동(Acting)”의 반복 구조로, AI가 생각하고 행동하고 관찰하는 과정을 명시적으로 분리합니다.
이 패턴은 특히 복잡한 문제 해결에 강점을 보입니다. AI가 중간 결과를 바탕으로 다음 행동을 재계획할 수 있고, 실패 시 대안 경로를 탐색할 수 있습니다. 또한 각 단계가 명시적으로 분리되어 있어 디버깅과 로깅이 용이합니다.
내결함성과 관찰가능성
프로덕션 환경에서 가장 중요한 것은 시스템의 안정성입니다. LangGraph는 타임아웃, 재시도, 백오프 전략 등을 그래프 수준에서 정의할 수 있습니다. 도구 호출이 실패하면 자동으로 대안 경로를 시도하거나, 사람의 개입을 요청할 수 있습니다.
또한 각 노드의 입출력과 상태 변화가 모두 추적되어 감사 로그와 디버깅에 필수적인 관찰가능성을 제공합니다. 멀티테넌트 환경에서는 테넌트별 정책과 리소스 할당을 그래프 수준에서 관리할 수 있습니다.
실무 적용 전략
언제 무엇을 써야 할까
많은 개발자들이 묻는 핵심 질문입니다. 답은 작업의 복잡도와 요구사항에 따라 달라집니다.
간단한 단일 도구 호출이나 빠른 응답이 필요한 경우에는 네이티브 Tool Calling이나 LangChain의 create_tool_calling_agent가 최적입니다. 토큰 사용량이 적고 지연시간이 짧아 비용 효율적입니다.
반면 복잡한 워크플로우, 멀티 에이전트 협업, 엄격한 오류 처리가 필요한 경우에는 LangGraph가 적합합니다. 초기 구축 비용은 높지만 장기적인 유지보수와 확장성 면에서 훨씬 유리합니다.
하이브리드 접근법
실제 기업 환경에서는 하이브리드 접근법이 가장 현실적입니다. LangGraph를 백본 오케스트레이션 레이어로 사용하되, 그 안에 두 가지 타입의 에이전트를 구성하는 것입니다.
첫 번째는 네이티브 Tool Calling 에이전트로, OpenAI나 Anthropic 같은 안정적인 플랫폼에서 간단한 작업을 빠르게 처리합니다. 두 번째는 ReAct 기반 에이전트로, 로컬 모델이나 복잡한 워크플로우를 담당합니다.
정책 라우터를 통해 작업의 복잡도, 예산, 긴급도 등을 고려해 적절한 에이전트를 선택하고, 실패 시 자동으로 다른 에이전트로 폴백할 수 있습니다.
성능과 비용 최적화
토큰 사용량 관리
AI 서비스의 가장 큰 비용 요소는 토큰 사용량입니다. 네이티브 Tool Calling은 간결한 프롬프트로 빠르게 결과를 얻을 수 있어 비용 효율적입니다. 반면 ReAct 패턴은 추론 과정이 명시적으로 포함되어 토큰 사용량이 증가할 수 있습니다.
이를 해결하기 위해서는 요약 메모리, 도구 결과 캐싱, 단계적 응답 등의 최적화 기법을 적용해야 합니다. 특히 긴 대화에서는 중요한 정보만 요약해서 유지하는 전략이 필요합니다.
응답 시간 최적화
사용자 경험에서 응답 시간은 매우 중요합니다. 간단한 질문에 대해서는 네이티브 Tool Calling으로 즉시 응답하고, 복잡한 작업은 스트리밍 방식으로 중간 상태를 실시간으로 보여주는 것이 효과적입니다.
LangGraph에서는 각 노드의 실행 상태를 스트리밍할 수 있어, 사용자가 AI의 작업 진행 상황을 실시간으로 확인할 수 있습니다.
보안과 거버넌스
엔터프라이즈 요구사항
기업 환경에서는 보안과 거버넌스가 매우 중요합니다. 도구 호출 과정에서 민감한 정보가 로그에 기록되지 않도록 PII 마스킹을 적용해야 하고, 각 사용자나 팀별로 접근 가능한 도구를 제한해야 합니다.
LangGraph는 이러한 요구사항을 체계적으로 관리할 수 있는 프레임워크를 제공합니다. 각 노드에서 권한 검사, 정책 적용, 감사 로깅을 일관되게 처리할 수 있습니다.
멀티테넌트 지원
SaaS 환경에서는 여러 테넌트가 동일한 AI 시스템을 공유합니다. 각 테넌트별로 다른 모델, 도구, 정책을 적용해야 하며, 리소스 사용량도 분리해서 관리해야 합니다.
LangGraph의 그래프 구조는 이러한 멀티테넌트 요구사항을 자연스럽게 지원합니다. 테넌트 정보를 그래프 상태에 포함시켜 각 노드에서 적절한 정책을 적용할 수 있습니다.
미래 전망과 발전 방향
도구 호출의 진화
AI 도구 호출 기능은 계속해서 발전하고 있습니다. 현재는 주로 API 호출이나 데이터베이스 조회 수준이지만, 향후에는 더 복잡한 시스템 통합, 실시간 협업, 심지어 물리적 로봇 제어까지 가능해질 것입니다.
또한 도구 호출의 신뢰성과 정확성도 지속적으로 개선되고 있습니다. 현재는 개발자가 명시적으로 도구를 정의해야 하지만, 향후에는 AI가 자동으로 API 스펙을 학습하고 도구를 생성할 수 있을 것입니다.
표준화 노력
현재 각 벤더별로 다른 도구 호출 방식이 문제가 되고 있지만, 업계에서는 표준화 노력이 진행되고 있습니다. OpenAI의 방식이 사실상 표준이 되어가고 있으며, 다른 벤더들도 호환성을 높이는 방향으로 발전하고 있습니다.
LangChain과 LangGraph 같은 추상화 계층도 이러한 표준화에 기여하고 있습니다. 개발자들이 벤더 종속성 없이 AI 애플리케이션을 개발할 수 있게 하여, 건전한 경쟁 환경을 조성하고 있습니다.
실무 체크리스트
AI 도구 호출 시스템을 실제로 구축할 때 반드시 고려해야 할 요소들을 정리해보겠습니다.
먼저 도구 스키마의 품질이 가장 중요합니다. 명확하고 상세한 설명, 한국어 동의어, 제약 조건, 실패 사례 등을 포함해야 합니다. 이는 AI의 도구 선택 정확도를 크게 좌우합니다.
다음으로 관찰가능성을 확보해야 합니다. 모든 도구 호출과 결과를 로깅하되, 민감한 정보는 마스킹해야 합니다. 또한 성능 메트릭과 오류율을 지속적으로 모니터링해야 합니다.
폴백과 재시도 전략도 필수입니다. 네트워크 오류, API 한도 초과, 도구 실행 실패 등 다양한 실패 시나리오에 대비한 복구 메커니즘이 필요합니다.
프롬프트 관리도 체계적으로 해야 합니다. 버전 관리, A/B 테스트, 회귀 테스트를 통해 프롬프트 품질을 지속적으로 개선해야 합니다.
마지막으로 비용과 성능을 균형있게 관리해야 합니다. 요약 메모리, 결과 캐싱, 단계적 응답 등의 최적화 기법을 적절히 활용해야 합니다.
AI 도구 호출 기술은 이제 실험적 단계를 넘어 실제 프로덕션 환경에서 핵심적인 역할을 하고 있습니다. 적절한 도구와 전략을 선택하여 안정적이고 효율적인 AI 시스템을 구축하는 것이 경쟁력의 핵심이 될 것입니다. 특히 한국 기업들에게는 다국어 지원과 로컬 규정 준수가 추가적인 고려사항이 될 것입니다.