Google Cloud Vertex AI로 AI 모델 사용하기

Google Cloud Vertex AI로 AI 모델 사용하기

AI API를 서비스에 통합하려고 할 때 고민이 하나 생기죠. OpenAI, Anthropic, Google 같은 각 AI 제공업체마다 계정을 만들고 API 키를 따로 관리해야 한다는 겁니다. 이미 Google Cloud를 쓰고 있는 조직이라면 기존 인프라와 동떨어진 별도 인증 체계를 관리하는 게 부담스러울 수 있어요.

Google Cloud의 Vertex AI는 이 문제를 깔끔하게 해결해줍니다. Google의 Gemini 모델뿐 아니라 Anthropic의 Claude, Meta의 Llama 같은 서드파티 모델까지 Google Cloud IAM 인증 하나로 호출할 수 있거든요. AWS Bedrock이 AWS 생태계 안에서 여러 AI 모델을 통합 제공하는 것처럼, Vertex AI는 Google Cloud 생태계에서 같은 역할을 합니다.

이번 글에서는 Vertex AI가 뭔지 간단히 짚어보고, gcloud CLI와 Python SDK로 직접 모델을 호출해보겠습니다.

Vertex AI란?

Vertex AI는 Google Cloud의 통합 AI 플랫폼입니다. 머신러닝 모델을 학습시키고 배포하는 MLOps 기능부터, 이미 만들어진 파운데이션 모델을 API로 호출하는 기능까지 폭넓게 제공하는데요. 이 글에서는 파운데이션 모델을 API로 호출하는 부분에 집중하겠습니다.

직접 AI 제공업체의 API를 쓸 때와 비교하면 어떤 점이 다를까요?

Anthropic API를 직접 호출하려면 Anthropic 계정에서 API 키를 발급받고 환경 변수나 시크릿 매니저로 관리해야 합니다. Vertex AI를 쓰면 Google Cloud IAM으로 접근을 제어하기 때문에 별도의 API 키가 필요 없어요. 서비스 계정(Service Account)에 적절한 역할만 부여하면 자격 증명이 알아서 관리되니까 보안 면에서도 낫고요.

비용은 Google Cloud 통합 청구서에 포함되어 나오고 Cloud Monitoring으로 사용량도 추적되니 기존에 Google Cloud를 운영하던 방식 그대로 이어갈 수 있죠.

사용 가능한 모델

Vertex AI에서 제공하는 모델은 크게 Google 자체 모델과 서드파티 모델로 나뉩니다.

Google의 Gemini 시리즈가 Vertex AI의 대표 모델입니다. Gemini 2.5 Pro는 복잡한 추론과 코딩에 강하고 Gemini 2.5 Flash는 빠른 응답이 필요할 때 적합해요. Gemini 2.0 Flash Lite는 가장 가벼운 모델로 비용에 민감한 대량 처리 작업에 알맞습니다.

서드파티 모델도 꽤 많습니다. Anthropic의 Claude 4 Sonnet과 Claude 3.5 Haiku를 Vertex AI로 호출할 수 있고, Meta의 Llama 4 Scout과 Maverick도 쓸 수 있습니다. Mistral AI의 모델도 지원되고요.

임베딩 모델로는 Google의 text-embedding-005가 있고 이미지 생성은 Imagen 시리즈를 쓸 수 있습니다.

쓸 수 있는 모델은 리전마다 다르기 때문에 본인이 쓰는 리전에서 어떤 모델을 지원하는지 Google Cloud 콘솔의 Model Garden에서 확인해보세요.

사전 준비

Vertex AI를 쓰려면 몇 가지 설정이 필요합니다.

우선 gcloud CLI가 설치되어 있어야 하고 인증도 완료되어 있어야 합니다.

$ gcloud auth login
$ gcloud auth application-default login

gcloud auth login은 gcloud CLI 자체의 인증이고, gcloud auth application-default login은 Python SDK 같은 클라이언트 라이브러리가 사용할 Application Default Credentials(ADC)를 설정하는 겁니다.

다음으로 프로젝트에서 Vertex AI API를 활성화해야 합니다.

$ gcloud services enable aiplatform.googleapis.com

IAM 권한은 Vertex AI User 역할(roles/aiplatform.user)이면 모델 호출에 충분합니다.

$ gcloud projects add-iam-policy-binding my-project \
    --member="user:me@example.com" \
    --role="roles/aiplatform.user"

서드파티 모델(Claude, Llama 등)을 쓰려면 Google Cloud 콘솔의 Model Garden에서 해당 모델을 활성화해야 합니다. Google 자체 모델인 Gemini는 API 활성화만 하면 바로 사용할 수 있어요.

