Gemini 요청에 이미지를 추가하여 포함된 이미지 콘텐츠를 이해하는 것과 관련된 작업을 수행할 수 있습니다. 이 페이지에서는 Google Cloud 콘솔과 Vertex AI API를 사용하여 Vertex AI에서 Gemini에 대한 요청에 이미지를 추가하는 방법을 보여줍니다.
지원되는 모델
다음 표에는 이미지 인식을 지원하는 모델이 나와 있습니다.
모델 | 이미지 형식 세부정보 |
---|---|
Gemini 1.5 Flash Gemini 1.5 Flash 모델 카드로 이동 |
프롬프트당 최대 이미지: 3,000개 |
Gemini 1.5 Pro Gemini 1.5 Pro 모델 카드로 이동 |
프롬프트당 최대 이미지: 3,000개 |
Gemini 1.0 Pro Vision Gemini 1.0 Pro Vision 모델 카드로 이동 |
프롬프트당 최대 이미지: 16개 |
Gemini 모델에서 지원되는 언어 목록은 모델 정보 Google 모델을 참조하세요. 멀티모달 프롬프트를 설계하는 방법에 대한 자세한 내용은 멀티모달 프롬프트 설계를 참조하세요. 모바일 및 웹 앱에서 Gemini를 직접 사용할 수 있는 방법을 찾는 경우에는 Android, Swift, 웹을 위한 Google AI SDK를 참조하세요.
요청에 이미지 추가
Gemini에 요청할 때 하나 또는 여러 이미지를 추가할 수 있습니다.
단일 이미지
다음 각 탭의 샘플 코드는 이미지에 포함된 항목을 식별하는 다양한 방법을 보여줍니다. 이 샘플은 모든 Gemini 멀티모달 모델에서 작동합니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generate_content
의 stream
매개변수를 사용합니다.
response = model.generate_content(contents=[...], stream = True)
비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False
로 설정합니다.
샘플 코드
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Java 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Java SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
public ResponseStreamgenerateContentStream(Content content)
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
public GenerateContentResponse generateContent(Content content)
샘플 코드
Node.js
이 샘플을 사용해 보기 전에 생성형 AI 빠른 시작: Node.js SDK 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Gemini용 Node.js SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContentStream(request);
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContent(request);
샘플 코드
REST
Vertex AI API를 사용하여 게시자 모델 엔드포인트에 POST 요청을 보내면 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- GENERATE_RESPONSE_METHOD: 모델에서 생성하려는 응답 유형입니다.
모델의 응답을 반환할 방법을 생성하는 메서드를 선택합니다.
streamGenerateContent
: 지연 시간에 대한 인식을 줄이기 위해 응답이 생성되는 동안 스트리밍됩니다.generateContent
: 응답은 완전히 생성된 후에 반환됩니다.
- LOCATION: 요청을 처리하는 리전입니다. 사용 가능한 옵션은 다음과 같습니다.
클릭하여 사용 가능한 리전 펼치기
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID: 프로젝트 ID
- MODEL_ID: 사용할 멀티모달 모델의 모델 ID입니다. 옵션은 다음과 같습니다.
gemini-1.0-pro-vision
- ROLE: 콘텐츠와 연결된 대화의 역할입니다. 싱글턴 사용 사례에서도 역할을 지정해야 합니다.
허용되는 값은 다음과 같습니다.
USER
: 전송한 콘텐츠를 지정합니다.
- TEXT: 프롬프트에 포함할 텍스트 안내입니다.
- B64_BASE: 프롬프트에서 인라인을 포함할 이미지, PDF, 또는 동영상의 base64 인코딩입니다. 미디어를 인라인으로 포함할 경우 MIMETYPE도 지정해야 합니다.
- FILE_URI: 프롬프트에 포함할 파일의 Cloud Storage URI입니다. 버킷 객체는 공개적으로 읽을 수 있거나 요청을 보내는 동일한 Google Cloud 프로젝트에 있어야 합니다. 또한 파일의 미디어 유형(MIMETYPE)을 지정해야 합니다.
- MIME_TYPE:
data
또는fileUri
필드에 지정된 이미지 또는 동영상의 미디어 유형입니다. 허용되는 값은 다음과 같습니다.클릭하여 MIME 유형 펼치기
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
- SAFETY_CATEGORY: 기준점을 구성할 안전 카테고리입니다. 허용되는 값은 다음과 같습니다.
클릭하여 안전 카테고리 펼치기
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD: 확률에 따라 지정된 안전 카테고리에 속할 수 있는 응답 차단의 기준점입니다. 허용되는 값은 다음과 같습니다.
클릭하여 차단 기준점 펼치기
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(기본)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
는 가장 많이 차단하며BLOCK_ONLY_HIGH
는 가장 적게 차단합니다. - TEMPERATURE: 강도는 응답 생성 중 샘플링에 사용되며
topP
및topK
가 적용될 때 발생합니다. 강도는 토큰 선택의 무작위성 수준을 제어합니다. 강도가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도가0
이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.
- TOP_P: Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 Top-P 값과 같아질 때까지 확률이 가장 높은 것부터(Top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 0.3, 0.2, 0.1이고 Top-P 값이
0.5
이면 모델이 강도를 사용해서 다음 토큰으로 A 또는 B를 선택하고 C는 후보에서 제외합니다.임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
- TOP_K: Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가
1
이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가3
이면 강도를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도 샘플링을 사용하여 최종 토큰을 선택합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
- MAX_OUTPUT_TOKENS: 응답에서 생성될 수 있는 토큰의 최대 개수. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.
응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.
- STOP_SEQUENCES:
문자열 중 하나가 응답에서 발견되면 모델에 텍스트 생성을 중지하도록 지시하는 문자열 목록을 지정합니다. 문자열이 응답에 여러 번 표시되면 처음 발견된 위치에서 응답이 잘립니다.
문자열은 대소문자를 구분합니다.
예를 들어stopSequences
가 지정되지 않았을 때 다음이 반환되면:
public static string reverse(string myString)
이 때stopSequences
가["Str", "reverse"]
로 설정된 응답이 다음과 같이 반환됩니다.
public static string
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
JSON 요청 본문:
{ "contents": { "role": "ROLE", "parts": [ { "inlineDATA": { "mimeType": "MIME_TYPE", "data": "B64_BASE_IMAGE" } }, { "fileData": { "mimeType": "MIME_TYPE", "fileUri": "FILE_URI" } }, { "text": "TEXT" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다.
curl 명령어 예시
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": {
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "image/png",
"fileUri": "gs://my-bucket/images/cat.png"
}
},
{
"text": "Describe this picture."
},
]
},
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.4,
"topP": 1,
"topK": 32,
"maxOutputTokens": 2048,
}
}'
여러 이미지
다음 각 탭은 프롬프트 요청에 여러 이미지를 포함하는 다양한 방법을 보여줍니다. 이러한 이미지 샘플은 모든 Gemini 멀티모달 모델에서 작동합니다.
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generate_content
의 stream
매개변수를 사용합니다.
response = model.generate_content(contents=[...], stream = True)
비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False
로 설정합니다.
샘플 코드
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Java 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Java SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
public ResponseStreamgenerateContentStream(Content content)
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
public GenerateContentResponse generateContent(Content content)
샘플 코드
Node.js
이 샘플을 사용해 보기 전에 생성형 AI 빠른 시작: Node.js SDK 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Gemini용 Node.js SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContentStream(request);
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContent(request);
샘플 코드
Go
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Go 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Go SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답을 생성할지 아니면 비스트리밍 응답을 생성할지 선택할 수 있습니다. 스트리밍은 생성되는 프롬프트에 대한 응답을 수신합니다. 즉, 모델이 출력 토큰을 생성하는 즉시 출력 토큰이 전송됩니다. 프롬프트에 대한 비스트리밍 응답은 모든 출력 토큰이 생성된 후에만 전송됩니다.
스트리밍 응답의 경우 GenerateContentStream
메서드를 사용합니다.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
비스트리밍 응답의 경우 GenerateContent
메서드를 사용합니다.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
샘플 코드
C#
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 Vertex AI C# API 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST
Vertex AI API를 사용하여 게시자 모델 엔드포인트에 POST 요청을 보내면 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- GENERATE_RESPONSE_METHOD: 모델에서 생성하려는 응답 유형입니다.
모델의 응답을 반환할 방법을 생성하는 메서드를 선택합니다.
streamGenerateContent
: 지연 시간에 대한 인식을 줄이기 위해 응답이 생성되는 동안 스트리밍됩니다.generateContent
: 응답은 완전히 생성된 후에 반환됩니다.
- LOCATION: 요청을 처리하는 리전입니다. 사용 가능한 옵션은 다음과 같습니다.
클릭하여 사용 가능한 리전 펼치기
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- PROJECT_ID: 프로젝트 ID
- MODEL_ID: 사용할 멀티모달 모델의 모델 ID입니다. 옵션은 다음과 같습니다.
gemini-1.0-pro-vision
- ROLE: 콘텐츠와 연결된 대화의 역할입니다. 싱글턴 사용 사례에서도 역할을 지정해야 합니다.
허용되는 값은 다음과 같습니다.
USER
: 전송한 콘텐츠를 지정합니다.
- TEXT: 프롬프트에 포함할 텍스트 안내입니다.
- B64_BASE: 프롬프트에서 인라인을 포함할 이미지, PDF, 또는 동영상의 base64 인코딩입니다. 미디어를 인라인으로 포함할 경우 MIMETYPE도 지정해야 합니다.
- FILE_URI: 프롬프트에 포함할 파일의 Cloud Storage URI입니다. 버킷 객체는 공개적으로 읽을 수 있거나 요청을 보내는 동일한 Google Cloud 프로젝트에 있어야 합니다. 또한 파일의 미디어 유형(MIMETYPE)을 지정해야 합니다.
- MIME_TYPE:
data
또는fileUri
필드에 지정된 이미지 또는 동영상의 미디어 유형입니다. 허용되는 값은 다음과 같습니다.클릭하여 MIME 유형 펼치기
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
- SAFETY_CATEGORY: 기준점을 구성할 안전 카테고리입니다. 허용되는 값은 다음과 같습니다.
클릭하여 안전 카테고리 펼치기
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD: 확률에 따라 지정된 안전 카테고리에 속할 수 있는 응답 차단의 기준점입니다. 허용되는 값은 다음과 같습니다.
클릭하여 차단 기준점 펼치기
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(기본)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
는 가장 많이 차단하며BLOCK_ONLY_HIGH
는 가장 적게 차단합니다. - TEMPERATURE: 강도는 응답 생성 중 샘플링에 사용되며
topP
및topK
가 적용될 때 발생합니다. 강도는 토큰 선택의 무작위성 수준을 제어합니다. 강도가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도가0
이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.
- TOP_P: Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 Top-P 값과 같아질 때까지 확률이 가장 높은 것부터(Top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 0.3, 0.2, 0.1이고 Top-P 값이
0.5
이면 모델이 강도를 사용해서 다음 토큰으로 A 또는 B를 선택하고 C는 후보에서 제외합니다.임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
- TOP_K: Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가
1
이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가3
이면 강도를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도 샘플링을 사용하여 최종 토큰을 선택합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
- MAX_OUTPUT_TOKENS: 응답에서 생성될 수 있는 토큰의 최대 개수. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.
응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.
- STOP_SEQUENCES:
문자열 중 하나가 응답에서 발견되면 모델에 텍스트 생성을 중지하도록 지시하는 문자열 목록을 지정합니다. 문자열이 응답에 여러 번 표시되면 처음 발견된 위치에서 응답이 잘립니다.
문자열은 대소문자를 구분합니다.
예를 들어stopSequences
가 지정되지 않았을 때 다음이 반환되면:
public static string reverse(string myString)
이 때stopSequences
가["Str", "reverse"]
로 설정된 응답이 다음과 같이 반환됩니다.
public static string
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
JSON 요청 본문:
{ "contents": { "role": "ROLE", "parts": [ { "inlineDATA": { "mimeType": "MIME_TYPE", "data": "B64_BASE_IMAGE" } }, { "fileData": { "mimeType": "MIME_TYPE", "fileUri": "FILE_URI" } }, { "text": "TEXT" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다.
curl 명령어 예시
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": {
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "image/png",
"fileUri": "gs://my-bucket/images/cat.png"
}
},
{
"text": "Describe this picture."
},
]
},
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.4,
"topP": 1,
"topK": 32,
"maxOutputTokens": 2048,
}
}'
콘솔
Google Cloud 콘솔을 사용하여 멀티모달 프롬프트를 보내려면 다음을 수행합니다.
- Google Cloud 콘솔의 Vertex AI 섹션에서 Vertex AI 스튜디오 페이지로 이동합니다.
- 프롬프트 설계(싱글턴)에서 열기를 클릭합니다.
모델 및 매개변수를 구성합니다.
- 리전: 사용할 리전을 선택합니다.
- 모델: Gemini Pro Vision을 선택합니다.
강도: 슬라이더 또는 텍스트 상자를 사용해서 강도 값을 입력합니다.
강도(temperature)는 응답 생성 중 샘플링에 사용되며topP
및topK
가 적용될 때 발생합니다. 강도는 토큰 선택의 무작위성 수준을 제어합니다. 강도가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도가0
이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.
토큰 제한: 슬라이더 또는 텍스트 상자를 사용하여 최대 출력 한도의 값을 입력합니다.
응답에서 생성될 수 있는 토큰의 최대 개수입니다. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.
- 중지 시퀀스 추가: 모델이 발생할 경우 응답 생성을 중지하는 일련의 문자(공백 포함)인 중지 시퀀스를 입력합니다. 이 시퀀스는 응답에 포함되지 않습니다. 최대 5개의 중지 시퀀스를 추가할 수 있습니다.
- (선택사항) 고급 매개변수를 구성하려면 고급을 클릭하고 다음과 같이 구성합니다.
Top-K: 슬라이더 또는 텍스트 상자를 사용하여 Top-K의 값을 입력합니다.
Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가1
이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가3
이면 강도를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도 샘플링을 사용하여 최종 토큰을 선택합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
- Top-P: 슬라이더 또는 텍스트 상자를 사용하여 Top-P의 값을 입력합니다.
토큰의 확률 합계가 Top-P 값과 같아질 때까지 확률이 가장 높은 순에서 낮은 순으로 토큰이 선택됩니다. 최소 변수 결과의 경우 Top-P를
0
으로 설정합니다. Google Cloud 콘솔은 프롬프트가 생성될 때 응답을 받는 스트리밍만 지원합니다. 메시지 상자에 메시지를 입력하여 모델과 대화를 시작할 준비가 된 상태입니다.
모델은 이전 메시지를 새 응답의 컨텍스트로 사용합니다. 프롬프트에 이미지, PDF, 또는 동영상을 포함하려면
아이콘을 클릭합니다.멀티모달 프롬프트에 대한 자세한 내용은 멀티모달 프롬프트를 참조하세요.
- (선택사항) 프롬프트를 내 프롬프트에 저장하려면 저장을 클릭합니다.
- (선택사항) 프롬프트에 대해 Python 코드 또는 curl 명령어를 가져오려면 코드 가져오기를 클릭합니다.
- (선택사항) 이전 메시지를 모두 지우려면 대화 지우기를 클릭합니다.
클릭하여 고급 구성 펼치기
모델 매개변수 설정
멀티모달 모델에서 다음 모델 매개변수를 설정할 수 있습니다.
Top-P
Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 Top-P 값과 같아질 때까지 확률이 가장 높은 것부터(Top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 0.3, 0.2, 0.1이고 Top-P 값이 0.5
이면 모델이 강도를 사용해서 다음 토큰으로 A 또는 B를 선택하고 C는 후보에서 제외합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
Top-K
Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가 1
이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가 3
이면 강도를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.
각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 강도 샘플링을 사용하여 최종 토큰을 선택합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
강도
강도(temperature)는 응답 생성 중 샘플링에 사용되며 topP
및 topK
가 적용될 때 발생합니다. 강도는 토큰 선택의 무작위성 수준을 제어합니다.
강도가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 강도가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도가 0
이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.
모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.
유효한 매개변수 값
매개변수 | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1~40(기본값 32) | 지원되지 않음 | 지원되지 않음 |
Top-P | 0~1.0(기본값 1.0) | 0~1.0(기본값 0.95) | 0~1.0(기본값 0.95) |
강도 | 0~1.0(기본값 0.4) | 0~2.0(기본값 1.0) | 0~2.0(기본값 1.0) |
이미지 요구사항
Gemini 멀티모달 모델은 다음과 같은 이미지 MIME 유형을 지원합니다.
이미지 MIME 유형 | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
PNG - image/png |
|||
JPEG - image/jpeg |
이미지의 픽셀 수에는 제한이 없습니다. 그러나 큰 이미지는 원래 가로세로 비율을 유지하면서 최대 해상도인 3072 x 3072에 맞게 축소 및 패딩됩니다.
Gemini 1.0 Pro Vision의 경우 각 이미지는 258개의 토큰을 차지합니다.
Gemini 1.5 Flash 및 Gemini 1.5 Pro:
- 이미지의 가로세로 비율과 크기가 둘 다 384 이하인 경우 258개의 토큰이 사용됩니다
- 이미지의 가로 세로 비율 중 한 변의 길이가 384보다 크면 이미지가 타일로 잘립니다. 기본적으로 각 타일 크기는 (너비 또는 높이 중에서) 가장 작은 치수를 1.5로 나눈 값으로 설정됩니다. 필요한 경우 각 타일은 256보다 작지 않고 768보다 크지 않도록 조정됩니다. 그런 다음 각 타일의 크기가 768x768로 조정되고 258개의 토큰이 사용됩니다.
프롬프트 요청에 포함할 수 있는 최대 이미지 수는 다음과 같습니다.
- Gemini 1.0 Pro Vision의 경우 16개
- Gemini 1.5 Flash 및 Gemini 1.5 Pro의 경우 3,000개
권장사항
이미지를 사용할 때 최상의 결과를 얻으려면 다음 권장사항과 정보를 사용하세요.
- 단일 이미지가 포함된 프롬프트를 사용하면 이미지에서 텍스트를 감지하려는 경우 여러 이미지가 포함된 프롬프트보다 더 나은 결과를 얻을 수 있습니다.
- 프롬프트에 단일 이미지가 포함된 경우 텍스트 프롬프트 앞에 이미지를 배치합니다.
프롬프트에 여러 이미지가 있고 나중에 프롬프트에서 이를 참조하거나 모델이 모델 응답에서 이를 참조하도록 하려는 경우 각 이미지 앞에 색인을 지정하면 도움이 될 수 있습니다. 색인에
a
b
c
또는image 1
image 2
image 3
을 사용하세요. 다음은 프롬프트에서 색인이 생성된 이미지를 사용하는 예시입니다.image 1 <piano_recital.jpeg> image 2 <family_dinner.jpeg> image 3 <coffee_shop.jpeg> Write a blogpost about my day using image 1 and image 2. Then, give me ideas for tomorrow based on image 3.
이미지 해상도가 높을수록 결과가 좋아집니다.
프롬프트에 몇 가지 예시를 포함하세요.
이미지를 적절한 방향으로 회전한 후에 프롬프트에 추가하세요.
흐릿한 이미지는 사용하지 마세요.
제한사항
Gemini 멀티모달 모델은 많은 멀티모달 사용자 사례에서 강력하지만 모델의 제한사항을 이해하는 것이 중요합니다.
- 공간 추론: 이 모델은 이미지에 있는 텍스트 또는 객체 수를 정확하게 맞히지 못합니다. 대략적인 객체 수만 반환할 수 있습니다.
- 의료 용도: 이 모델은 의료용 영상(예: X선 및 CT 촬영)을 해석하거나 의료 조언을 제공하는 데 적합하지 않습니다.
- 사람 인식: 이 모델은 이미지에서 유명인이 아닌 사람을 식별하는 데 적합하지 않습니다.
- 콘텐츠 검토: 이 모델은 Google 안전 정책을 위반하는 이미지에 대해 답변을 제공하지 않습니다.
- 정확성: 이 모델은 저품질 이미지, 회전된 이미지 또는 매우 해상도가 매우 낮은 이미지를 해석할 때 할루시네이션 또는 오류가 발생할 수 있습니다. 이 모델은 이미지 문서에서 필기 입력 텍스트를 해석할 때도 할루시네이션이 발생할 수 있습니다.
다음 단계
- Gemini 멀티모달 모델로 빌드 시작하기. 신규 고객에게는 $300의 무료 Google Cloud 크레딧이 제공되어 Gemini로 무엇을 할 수 있는지 살펴볼 수 있습니다.
- 채팅 프롬프트 요청 보내기 방법 알아보기
- 책임감 있는 AI 권장사항 및 Vertex AI 안전 필터 알아보기