Any-LLM: 하나의 API로 다양한 LLM을 제어하는 통합 프레임워크 (feat.Mozilla AI)

Any-LLM 프로젝트 소개

인공지능 개발 환경은 빠르게 변화하고 있습니다. 매달 새로운 대형 언어 모델(LLM)이 등장하고, 각 모델은 자신만의 SDK, 엔드포인트, 매개변수 체계를 가집니다. 이러한 다양성은 풍부한 선택지를 제공하지만, 동시에 개발자에게는 유지보수의 복잡성과 공급자 종속성이라는 새로운 부담을 안겨줍니다. Mozilla AI가 개발한 any-llm은 이러한 문제를 해결하기 위해 시작한 프로젝트입니다.

any_llm_demo

즉, Any-LLM은 “하나의 API로 어떤 모델이든 실행한다(Run Any LLM from One API)”라는 단순하면서도 강력한 비전을 구현하는 것을 목표로 합니다. OpenAI, Anthropic, Mistral, Claude, Ollama, Llama.cpp 등 다양한 모델을 동일한 코드 한 줄로 호출할 수 있도록 설계되었으며, 클라우드와 로컬 환경을 모두 지원합니다.

Mozilla AI의 철학과 any-llm의 탄생 배경

any-llm은 Mozilla AI가 제시하는 “투명하고 상호운용 가능한(open and interoperable) AI 생태계”라는 비전의 중심에 있습니다. 오늘날 LLM 시장은 급속히 성장하며, 각 공급자가 독자적인 방식으로 API를 설계하고 있습니다. OpenAI의 Chat Completions API가 사실상의 표준처럼 자리 잡았지만, 실제로는 세부 구현이 제공자마다 달라 완벽한 호환이 어렵습니다. 개발자들은 매번 새로운 SDK를 학습하고, 매개변수와 응답 포맷을 재정의해야 했습니다. Mozilla AI는 이러한 단절을 해소하기 위해, 공통 인터페이스를 기반으로 모든 LLM을 연결하는 통합 SDK를 만들었습니다.

따라서 any-llm은 처음부터 “프록시 서버 없이 직접 연결되는 설계”를 목표로 했습니다. 이를 통해 추가적인 인프라 비용이나 지연(latency)을 최소화하면서, 공급자의 공식 SDK를 그대로 활용해 호환성과 안정성을 확보했습니다. 이를 통해 any-llm은 단순한 래퍼(wrapper)가 아니라, LLM 생태계의 표준화된 접속 계층으로 자리 잡는 것을 목표로 합니다.

단일 인터페이스의 힘

any-llm의 가장 큰 특징은 하나의 일관된 함수로 모든 모델을 호출할 수 있다는 점입니다. 예를 들어 다음과 같은 코드로 Mistral API를 사용할 수 있습니다:

from any_llm import completion

