Inference API

Vertex AI Gemini API는 멀티모달 프롬프트를 입력으로 지원하고 텍스트나 코드를 출력합니다.

지원되는 모델:

  • Gemini 1.0 Pro
    • gemini-1.0-pro
    • gemini-1.0-pro-001
    • gemini-1.0-pro-002
  • Gemini 1.0 Pro Vision
    • gemini-1.0-pro-vision
    • gemini-1.0-pro-vision-001
  • Gemini 1.0 Ultra
    • gemini-1.0-ultra
    • gemini-1.0-ultra-001
  • Gemini 1.0 Ultra Vision
    • gemini-1.0-ultra-vision
    • gemini-1.0-ultra-vision-001
  • Gemini 1.5 Pro
    • gemini-1.5-pro-preview-0409
  • Gemini Experimental
    • gemini-experimental

제한사항:

  • 너무 많은 이미지를 제공하는 경우 지연 시간이 늘어남

구문

  • PROJECT_ID = PROJECT_ID
  • REGION = us-central1
  • MODEL_ID = gemini-1.5-pro-preview-0409

비스트리밍

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
generation_config = GenerationConfig(...)

model_response = gemini_model.generate_content([...], generation_config, safety_settings={...})

스트리밍

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([...], generation_config, safety_settings={...}, stream=True)

매개변수 목록

매개변수

contents

Content

모델과의 현재 대화 콘텐츠입니다.

싱글턴 쿼리의 경우 이는 단일 인스턴스입니다. 멀티턴 쿼리의 경우 이는 대화 기록과 최근 요청이 포함된 반복 필드입니다.

system_instruction

선택사항: Content

사용자가 모델의 시스템 안내를 제공했습니다.

참고: 부분에는 텍스트만 사용해야 하며 각 부분의 콘텐츠는 별도의 단락에 위치합니다.

tools

선택사항입니다. Functions Calling API를 참조하세요.

tool_config

선택사항입니다. Functions Calling API를 참조하세요.

safety_settings

선택사항: SafetySetting

안전하지 않은 콘텐츠를 차단하는 요청별 설정입니다.

GenerateContentResponse.candidates에 적용되었습니다.

generation_config

선택사항: GenerationConfig

생성 구성

내용

이 클래스는 roleparts라는 두 가지 기본 속성으로 구성됩니다. role 속성은 콘텐츠를 생성하는 개별 사용자를 나타내고 parts 속성에는 여러 요소가 포함되며 각 요소는 메시지 내 데이터 세그먼트를 나타냅니다.

매개변수

role

선택사항: string

메시지를 생성하는 항목의 ID이며 user 또는 model여야 합니다.

  • user: 실제 사람이 메시지(일반적으로 사용자가 만든 메시지)를 보냈음을 나타냅니다.
  • model: 메시지가 모델에서 생성되었음을 나타냅니다.

model 값은 멀티턴 대화 중에 모델의 메시지를 대화에 삽입하는 데 사용됩니다.

멀티턴이 아닌 대화의 경우 이 필드를 비워 두거나 설정하지 않을 수 있습니다.

parts

Part

단일 메시지를 구성하는 순서가 지정된 부분의 목록입니다. 부분마다 IANA MIME 유형이 다를 수 있습니다.

일부

매개변수

text

선택사항: string

텍스트 프롬프트 또는 코드 스니펫입니다.

inline_data

선택사항: Blob

원시 바이트의 인라인 데이터입니다.

file_data

선택사항: FileData

파일에 저장된 데이터입니다.

function_call

선택사항: FunctionCall.

FunctionDeclaration.name을 나타내는 문자열과 모델에서 예측한 함수 호출의 매개변수가 포함된 구조화된 JSON 객체가 포함됩니다.

Functions Calling API를 참조하세요.

function_response

선택사항: FunctionResponse.

FunctionDeclaration.name을 나타내는 문자열과 함수 호출의 출력이 포함된 구조화된 JSON 객체가 포함된 FunctionCall의 결과 출력입니다. 모델에 대한 컨텍스트로 사용됩니다.

Functions Calling API를 참조하세요.

video_metadata

선택사항: VideoMetadata

동영상 메타데이터입니다. 메타데이터는 동영상 데이터가 inline_data 또는 file_data에 표시되는 동안에만 지정되어야 합니다.

Blob

매개변수

mime_type

string

데이터의 IANA MIME 유형입니다.

data

bytes

원시 바이트입니다.

FileData

매개변수

mime_type

string

데이터의 IANA MIME 유형입니다.

file_uri

