Com a API Chat Autocomplete, é possível enviar solicitações para modelos da Vertex AI usando as bibliotecas da OpenAI para Python e REST. Se você já estiver usando as bibliotecas OpenAI, poderá usar esta API para alternar entre chamar modelos OpenAI e modelos hospedados do Vertex AI para comparar resultados, custos e escalabilidade, sem mudar o código atual. Se você ainda não usa as bibliotecas OpenAI, recomendamos chamar a API Gemini diretamente.
Modelos compatíveis
A API Chat Completions oferece suporte a modelos do Gemini e a alguns modelos autoimplantados do Model Garden.
Modelos do Gemini
A tabela a seguir mostra os modelos do Gemini compatíveis:
Modelo | Versão |
---|---|
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 |
Modelos autoimplantados do Model Garden
O Interface de geração de texto HuggingFace (HF TGI) (link em inglês) e VLLM pré-criada do Model Garden da Vertex AI os contêineres têm suporte à API Chat Completions.. No entanto, nem todos os modelos implantados nesses contêineres são compatíveis com a API Chat Completions. A tabela a seguir inclui os modelos com suporte mais conhecidos por contêiner:
HF TGI |
vLLM |
---|---|
Autenticar
Para usar as bibliotecas OpenAI Python, instale o OpenAI SDK:
pip install openai
Para autenticar com a API Chat Completions, você pode modificar a configuração do cliente ou alterar a configuração do ambiente para usar a autenticação do Google e um endpoint da Vertex AI. Escolha o método mais fácil e siga as etapas de configuração, dependendo se você quer chamar modelos do Gemini ou do Model Garden autoimplantado.
Certos modelos no Grupo de modelos e
modelos Hugging Face com suporte
precisam ser
implantadas em um endpoint da Vertex AI
antes de veicular solicitações.
Ao
chamar esses modelos autoimplantados da API Chat Completions, é necessário
especificar o ID do endpoint. Para listar seus
endpoints atuais da Vertex AI, use o
comando gcloud ai endpoints list
.
Configuração do cliente
Para obter credenciais do Google de maneira programática em Python, use o
SDK Python google-auth
:
pip install google-auth
pip install requests
Altere o SDK do OpenAI para apontar para o endpoint de conclusões de bate-papo da Vertex AI:
# 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)
Por padrão, os tokens de acesso duram 1 hora. Você pode
prolongar a vida útil do seu token de acesso
ou atualizá-lo periodicamente e atualizar a variável openai.api_key
.
Variáveis de ambiente
Instale a CLI do Google Cloud. A biblioteca OpenAI pode
ler as variáveis
de ambiente OPENAI_API_KEY
e OPENAI_BASE_URL
para alterar a autenticação e o endpoint no cliente padrão.
Configure as variáveis a seguir:
$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
Para chamar um modelo do Gemini, defina o MODEL_ID
e use o endpoint openapi
:
$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
Para chamar um modelo autoimplantado do Model Garden, defina a variável ENDPOINT
e use-a no URL:
$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
Em seguida, inicialize o cliente:
client = openai.OpenAI()
A API Gemini Chat Completions usa OAuth para autenticação
com um
token de acesso de curta duração.
Por padrão, os tokens de acesso duram 1 hora. Você pode
prolongar a vida útil do seu token de acesso
ou atualizá-lo periodicamente e atualizar a variável de ambiente
OPENAI_API_KEY
.
Chamar o Gemini com a API Chat Completions
O exemplo a seguir mostra como enviar solicitações sem streaming:
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
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
O exemplo a seguir mostra como enviar solicitações de streaming para um Modelo do Gemini usando a API Chat Completions:
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
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Chamar um modelo autoimplantado com a API Chat Completions
O exemplo a seguir mostra como enviar solicitações sem streaming:
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." }] }'
O exemplo a seguir mostra como enviar solicitações de streaming para um modelo autoimplantado usando a API Chat Completions:
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." }] }'
Parâmetros aceitos
Para modelos do Google, a API Chat Completions é compatível com as seguintes APIs parâmetros. Para ver uma descrição de cada parâmetro, consulte a documentação da OpenAI sobre Como criar conclusões de chat. A compatibilidade com parâmetros para modelos de terceiros varia de acordo com o modelo. Para saber quais parâmetros são aceitos, consulte a documentação do modelo.
messages |
|
model |
|
max_tokens |
|
n |
|
frequency_penalty |
|
presence_penalty |
|
response_format |
|
stop |
|
stream |
|
temperature |
|
top_p |
|
tools |
|
tool_choice |
|
function_call |
Este campo está obsoleto, mas tem suporte para compatibilidade com versões anteriores. |
functions |
Este campo está obsoleto, mas tem suporte para compatibilidade com versões anteriores. |
Se você passar algum parâmetro não suportado, ele será ignorado.
Atualizar suas credenciais
O exemplo a seguir mostra como atualizar suas credenciais automaticamente como necessário:
Python
A seguir
- Veja exemplos de como chamar a API Inference com a sintaxe compatível com OpenAI.
- Veja exemplos de como chamar a API Function Calling com sintaxe compatível com OpenAI.
- Saiba mais sobre a API Gemini.
- Saiba mais sobre como migrar do Azure OpenAI para a API Gemini.