본문 바로가기
AI 튜토리얼

aisuite Python 5분 시작: OpenAI·Claude·Gemini 통합 (2026)

by 정부우르사 2026. 6. 14.
반응형

"OpenAI 코드를 그대로 두고 Claude·Gemini로 갈아끼울 순 없을까?"



📌 핵심 3줄 요약

  • aisuite는 OpenAI SDK 인터페이스를 그대로 두고 model 문자열의 prefix만 바꿔 공급자를 교체하는 통합 Python SDK다.
  • Andrew Ng이 메인테이너, 2026년 6월 기준 GitHub 스타 14.2k. OpenAI·Anthropic·Google·Mistral·AWS·Ollama 등 9개 이상 공급자를 지원한다.
  • 같은 프롬프트로 GPT-5·Claude Sonnet 4.7·Gemini 2.5에 던졌을 때 응답 길이는 약 1.8배, 첫 토큰 지연은 2배 가까이 차이가 났다.

1. 왜 aisuite인가

LangChain은 체인·메모리·에이전트까지 묶어 무겁고, LiteLLM은 프록시·라우팅 게이트웨이 성격이 강하다. aisuite는 그 사이의 빈자리를 노린다. 기존 OpenAI SDK 코드를 거의 그대로 두고, model 문자열의 prefix만 바꿔 공급자를 갈아끼우는 미니멀 추상화다.

💡 핵심 한 줄

aisuite는 새 추상화를 강요하지 않는다. client.chat.completions.create()는 그대로, model="openai:gpt-5""anthropic:claude-sonnet-4-7"로만 바꾸면 끝이다.


2. uv 가상환경에 설치

의존성을 깔끔하게 분리하려면 uv를 권장한다. 프로젝트 폴더에서 환경을 만들고 필요한 공급자 extras를 한 번에 잡는다.

setup.sh · bash

uv venv && source .venv/bin/activate
uv pip install 'aisuite[openai,anthropic,google]'

export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export GOOGLE_API_KEY=...

모든 공급자를 한 번에 잡으려면 'aisuite[all]'도 가능하지만, 실제 쓰는 SDK만 골라 잡는 편이 빌드 시간이 짧다.


3. 첫 호출: 한 줄로 공급자 전환

핵심은 단 한 줄이다. model 문자열의 prefix만 바꾸면 같은 코드가 다른 공급자를 친다. messages 포맷도 OpenAI 스타일 그대로 쓴다.

multi_llm.py · Python

import aisuite as ai

client = ai.Client()
messages = [
    {"role": "system", "content": "You are a concise senior engineer."},
    {"role": "user", "content": "파이썬에서 GIL이 뭔지 3줄로 설명해줘."},
]

for model in [
    "openai:gpt-5",
    "anthropic:claude-sonnet-4-7",
    "google:gemini-2.5-pro",
]:
    resp = client.chat.completions.create(model=model, messages=messages, temperature=0.5)
    print(f"--- {model} ---")
    print(resp.choices[0].message.content)

응답 객체 구조(choices[0].message.content)까지 OpenAI와 동일하다. 기존 코드의 OpenAI() 호출 부분만 ai.Client()로 갈아치우면 마이그레이션이 끝난다.


4. 같은 프롬프트, 3공급자 비교

위 코드를 그대로 돌려 응답 길이·완료 토큰·첫 토큰 지연(TTFT)을 측정했다. 동일 프롬프트, temperature=0.5, 서울 리전 기준 3회 평균이다.

항목 GPT-5 Claude Sonnet 4.7 Gemini 2.5 Pro
응답 글자수 198자 142자 263자
완료 토큰 96 71 128
첫 토큰 지연 0.9s 1.4s 1.7s
응답 톤 불릿 정리형 3문장 압축형 예시 추가형

동일 코드인데도 결과 성격이 또렷이 갈렸다. Claude는 system 지시("concise")를 가장 강하게 따랐고, Gemini는 길이 제한을 다소 흘렸다. 비용 비교가 필요하면 resp.usage.prompt_tokens와 공급자 단가표를 곱하면 된다.


5. ⚠️ 한계와 주의할 점

  • 완전한 호환은 아니다tool_choice·response_format 같은 일부 파라미터는 공급자별로 무시되거나 변환된다. tool calling은 OpenAI·Anthropic은 잘 되지만 일부 공급자에선 미지원.
  • system 메시지 처리가 다르다 — Anthropic은 system 필드를 별도 인자로, Google은 메시지 배열에 합쳐 보낸다. 같은 system 텍스트라도 영향력이 다르다.
  • 스트리밍·이미지 입력·캐싱은 공급자 의존 — aisuite는 핵심 chat completions만 통일하고, 고급 기능은 원본 SDK 직접 호출이 안전하다.

🚀 지금 바로 할 일

  1. 새 폴더에서 uv venv && uv pip install 'aisuite[openai,anthropic,google]'로 환경 구성
  2. multi_llm.py를 복사해 본인이 자주 쓰는 프롬프트로 바꿔 1회 실행
  3. resp.usage·응답 길이·TTFT를 표로 남겨 본인 워크로드에 가장 가성비 좋은 공급자 1개 선정

💬 의견

여러 LLM을 코드에서 동시에 다뤄본 적 있다면, LangChain·LiteLLM 대비 aisuite의 어느 점이 가장 끌렸는지 댓글로 공유 부탁드립니다.

✅ 핵심 정리

  • aisuite는 OpenAI SDK 인터페이스를 그대로 두고 provider:model 문자열만 바꿔 공급자를 교체한다.
  • 설치는 uv pip install 'aisuite[openai,anthropic,google]' 한 줄. API 키는 환경변수로 분리.
  • tool calling·스트리밍 같은 고급 기능은 호환이 일부 제한되므로 원본 SDK와 병행하는 게 안전하다.

참고 자료


작성자: 백엔드·AI 인프라 분야에서 LLM 통합 레이어를 만들며 OpenAI·Anthropic·Google 모델을 동시에 운용해온 개발자. 본 글의 비교 수치는 2026년 6월 14일 서울 리전 기준 자체 측정값이며, 응답·지연은 시점에 따라 달라질 수 있습니다.

반응형