Chat Completions API를 사용하면 Python 및 REST용 OpenAI 라이브러리를 사용하여 Vertex AI 모델에 요청을 보낼 수 있습니다. 이미 OpenAI 라이브러리를 사용하고 있다면 이 API를 사용하여 OpenAI 모델 호출과 Vertex AI 호스팅 모델 간에 전환하여 기존 코드를 변경하지 않고도 출력, 비용, 확장성을 비교할 수 있습니다. 아직 OpenAI 라이브러리를 사용하고 있지 않다면 Gemini API를 직접 호출하는 것이 좋습니다.
지원되는 모델
Chat Completions API는 Gemini 모델과 Model Garden에서 자체 배포한 일부 모델을 모두 지원합니다.
Gemini 모델
다음 표에는 지원되는 Gemini 모델이 나와 있습니다.
모델 | 버전 |
---|---|
Gemini 1.5 Flash | google/gemini-1.5-flash |
Gemini 1.5 Pro | google/gemini-1.5-pro |
Gemini 1.0 Pro Vision | google/gemini-1.0-pro-vision google/gemini-1.0-pro-vision-001 |
Gemini 1.0 Pro | google/gemini-1.0-pro-002 google/gemini-1.0-pro-001 google/gemini-1.0-pro |
Model Garden에서 직접 배포한 모델
HuggingFace 텍스트 생성 인터페이스(HF TGI) 및 Vertex AI Model Garden 사전 빌드된 vLLM 컨테이너는 Chat Completions API를 지원합니다. 그러나 이러한 컨테이너에 배포된 모든 모델이 Chat Completions API를 지원하는 것은 아닙니다. 다음 표에는 컨테이너별로 가장 많이 지원되는 모델이 나와 있습니다.
HF TGI |
vLLM |
---|---|
인증
OpenAI Python 라이브러리를 사용하려면 OpenAI SDK를 설치합니다.
pip install openai
Chat Completions API로 인증하려면 클라이언트 설정을 수정하거나 Google 인증 및 Vertex AI 엔드포인트를 사용하도록 환경 구성을 변경하면 됩니다. 더 쉬운 방법을 선택하고 Gemini 모델을 호출할지 또는 자체 배포된 Model Garden 모델을 호출할지에 따라 설정 단계를 따르세요.
Model Garden의 특정 모델과 지원되는 Hugging Face 모델은 요청을 처리하기 전에 먼저 Vertex AI 엔드포인트에 배포해야 합니다.
Chat Completions API에서 이러한 자체 배포 모델을 호출할 때는 엔드포인트 ID를 지정해야 합니다. 기존 Vertex AI 엔드포인트를 나열하려면 gcloud ai endpoints list
명령어를 사용합니다.
클라이언트 설정
Python에서 프로그래매틱 방식으로 Google 사용자 인증 정보를 가져오려면 google-auth
Python SDK를 사용하면 됩니다.
pip install google-auth
pip install requests
Vertex AI 채팅 완료 엔드포인트를 가리키도록 OpenAI SDK를 변경합니다.
# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed.
# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT_ID = 'PROJECT_ID'
LOCATION = 'LOCATION'
##############################
# Choose one of the following:
##############################
# If you are calling a Gemini model, set the MODEL_ID variable and set
# your client's base URL to use openapi.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/openapi',
api_key = creds.token)
# If you are calling a self-deployed model from Model Garden, set the
# ENDPOINT_ID variable and set your client's base URL to use your endpoint.
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/{ENDPOINT}',
api_key = creds.token)
기본적으로 액세스 토큰은 1시간 동안 지속됩니다. 액세스 토큰의 수명을 연장하거나 정기적으로 토큰을 새로고침하고 openai.api_key
변수를 업데이트할 수 있습니다.
환경 변수
Google Cloud CLI를 설치합니다. OpenAI 라이브러리는 기본 클라이언트의 인증 및 엔드포인트를 변경하기 위해 OPENAI_API_KEY
및 OPENAI_BASE_URL
환경 변수를 읽을 수 있습니다.
다음 변수를 설정합니다.
$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
Gemini 모델을 호출하려면 MODEL_ID
변수를 설정하고 openapi
엔드포인트를 사용합니다.
$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
Model Garden에서 자체 배포된 모델을 호출하려면 ENDPOINT
변수를 설정하고 URL에 이를 대신 사용합니다.
$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
다음으로 클라이언트를 초기화합니다.
client = openai.OpenAI()
Gemini Chat Completions API는 OAuth를 사용하여 단기 액세스 토큰으로 인증합니다.
기본적으로 액세스 토큰은 1시간 동안 지속됩니다. 액세스 토큰의 유효 기간을 연장하거나 정기적으로 토큰을 새로고침하고 OPENAI_API_KEY
환경 변수를 업데이트할 수 있습니다.
Chat Completions API로 Gemini 호출
다음 샘플은 스트리밍이 아닌 요청을 보내는 방법을 보여줍니다.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/${MODEL_ID}", "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
다음 샘플은 Chat Completions API를 사용하여 Gemini 모델에 스트리밍 요청을 보내는 방법을 보여줍니다.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \ -d '{ "model": "google/${MODEL_ID}", "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
Python
Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.
Chat Completions API로 자체 배포된 모델 호출
다음 샘플은 스트리밍이 아닌 요청을 보내는 방법을 보여줍니다.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
다음 샘플은 Chat Completions API를 사용하여 자체 배포된 모델에 스트리밍 요청을 보내는 방법을 보여줍니다.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT}/chat/completions \ -d '{ "stream": true, "messages": [{ "role": "user", "content": "Write a story about a magic backpack." }] }'
지원되는 매개변수
Google 모델의 경우 Chat Completions API는 다음 OpenAI 매개변수를 지원합니다. 각 매개변수에 대한 설명은 OpenAI의 채팅 완성 생성 문서를 참고하세요. 서드 파티 모델의 매개변수 지원은 모델마다 다릅니다. 지원되는 매개변수를 확인하려면 모델의 문서를 참조하세요.
messages |
|
model |
|
max_tokens |
|
n |
|
frequency_penalty |
|
presence_penalty |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
이 필드는 지원 중단되었지만 이전 버전과의 호환성을 위해 지원됩니다. |
functions |
이 필드는 지원 중단되었지만 이전 버전과의 호환성을 위해 지원됩니다. |
지원되지 않는 매개변수를 전달하면 무시됩니다.
사용자 인증 정보 새로고침
다음 예는 필요에 따라 사용자 인증 정보를 자동으로 새로고침하는 방법을 보여줍니다.
Python
다음 단계
- OpenAI 호환 문법으로 Inference API를 호출하는 예시를 참고하세요.
- OpenAI 호환 문법으로 Function Calling API를 호출하는 예시를 참고하세요.
- Gemini API 자세히 알아보기
- Azure OpenAI에서 Gemini API로 마이그레이션에 대해 자세히 알아보기