Migrar do Azure OpenAI para a API Gemini

Nesta página, descrevemos as etapas necessárias para migrar do Microsoft Azure OpenAI para a API Gemini da Vertex AI.

A API Gemini é um serviço baseado na nuvem totalmente gerenciado que permite criar e treinar modelos generativos usando o console do Google Cloud. Ela fornece acesso a modelos de linguagem grandes (LLMs), que podem ser usados para criar diversos aplicativos, incluindo chatbots, geradores de conteúdo e ferramentas de criação.

Pré-requisitos

Para migrar um serviço da OpenAI do Microsoft Azure OpenAI para a API Gemini da Vertex AI, crie primeiro um projeto do Google Cloud e um ambiente de desenvolvimento. Para mais informações, consulte Configuração no Google Cloud.

Migrar para a API Gemini

Use os tópicos a seguir para saber como migrar de um projeto da OpenAI no Microsoft Azure para a API Gemini.

Usar parâmetros equivalentes da API Gemini

Veja a seguir alguns parâmetros comuns do Azure OpenAI e os parâmetros equivalentes na API Gemini:

Parâmetros da OpenAI Parâmetros da API Gemini Descrição Valores válidos
prompt prompt Uma solicitação é uma solicitação de linguagem natural enviada a um modelo de linguagem para receber uma resposta. Os comandos podem conter perguntas, instruções, informações contextuais, exemplos e texto para que o modelo seja concluído ou continue. Texto
temperature temperature A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.

Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.

0.01.0

max_tokens maxOutputTokens Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.

1-8192 (OpenAI)

18192 (API Gemini)

Indisponível topK O Top-K muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

140

top_p topP O top-p muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais provável (veja o top-K) para o menos provável até que a soma das probabilidades seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

0.01.0

stop stop_sequences Uma sequência de parada é uma série de caracteres (incluindo espaços) que interrompe a geração de resposta quando é encontrada pelo modelo. Ela não é incluída como parte da resposta. Você pode adicionar até cinco sequências de paradas. Sua sequência de parada em uma matriz, por exemplo, ["###"].

Usar o modelo equivalente da API Gemini

A tabela a seguir descreve os modelos básicos disponíveis.

Tipo Descrição Endpoints da OpenAI Endpoints do LLM da API Gemini
Texto Ajustado para seguir instruções de linguagem natural e adequado para várias tarefas de linguagem. gpt-3.5-turbo ou gpt-4 gemini-1.0-pro
Chat Sintonizado para casos de uso de conversa com vários turnos. gpt-3.5-turbo ou gpt-4 gemini-1.0-pro

Instalar, importar e autenticar a API Gemini da Vertex AI

Use o SDK da Vertex AI para Python para instalar, importar e autenticar a API Gemini da Vertex AI. Confira a seguir os métodos equivalentes do SDK da Vertex AI para Python e do Azure OpenAI.

Instalar a API Gemini da Vertex AI

OpenAI Azure

$ pip install --upgrade openai

API Gemini da Vertex AI

$ pip install google-cloud-aiplatform

Importar a API Gemini da Vertex AI

OpenAI Azure

import openai

API Gemini da Vertex AI

from vertexai.preview.generative_models import GenerativeModel

Autenticar a API Gemini da Vertex AI

OpenAI Azure

openai.api_key = os.getenv("OPENAI_API_KEY")

API Gemini da Vertex AI

from google.colab import auth as google_auth
google_auth.authenticate_user()

Comparações da API Gemini da Vertex AI e do Azure e exemplo de código

Gerar texto com o SDK Vertex AI para Python

OpenAI Azure

from openai import OpenAI

client = OpenAI()

response = client.completions.create(
    prompt="Write an article about the potential of AI",
    max_tokens=8192,
    temperature=0.3,
    model="gpt-4")

print(f"Response from Model: {response['choices'][0]['text']}")

API Gemini da Vertex AI

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 0.9,
    "top_p": 1}

responses = model.generate_content(
    "Write an article about the potential of AI",
    generation_config=generation_config,
    stream=True)

for response in responses:
    print(response.text)

Usar a conclusão de chat com o SDK da Vertex AI para Python

OpenAI Azure

from openai import OpenAI

client = OpenAI()

parameters = {
    "model":"gpt-4",
    "temperature": 0.2,
    "max_tokens": 256,
    "top_p": 0.95}

chat_completion = client.chat.completions.create(
    messages=[
      {"role": "user", "name":"example_user", "content": "Hello! Can you write a 300 word article on the history of AI?"}
      ]
    ,
    **parameters)
response = chat_completion['choices'][0]
print(f"Response from Model: {response.text}")

chat_completion = client.chat.completions.create(
    messages=[
      {"role": "user", "name":"example_user", "content": "Could you give me a catchy title for the paper?"}
      ]
    ,
    **parameters)
response = chat_completion['choices'][0]
print(f"Response from Model: {response.text}")

API Gemini da Vertex AI

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
chat = model.start_chat()

responses = chat.send_message(
    content="Hello! Can you write a 300 word article on the history of AI?",
    stream=True)

for response in responses:
    print(response.text)

responses = chat.send_message(
    content="Could you give me a catchy title for the paper?",
    stream=True)

for response in responses:
    print(response.text)

Gerar código com o SDK da Vertex AI para Python

OpenAI Azure

from openai import OpenAI

client = OpenAI()

response = client.completions.create(
    prompt="Write a Python code to read a CSV file in pandas, calculate the average for a specific column, and then sort the data in descending order for that column",
    max_tokens=8192,
    temperature=0.3,
    model="gpt-4")

print(f"Response from Model: {response['choices'][0]['text']}")

API Gemini da Vertex AI

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 0.9,
    "top_p": 1,
    }

responses = model.generate_content(
    contents="Write a Python code to read a CSV file in pandas, calculate the average for a specific column, and then sort the data in descending order for that column",
    generation_config=generation_config,
    stream=True)

for response in responses:
    print(response.text)

A seguir