response = completion(
    model="mistral-small-latest",
    provider="mistral",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

만약 위 코드를 OpenAI의 GPT-4 모델로 전환하고 싶다면, provider 값을 “openai”로 바꾸기만 하면 됩니다. 모델 호출을 위한 코드를 다시 작성하거나 SDK를 교체할 필요가 없습니다.

이는 any-llm이 각 제공자의 SDK를 내부적으로 자동 감지하고, 호출 방식을 추상화하기 때문입니다. 개발자는 로직에만 집중하면 되고, 모델이나 플랫폼의 차이는 any-llm이 알아서 처리합니다.

또한 any-llm은 OpenAI 스타일의 응답 형식을 따르며, 모든 모델의 출력 결과를 표준화된 Reasoning Output 구조로 반환합니다. 따라서 모델 간 응답 구조가 달라도 동일한 필드(choices, message.content, usage 등)를 통해 결과를 안정적으로 다룰 수 있습니다.

v1.0에서 강화된 기능과 안정성

2025년 11월에 공개한 any-llm v1.0은 초기 버전의 한계를 넘어 프로덕션 수준의 신뢰성과 기능 완성도를 확보했습니다. Mozilla AI 팀은 사용자 피드백을 반영하여 테스트 커버리지를 대폭 확장하고, API 표면을 정제하여 장기적인 호환성을 보장했습니다. 특히, 클라이언트 연결 재사용 기능이 추가되어 대규모 스트리밍 요청에서도 성능 저하 없이 빠른 응답이 가능합니다.

model_finder_demo

또한, 각 모델 제공자가 지원하는 기능을 자동으로 업데이트하는 Provider Compatibility Matrix를 구축하여, 개발자는 현재 환경에서 어떤 기능이 가능한지를 실시간으로 확인할 수 있습니다. 여기에 더해 List Models API를 통해 제공자별 지원 모델 목록을 프로그래밍 방식으로 조회할 수 있어, 모델 탐색과 관리가 훨씬 수월해졌습니다.

무엇보다 v1.0은 단순한 실험 도구가 아니라, 명확한 Deprecation 정책과 안정된 API를 제공(API surface)하는 실제 서비스용 SDK로 발전했습니다. 이는 Mozilla AI가 “코드는 그대로 두고, 제공자는 자유롭게 바꿀 수 있는 AI 개발 환경”을 목표로 하고 있음을 보여줍니다.

공식 SDK 기반의 신뢰성

기존의 통합형 LLM SDK 중 일부는 각 모델의 API를 자체적으로 재구현하거나, 비공식 프록시 서버를 통해 통신했습니다. 대표적인 예로 LiteLLM은 인기 있는 솔루션이지만, 공식 SDK 대신 자체 래퍼를 사용하기 때문에 API 변경 시 호환성 문제가 발생할 수 있습니다.

any-llm은 이러한 위험을 피하기 위해 공식 SDK를 직접 호출하는 구조를 채택했습니다. 즉, OpenAI, Anthropic, Mistral 등 제공자가 배포한 공식 클라이언트를 그대로 이용하되, 공통 인터페이스를 통해 개발자 경험을 단순화한 것입니다.

이 덕분에 any-llm은 높은 안정성을 유지하면서도 각 모델의 최신 기능을 즉시 활용할 수 있습니다.

프로덕션 환경을 위한 구조

any-llm은 단일 개발자뿐만 아니라 팀과 조직의 규모에 맞게 확장 가능한 아키텍처를 제공합니다. 비동기를 위주(Async-first)의 아키텍처를 기반으로 하여 스트리밍 응답과 대량 동시 요청을 효율적으로 처리하며, 다중 요청 환경에서 클라이언트를 재사용해 네트워크 비용과 지연을 줄입니다.

또한 API의 명세와 실험적 기능이 명확히 구분되어 있어, 안정적인 버전 고정이 가능합니다. 이를 통해 개발자는 프로토타입에서 상용 서비스로 전환하더라도, API 변경 없이 동일한 코드를 그대로 유지할 수 있습니다.

즉, any-llm은 “빠른 실험과 안정적 운영”을 모두 지원하는 균형 잡힌 플랫폼입니다.

any-llm-gateway: 엔터프라이즈 확장 레이어

Mozilla AI는 any-llm의 핵심 SDK 위에 선택적으로 사용할 수 있는 확장 서버인 any-llm-gateway를 제공합니다. 이 구성요소는 FastAPI 기반의 경량 프록시 서버로, 기업 환경에서 필요한 예산 관리, 인증, 분석 기능을 제공합니다.

any-llm-gateway를 통해 각 사용자의 요청을 추적하고, 비용과 사용량을 투명하게 관리할 수 있으며, API 키를 직접 노출하지 않고 가상 키를 발급하여 보안을 강화할 수 있습니다. 또한 사용자나 팀별로 예산 한도를 설정하거나 멀티테넌트 환경을 구성할 수 있어, SaaS 형태의 서비스에서도 쉽게 통합할 수 있습니다.

any-llm-gateway는 아래와 같이 Docker를 사용하여 즉시 실행할 수 있습니다.

docker run \
  -e GATEWAY_MASTER_KEY="your-secure-master-key" \
  -e OPENAI_API_KEY="your-api-key" \
  -p 8000:8000 \
  ghcr.io/mozilla-ai/any-llm/gateway:latest

이러한 구조 덕분에 any-llm은 단순한 개발 도구를 넘어, AI 인프라 관리 계층으로도 확장 가능합니다. 더 상세한 내용은 다음 any-llm-gateway 문서를 참고해주세요:

Mozilla AI의 any-suite: 통합 AI 스택

any-llm은 Mozilla AI의 오픈소스 AI 인프라 모음인 any-suite의 핵심 구성요소입니다. any-suite는 상호운용성과 투명성을 기반으로, AI 시스템의 개발·운영에 필요한 모든 기능을 모듈 단위로 제공하는 것을 목표로 하는 프로젝트입니다.

any-suite의 각 구성 요소는 독립적으로 사용 가능하지만, 함께 사용할 경우 완전한 AI 애플리케이션 스택을 구축할 수 있습니다. any-suite의 주요 구성 요소를 살펴보면 다음과 같습니다:

  • any-llm: any-suite 스택의 중심에서 모델 연결 계층을 담당하며, 다른 구성요소와 함께 작동하여 안전하고 제어 가능한 AI 에이전트 환경을 구현합니다. 다양한 LLM(대형 언어 모델) 제공자(API)를 단일한 인터페이스로 호출할 수 있도록 하여, OpenAI, Anthropic, Mistral AI, Ollama 등과 같은 다양한 서비스 제공자를 코드 변경 없이 전환 가능하도록 설계되어 있습니다.

  • any-agent: any-agent는 다중 모델 기반의 에이전트 프레임워크로, any-llm을 통해 모델을 호출하여 사용합니다. 도구 호출이나 메모리 유지, 멀티턴 대화 시의 상호작용 등을 단일 인터페이스로 다룰 수 있는 것이 특징입니다. 특히, A2A(Agent-to-Agent) 프로토콜 및 MCP(Model Context Protocol) 등을 사용해 에이전트를 서비스 형태로 구성 및 제공할 수 있습니다.

  • any-guardrail: any-guardrail은 모델 및 에이전트 출력(혹은 입력)에 대하여 검증·필터링·안전장치(guardrails) 역할을 수행합니다. 유해 콘텐츠 탐지, 프롬프트 인젝션 차단, 출력의 부적절성 확인 등이 가능하여, 에이전트/모델의 출력이 위험하거나 비허가된 행동을 담고 있을 경우 이를 사전에 탐지하고 거부하거나 후처리할 수 있도록 돕습니다.

  • mcpd (Model Control Proxy Daemon): 에이전트 및 도구(tool), 모델 간 상호작용을 위한 프로토콜 및 런타임 인프라 계층으로, 모델 접근 제어와 인증을 관리합니다. 즉, 에이전트가 호출하는 도구 및 서비스들을 선언적으로 정의하고, 로컬 개발환경부터 클라우드 배포환경까지 균일한 방식으로 관리할 수 있도록 돕습니다. 이를 통해 MCP 서버를 관리하고 도구를 실행하며, 에이전트 ↔ 도구 간 통신을 중계하는 역할을 합니다.

개발자 경험과 커뮤니티 중심의 성장

any-llm은 Apache-2.0 라이선스로 공개된 완전한 오픈소스 프로젝트로, 모든 개발자에게 참여의 문이 열려 있습니다. Mozilla AI 팀은 GitHub 이슈와 Discussion 보드를 통해 활발히 피드백을 수집하고 있으며, Discord 커뮤니티에서도 실시간으로 토론이 이루어지고 있습니다.

이러한 개방형 개발 문화 덕분에 any-llm은 단기간에 안정적이고 실용적인 SDK로 발전하고 있습니다. any-llm에 기여를 원하시는 분은 관련 문서(CONTRIBUTING.md)를 참고해주세요.

:scroll: Any-LLM v1.0 출시 블로그

:books: Any-LLM 공식 문서

:github: Any-LLM 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요