gcloud CLI로 Gemini 호출하기

gcloud CLI로 Gemini 모델을 바로 호출해볼 수 있습니다.

$ gcloud ai models generate-content \
    --model=gemini-2.5-flash \
    --region=us-central1 \
    --contents="Google Cloud Vertex AI를 한 문장으로 설명해줘"

간단한 테스트나 스크립트에서 AI 응답이 필요할 때 쓰기 좋습니다.

Python SDK 설치

실제 애플리케이션에서는 Python SDK를 쓰는 경우가 더 많겠죠. Google의 google-genai 라이브러리를 설치하면 Gemini 모델을 간편하게 호출할 수 있어요.

$ pip install google-genai

Gemini 모델 호출

Vertex AI를 통해 Gemini를 호출하려면 클라이언트를 만들 때 vertexai=True 옵션과 함께 프로젝트 ID, 리전을 지정해주면 됩니다.

vertex_gemini.py
from google import genai

client = genai.Client(
    vertexai=True,
    project="my-project",
    location="us-central1",
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Python으로 피보나치 수열을 생성하는 함수를 작성해줘",
)

print(response.text)

vertexai=True를 빼면 Google AI Studio API를 직접 호출하게 되는데요. Vertex AI를 경유하면 IAM 인증이 적용되고 Google Cloud 보안 정책을 따르게 됩니다.

스트리밍 응답

응답을 실시간으로 받고 싶다면 generate_content_stream 메서드를 쓰면 됩니다.

vertex_stream.py
from google import genai

client = genai.Client(
    vertexai=True,
    project="my-project",
    location="us-central1",
)

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="마이크로서비스 아키텍처의 장점을 설명해줘",
):
    print(chunk.text, end="")
print()

채팅 인터페이스처럼 응답을 점진적으로 보여줘야 하는 애플리케이션에서 체감이 확 달라져요.

시스템 프롬프트와 생성 옵션

시스템 프롬프트를 설정하고 생성 옵션을 조정하는 것도 가능합니다.

vertex_system.py
from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project="my-project",
    location="us-central1",
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="S3와 Cloud Storage의 차이가 뭐야?",
    config=types.GenerateContentConfig(
        system_instruction="당신은 클라우드 전문가입니다. 기술 질문에 한국어로 답변합니다.",
        temperature=0.7,
        max_output_tokens=1024,
    ),
)

print(response.text)

temperature는 0에 가까울수록 일관된 응답이 나오고 1에 가까울수록 창의적인 응답이 나와요. max_output_tokens로는 생성할 최대 토큰 수를 제한합니다.

대화 이력 관리

챗봇처럼 맥락을 유지하는 대화를 만들고 싶으면 대화 이력을 함께 전달하면 됩니다.

vertex_chat.py
from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project="my-project",
    location="us-central1",
)

history = []


def chat(user_message):
    history.append(
        types.Content(
            role="user",
            parts=[types.Part.from_text(text=user_message)],
        )
    )

    response = client.models.generate_content(
        model="gemini-2.5-flash",
        contents=history,
        config=types.GenerateContentConfig(
            system_instruction="당신은 클라우드 전문가입니다.",
            max_output_tokens=1024,
        ),
    )

    history.append(
        types.Content(
            role="model",
            parts=[types.Part.from_text(text=response.text)],
        )
    )

    return response.text


print(chat("Cloud Run이 뭐야?"))
print(chat("방금 설명한 거랑 Cloud Functions는 뭐가 달라?"))

history 리스트에 대화 기록을 쌓아가면서 매번 전체 이력을 전달하는 방식이에요. Vertex AI 자체는 상태를 유지하지 않으니까 대화 맥락은 클라이언트 쪽에서 관리해야 합니다.

서드파티 모델: Claude 호출

Vertex AI가 좋은 또 다른 이유는 서드파티 모델도 같은 인증 체계로 호출할 수 있다는 점이에요. Anthropic의 Claude를 Vertex AI로 호출해보겠습니다.

먼저 Anthropic의 Python SDK를 설치합니다.

$ pip install anthropic[vertex]
vertex_claude.py
from anthropic import AnthropicVertex

client = AnthropicVertex(
    project_id="my-project",
    region="us-east5",
)

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Google Cloud Vertex AI를 한 문장으로 설명해줘",
        }
    ],
)

print(message.content[0].text)