문자열

데이터를 저장하는 파일에 대한 Cloud Storage URI입니다.

FunctionCall

매개변수

name

string

호출하려는 함수의 이름입니다.

args

Struct

JSON 객체 형식의 함수 매개변수와 값입니다.

매개변수 세부정보는 Function Calling API를 참조하세요.

FunctionResponse

매개변수

name

string

호출하려는 함수의 이름입니다.

response

Struct

JSON 객체 형식의 함수 응답입니다.

VideoMetadata

매개변수

start_offset

선택사항: google.protobuf.Duration

동영상의 시작 오프셋

end_offset

선택사항: google.protobuf.Duration

동영상의 종료 오프셋

SafetySetting

매개변수

category

선택사항: HarmCategory

피해 카테고리입니다.

threshold

선택사항: HarmBlockThreshold

피해 차단 기준점

max_influential_terms

선택사항: int

안전 점수에 가장 많이 기여하는 영향력 있는 용어의 최대 개수로, 차단될 가능성이 있습니다.

method

선택사항: HarmBlockMethod

확률 또는 심각도 점수에 기준점이 사용되는지 지정합니다. 지정하지 않으면 기준점이 확률 점수에 사용됩니다.

HarmCategory

매개변수

HARM_CATEGORY_UNSPECIFIED

피해 카테고리가 지정되지 않았습니다.

HARM_CATEGORY_HATE_SPEECH

피해 카테고리는 증오심 표현입니다.

HARM_CATEGORY_DANGEROUS_CONTENT

피해 카테고리는 위험한 콘텐츠입니다.

HARM_CATEGORY_HARASSMENT

피해 카테고리는 괴롭힘입니다.

HARM_CATEGORY_SEXUALLY_EXPLICIT

피해 카테고리는 음란물입니다.

HarmBlockThreshold

매개변수

HARM_BLOCK_THRESHOLD_UNSPECIFIED

지정되지 않은 피해 차단 기준점입니다.

BLOCK_LOW_AND_ABOVE

낮은 기준점 이상의 기준점을 차단합니다(예: 더 차단).

BLOCK_MEDIUM_AND_ABOVE

중간 이상의 기준점을 차단합니다.

BLOCK_ONLY_HIGH

높은 기준점만 차단합니다(즉, 차단 미만).

BLOCK_NONE

차단하지 않습니다.

HarmBlockMethod

매개변수

HARM_BLOCK_METHOD_UNSPECIFIED

피해 차단 메서드가 지정되지 않았습니다.

SEVERITY

피해 차단 메서드에서 확률 점수와 심각도 점수를 모두 사용합니다.

PROBABILITY

피해 차단 메서드에서 확률 점수를 사용합니다.

GenerationConfig

매개변수

temperature

선택사항: float

예측 무작위성을 제어합니다.

top_p

선택사항: float

지정하면 Nucleus 샘플링이 사용됩니다.

top_k

선택사항: float

지정된 경우 Top-K 샘플링이 사용됩니다.

candidate_count

선택사항: int

생성할 후보의 수입니다.

max_output_tokens

선택사항: int

메시지당 생성할 수 있는 최대 출력 토큰 수입니다.

stop_sequences

선택사항: List[string]

시퀀스를 중지합니다.

logprobs

선택사항: int

로지트 확률입니다.

presence_penalty

선택사항: float

긍정적 페널티입니다.

frequency_penalty

선택사항: float

빈도 페널티입니다.

logit_bias

선택사항: Dict[string, float]

로지트 편향

echo

선택사항: bool

에코

seed

선택사항: int

시드

response_mime_type

선택사항: string (enum)

생성된 후보 텍스트의 출력 응답 mimetype입니다.

지원되는 mimetype은 다음과 같습니다.

  • text/plain: (기본값) 텍스트 출력입니다.
  • application/json: 후보의 JSON 응답입니다.
  • 모델에 적절한 응답 유형을 출력하라는 메시지가 표시되어야 합니다. 그렇지 않으면 동작이 정의되지 않습니다.

이 기능은 미리보기 기능입니다.

예시

  • PROJECT_ID = PROJECT_ID
  • REGION = us-central1
  • MODEL_ID = gemini-1.0-pro

텍스트 추론

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.")

print(model_response)

멀티모달리티

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
])

print(model_response)

스트리밍 텍스트

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.", stream=True)

for resp in model_response:
  print(resp)

스트리밍 멀티모달리티

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
], stream=True)

for resp in model_response:
  print(resp)

더 살펴보기

자세한 내용은 다음을 참조하세요.