Migrar para a API PaLM do Azure OpenAI

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

Objetivos

A PaLM API é 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 OpenAI da Microsoft Azure Open AI para a API Vertex AI PaLM, crie primeiro um projeto do Google Cloud e um ambiente de desenvolvimento. Para mais informações, consulte Configurar um projeto do Google Cloud e um ambiente de desenvolvimento.

Migrar para a API PaLM

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

Usar parâmetros da API PaLM equivalentes

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

Parâmetros da OpenAI Parâmetros da API PaLM 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 PaLM)

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

Use o modelo equivalente da API PaLM

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

Tipo Descrição Endpoints da OpenAI Endpoints de LLM da API PaLM
Texto Ajustado para seguir instruções de linguagem natural e adequado para várias tarefas de linguagem. gpt-3.5-turbo ou gpt-4 text-bison@002
Chat Sintonizado para casos de uso de conversa com vários turnos. gpt-3.5-turbo ou gpt-4 chat-bison@002
Incorporação Ajustado para retornar embeddings de modelo para entradas de texto. text-embedding-ada-002 textembedding-gecko@003

Instalar, importar e autenticar a IA generativa na Vertex AI

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

Instalar a API Vertex AI PaLM

OpenAI Azure

$ pip install --upgrade openai

API Vertex AI PaLM

$ pip install google-cloud-aiplatform

Importar a API Vertex AI PaLM

OpenAI Azure

import openai

API PaLM da Vertex AI

from vertexai.preview.language_models import TextGenerationModel

Autenticar a API Vertex AI PaLM

OpenAI Azure

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

API PaLM da Vertex AI

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

Comparações da API Vertex AI PaLM e do Azure e código de amostra

Gerar texto com o SDK Vertex AI para Python

OpenAI Azure

from openai import OpenAI

client = OpenAI()

response = client.completions.create(prompt="Hello",
    max_tokens=256,
    temperature=0.3,
    model="gpt-4")

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

API PaLM da Vertex AI

from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.from_pretrained("text-bison@002")

response = model.predict(
    "Hello",
    max_output_tokens=256,
    temperature=0.3,)

print(f"Response from Model: {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 = client.chat.completions.create(
    messages=[
      {"role": "system", "content": "My name is Miles. You are an astronomer, knowledgeable about the solar system."},
      {"role": "user", "name":"example_user", "content": "How many planets are there in the solar system?"}
      ],
    **parameters)

response = chat['choices'][0]
print(f"Response from Azure OpenAI Model: {response.text}")

API PaLM da Vertex AI

from vertexai.preview.language_models import ChatModel

chat_model = ChatModel.from_pretrained("chat-bison@002")

parameters = {
    "temperature": 0.2,
    "max_output_tokens": 256,
    "top_p": 0.95}

chat = chat_model.start_chat(context="My name is Miles. You are an astronomer, knowledgeable about the solar system.")

response = chat.send_message(
    "How many planets are there in the solar system?",
    **parameters)

print(f"Response from Google GenAI Model: {response.text}")

Usar a incorporação de texto com o SDK Vertex AI para Python

OpenAI Azure

import openai

embeddings = openai.Embedding.create(
  deployment_id="text-embedding-ada-002",
  #engine="text-embedding-ada-002",
  input="What is life?"
)["data"][0]["embedding"]

print(f'Length of Embedding Vector: {len(embeddings)}')

API PaLM da Vertex AI

from vertexai.preview.language_models import TextEmbeddingModel

model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings(["What is life?"])

for embedding in embeddings:
  vector = embedding.values

print(f'Length of Embedding Vector: {len(vector)}')

A seguir