눈여겨볼 점은 API 키가 필요 없다는 겁니다. AnthropicVertex 클라이언트는 Google Cloud의 ADC(Application Default Credentials)를 자동으로 사용하기 때문에, gcloud auth application-default login만 해두면 바로 호출할 수 있어요.

Anthropic API를 직접 쓸 때와 거의 동일한 인터페이스라서 기존 코드를 옮기기도 쉬워요. AnthropicVertex로 클라이언트만 바꾸고 api_key 파라미터를 빼면 나머지 코드는 그대로 쓸 수 있거든요.

모델 갈아끼기

Gemini 시리즈 안에서는 model 파라미터만 바꾸면 바로 전환됩니다.

# Gemini 2.5 Flash로 호출
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=contents,
)

# Gemini 2.5 Pro로 전환
response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents=contents,
)

# Gemini 2.0 Flash Lite로 전환
response = client.models.generate_content(
    model="gemini-2.0-flash-lite",
    contents=contents,
)

비용이 민감한 작업에는 Flash Lite를 쓰고 높은 품질이 필요하면 Pro를 쓰는 식으로 용도에 따라 나누면 됩니다.

다만 Gemini와 Claude는 SDK가 다르기 때문에 완전히 같은 코드로 전환할 수는 없어요. AWS Bedrock의 Converse API처럼 통합된 인터페이스가 있으면 좋겠지만 Vertex AI에서는 각 모델 제공업체의 SDK를 써야 합니다. 그래도 인증만큼은 Google Cloud IAM으로 통합되어 있으니 API 키를 여러 개 관리하는 것보다는 훨씬 편하죠.

Grounding과 Google 검색 연동

Vertex AI만의 재미있는 기능 중 하나가 Grounding입니다. 모델이 답변할 때 Google 검색 결과를 참고하게 해서 최신 정보를 반영한 응답을 만들어낼 수 있어요.

vertex_grounding.py
from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project="my-project",
    location="us-central1",
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="2026년 3월 현재 가장 인기 있는 프로그래밍 언어는?",
    config=types.GenerateContentConfig(
        tools=[types.Tool(google_search=types.GoogleSearch())],
    ),
)

print(response.text)

LLM의 학습 데이터에 포함되지 않은 최신 정보가 필요한 질문에 특히 유용해요. 검색 결과의 출처 URL도 함께 제공되기 때문에 답변의 근거를 확인하기도 좋습니다.

비용

Vertex AI의 비용 구조는 모델마다 다르지만 기본적으로 입력 토큰과 출력 토큰에 대해 각각 과금돼요.

Gemini 2.5 Flash의 경우 입력 100만 토큰당 $0.15, 출력 100만 토큰당 $0.60 정도로 꽤 저렴합니다. Gemini 2.5 Pro는 입력 $1.25, 출력 $10.00으로 올라가지만 그만큼 성능이 좋고요. Gemini 2.0 Flash Lite는 입력 $0.075, 출력 $0.30으로 가장 저렴해요.

서드파티 모델은 각 제공업체의 가격에 Google Cloud 마진이 더해지기 때문에 직접 API를 쓰는 것보다 살짝 비쌀 수 있습니다. 다만 별도의 API 키 관리 없이 Google Cloud 통합 청구서로 받을 수 있다는 점을 생각하면 충분히 납득할 만해요.

처음에는 Flash Lite로 시작해서 필요에 따라 Flash나 Pro로 올려보는 게 비용을 아끼면서 맞는 모델을 찾는 좋은 방법이에요.

마치며

Vertex AI는 이미 Google Cloud를 쓰고 있는 조직이 AI를 도입할 때 가장 자연스러운 선택지입니다. IAM 기반 접근 제어, Cloud Monitoring 사용량 추적, 통합 청구서까지 기존 운영 방식을 그대로 유지할 수 있으니까요.

Gemini 모델을 쓰려면 google-genai SDK, Claude를 쓰려면 anthropic[vertex] SDK를 써야 하는 점이 AWS Bedrock의 통합 Converse API와 다른 부분이긴 합니다. 그래도 인증이 Google Cloud IAM으로 통합되어 있어서 여러 AI 제공업체의 API 키를 따로 관리하는 번거로움에서 벗어나죠. Grounding으로 Google 검색까지 연동된다는 점도 Vertex AI만의 매력이에요.

더 자세한 내용은 Vertex AI 공식 문서를 참고하세요.

This work is licensed under CC BY 4.0 CC BY

개발자를 위한 뉴스레터

달레가 정리한 AI 개발 트렌드와 직접 만든 콘텐츠를 전해드립니다.

Discord