Vertex AI에서 OpenAI 라이브러리 사용

Chat Completions API는 OpenAI 호환 엔드포인트로 작동하며, Python 및 REST용 OpenAI 라이브러리를 사용하여 Vertex AI에서 Gemini와 더 쉽게 상호작용할 수 있도록 설계되었습니다. 이미 OpenAI 라이브러리를 사용하고 있다면 이 API를 사용하여 OpenAI 모델 호출과 Vertex AI 호스팅 모델 간에 전환하여 기존 코드를 변경하지 않고도 출력, 비용, 확장성을 비교할 수 있습니다. 아직 OpenAI 라이브러리를 사용하고 있지 않다면 Google 생성형 AI SDK를 사용하는 것이 좋습니다.

지원되는 모델

Chat Completions API는 Gemini 모델과 Model Garden에서 자체 배포한 일부 모델을 모두 지원합니다.

Gemini 모델

다음 모델은 Chat Completions API를 지원합니다.

Model Garden의 자체 배포 모델

Hugging Face 텍스트 생성 인터페이스(HF TGI)Vertex AI Model Garden 사전 빌드된 vLLM 컨테이너는 Chat Completions API를 지원합니다. 그러나 이러한 컨테이너에 배포된 모든 모델이 Chat Completions API를 지원하는 것은 아닙니다. 다음 표에는 컨테이너별로 가장 많이 지원되는 모델이 나와 있습니다.

HF TGI

vLLM

지원되는 매개변수

Google 모델의 경우 Chat Completions API는 다음 OpenAI 파라미터를 지원합니다. 각 파라미터에 대한 설명은 OpenAI의 채팅 완성 생성 문서를 참고하세요. 서드 파티 모델의 파라미터 지원은 모델마다 다릅니다. 지원되는 매개변수를 확인하려면 모델의 문서를 참조하세요.

messages
  • System message
  • User message: textimage_url 유형이 지원됩니다. image_url 유형은 Cloud Storage URI에 저장된 이미지 또는 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 형식의 base64 인코딩을 지원합니다. Cloud Storage 버킷을 만들고 여기에 파일을 업로드하는 방법을 알아보려면 객체 스토리지 탐색을 참고하세요. detail 옵션은 지원되지 않습니다.
  • Assistant message
  • Tool message
  • Function message: 이 필드는 지원 중단되었지만 이전 버전과의 호환성을 위해 지원됩니다.
model
max_tokens
n
frequency_penalty
presence_penalty
response_format
  • json_object: Gemini API에 'application/json'을 전달하는 것으로 해석됩니다.
  • text: Gemini API에 'text/plain'을 전달하는 것으로 해석됩니다.
  • 다른 모든 MIME 유형은 'application/json'을 직접 전달하는 것처럼 모델에 그대로 전달됩니다.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: OpenAPI 사양을 사용하여 파라미터를 지정합니다. 이는 JSON 스키마 객체로 설명되는 OpenAI 파라미터 필드와 다릅니다. OpenAPI와 JSON 스키마 간의 키워드 차이점에 관한 자세한 내용은 OpenAPI 가이드를 참고하세요.
tool_choice
  • none
  • auto
  • required: FunctionCallingConfigANY 모드에 해당합니다.
function_call 이 필드는 지원 중단되었지만 이전 버전과의 호환성을 위해 지원됩니다.
functions 이 필드는 지원 중단되었지만 이전 버전과의 호환성을 위해 지원됩니다.

지원되지 않는 파라미터를 전달하면 무시됩니다.

멀티모달 입력 매개변수

Chat Completions API는 일부 멀티모달 입력을 지원합니다.

input_audio
  • data: 모든 URI 또는 유효한 blob 형식 이미지, 오디오, 동영상을 비롯한 모든 blob 유형을 지원합니다. GenerateContent에서 지원하는 모든 항목 (HTTP, Cloud Storage 등)이 지원됩니다.
  • format: OpenAI는 wav (audio/wav) 및 mp3 (audio/mp3)를 모두 지원합니다. Gemini를 사용하면 모든 유효한 MIME 유형이 지원됩니다.
image_url
  • data: input_audio와 마찬가지로 모든 URI 또는 유효한 blob 형식이 지원됩니다.
    URL로 image_url은 기본적으로 image/* MIME 유형으로 설정되고, blob 데이터로 image_url은 모든 멀티모달 입력으로 사용될 수 있습니다.
  • detail: 미디어 해상도와 마찬가지로 요청의 이미지당 최대 토큰을 결정합니다. OpenAI의 필드는 이미지별이지만 Gemini는 요청 전체에 동일한 세부정보를 적용하며, 한 요청에서 여러 세부정보 유형을 전달하면 오류가 발생합니다.

일반적으로 data 매개변수는 URI이거나 MIME 유형과 base64로 인코딩된 바이트의 조합("data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 형식)일 수 있습니다. MIME 유형의 전체 목록은 GenerateContent를 참고하세요. OpenAI의 base64 인코딩에 대한 자세한 내용은 문서를 참고하세요.

사용 방법은 멀티모달 입력 예시를 참고하세요.

Gemini별 매개변수

Gemini에서 지원되지만 OpenAI 모델에서는 사용할 수 없는 기능이 몇 가지 있습니다. 이러한 기능은 여전히 매개변수로 전달할 수 있지만 extra_content 또는 extra_body 내에 포함되어야 합니다. 그렇지 않으면 무시됩니다.

기능 extra_body

safety_settings 이는 Gemini의 SafetySetting에 해당합니다.
cached_content 이는 Gemini의 GenerateContentRequest.cached_content에 해당합니다.
thought_tag_marker 사고 기능이 있는 모델의 경우 모델의 생각을 응답과 구분하는 데 사용됩니다.
지정하지 않으면 모델의 생각과 관련된 태그가 반환되지 않습니다. 있는 경우 후속 쿼리는 생각 태그를 삭제하고 맥락에 따라 생각을 적절하게 표시합니다. 이렇게 하면 후속 쿼리에 적절한 컨텍스트를 보존하는 데 도움이 됩니다.

다음 단계