VertexAIGeminiGenerator

VertexAIGeminiGenerator

Google Gemini 모델로 텍스트를 생성할 수 있게 해 주는 컴포넌트예요. 텍스트뿐 아니라 이미지·오디오·비디오를 섞은 멀티모달 프롬프트도 지원해요.

Deprecation 공지

이 통합은 deprecated된 google-generativeai SDK를 사용하며, 이 SDK는 2025년 8월 이후 지원이 종료될 예정이에요.

새로운 GoogleGenAIChatGenerator 통합으로 전환할 것을 권장해요.

파이프라인에서 가장 흔한 위치: PromptBuilder 다음 필수 run 변수: parts — Gemini에 프롬프트로 보낼 이미지·오디오·비디오·텍스트가 섞인 가변 길이 리스트 출력 변수: replies — 모델이 생성한 모든 답변을 담은 문자열 또는 딕셔너리 리스트 API 레퍼런스: Google Vertex GitHub 링크: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/google_vertex 패키지 이름: google-vertex-haystack

출처: 문서

본문

VertexAIGeminiGenerator는 gemini-3.8-flash, gemini-3.7-flash, gemini-2.5-pro, gemini-2.5-flash 같은 Gemini 모델을 지원해요. 모델 마이그레이션은 Google의 모델 버전 페이지를 확인하세요.

사용 가능한 모델에 대한 자세한 내용은 https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models를 참고하세요.

info

Gemini의 전체 기능을 살펴보려면 이 글과 관련 Colab 노트북을 확인해 보세요.

파라미터 개요 (Parameters Overview)

VertexAIGeminiGenerator는 인증에 Google Cloud Application Default Credentials (ADC)를 사용해요. ADC 설정 방법은 공식 문서를 참고하세요.

Google Vertex AI 엔드포인트를 사용하도록 승인된 프로젝트에 접근 권한이 있는 계정을 쓰는 게 중요하다는 점을 기억하세요.

프로젝트 ID는 GCP 리소스 매니저에서 찾거나, 터미널에서 gcloud projects list를 실행해 찾을 수 있어요. gcloud CLI에 대한 자세한 내용은 공식 문서를 참고하세요.

스트리밍 (Streaming)

이 Generator는 LLM에서 나오는 토큰을 출력으로 직접 스트리밍할 수 있어요. streaming_callback init 파라미터에 함수를 넘기면 돼요.

사용법 (Usage)

VertexAIGeminiGenerator를 쓰려면 google-vertex-haystack 패키지를 설치해야 해요:

pip install google-vertex-haystack

단독으로 사용하기 (On its own)

기본 사용법:

from haystack_integrations.components.generators.google_vertex import (
    VertexAIGeminiGenerator,
)

gemini = VertexAIGeminiGenerator()
result = gemini.run(parts=["What is the most interesting thing you know?"])
for answer in result["replies"]:
    print(answer)

고급 사용법, 멀티모달 프롬프트:

import requests
from haystack.dataclasses.byte_stream import ByteStream
from haystack_integrations.components.generators.google_vertex import (
    VertexAIGeminiGenerator,
)

URLS = [
    "https://raw.githubusercontent.com/silvanocerza/robots/main/robot1.jpg",
    "https://raw.githubusercontent.com/silvanocerza/robots/main/robot2.jpg",
    "https://raw.githubusercontent.com/silvanocerza/robots/main/robot3.jpg",
    "https://raw.githubusercontent.com/silvanocerza/robots/main/robot4.jpg",
]
images = [
    ByteStream(data=requests.get(url).content, mime_type="image/jpeg") for url in URLS
]

gemini = VertexAIGeminiGenerator()
result = gemini.run(parts=["What can you tell me about this robots?", *images])
for answer in result["replies"]:
    print(answer)

파이프라인 안에서 사용하기 (In a pipeline)

RAG 파이프라인에서:

from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.builders import PromptBuilder
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.generators.google_vertex import (
    VertexAIGeminiGenerator,
)

docstore = InMemoryDocumentStore()
docstore.write_documents(
    [
        Document(content="Rome is the capital of Italy"),
        Document(content="Paris is the capital of France"),
    ],
)
query = "What is the capital of France?"

template = """Given the following information, answer the question.
Context:
{% for document in documents %}
    {{ document.content }}
{% endfor %}
Question: {{ query }}?
"""

pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=docstore))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component("gemini", VertexAIGeminiGenerator())
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "gemini")

res = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
print(res)

추가 레퍼런스 (Additional References)

🧑‍🍳 쿡북: Function Calling and Multimodal QA with Gemini

더 알아보기 (Learn more)