Migre da API PaLM para a API Gemini no Vertex AI

Este guia mostra como migrar o código do SDK Vertex AI para Python da utilização da API PaLM para a API Gemini. Pode gerar texto, conversas com várias interações (chat) e código com o Gemini. Após a migração, verifique as suas respostas, uma vez que a saída do Gemini pode ser diferente da saída do PaLM.

Diferenças entre o Gemini e o PaLM

Seguem-se algumas diferenças entre os modelos Gemini e PaLM:

  • As respetivas estruturas de resposta são diferentes. Para saber mais sobre a estrutura de resposta do Gemini, consulte o corpo da resposta de referência do modelo da API Gemini.

  • As respetivas categorias de segurança são diferentes. Para saber mais sobre as diferenças entre as definições de segurança do Gemini e do PaLM, consulte o artigo Principais diferenças entre o Gemini e outras famílias de modelos.

  • O Gemini não consegue realizar a conclusão de código. Se precisar de criar uma aplicação de conclusão de código, use o modelo code-gecko. Para mais informações, consulte o artigo Modelo de conclusão de código do Codey.

  • Para a geração de código, o Gemini tem uma taxa de bloqueio de recitação mais elevada.

  • A pontuação de confiança nos modelos de geração de código do Codey que indica o nível de confiança do modelo na respetiva resposta não é exposta no Gemini.

Atualize o código do PaLM para usar modelos do Gemini

Os métodos na classe GenerativeModel são maioritariamente iguais aos métodos nas classes PaLM. Por exemplo, use GenerativeModel.start_chat para substituir o equivalente do PaLM, ChatModel.start_chat. No entanto, uma vez que o Google Cloud está sempre a melhorar e a atualizar o Gemini, pode encontrar algumas diferenças. Para mais informações, consulte a referência do SDK Python

Para migrar da API PaLM para a API Gemini, são necessárias as seguintes modificações de código:

  • Para todas as classes de modelos PaLM, usa a classe GenerativeModel no Gemini.

  • Para usar a classe GenerativeModel, execute a seguinte declaração de importação:

    from vertexai.generative_models import GenerativeModel

  • Para carregar um modelo do Gemini, use o construtor GenerativeModel em vez de usar o método from_pretrained. Por exemplo, para carregar o modelo Gemini 1.0 Pro, use GenerativeModel(gemini-2.0-flash-001).

  • Para gerar texto no Gemini, use o método GenerativeModel.generate_content em vez do método predict usado nos modelos PaLM. Por exemplo:

   model = GenerativeModel("gemini-2.0-flash-001")
   response = model.generate_content("Write a short poem about the moon")

Comparação de classes do Gemini e do PaLM

Cada classe de modelo PaLM é substituída pela classe GenerativeModel no Gemini. A tabela seguinte mostra as classes usadas pelos modelos PaLM e a respetiva classe equivalente no Gemini.

Modelo PaLM Classe do modelo PaLM Classe do modelo Gemini
text-bison TextGenerationModel GenerativeModel
chat-bison ChatModel GenerativeModel
code-bison CodeGenerationModel GenerativeModel
codechat-bison CodeChatModel GenerativeModel

Instruções de configuração comuns

Para a API PaLM e a API Gemini no Vertex AI, o processo de configuração é o mesmo. Para mais informações, consulte o artigo Introdução ao SDK Vertex AI para Python. Segue-se um pequeno exemplo de código que instala o SDK Vertex AI para Python.

pip install google-cloud-aiplatform
import vertexai
vertexai.init(project="PROJECT_ID", location="LOCATION")

Neste exemplo de código, substitua PROJECT_ID pelo ID do seu Google Cloud projeto e substitua LOCATION pela localização do seu Google Cloud projeto (por exemplo, us-central1).

Exemplos de código do Gemini e do PaLM

Cada um dos seguintes pares de exemplos de código inclui código do PaLM e, junto a este, código do Gemini migrado a partir do código do PaLM.

Geração de texto: básico

Os exemplos de código seguintes mostram as diferenças entre a API PaLM e a API Gemini para criar um modelo de geração de texto.

PaLM Gemini
from vertexai.language_models import TextGenerationModel

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

response = model.predict(prompt="The opposite of hot is")
print(response.text) #  'cold.'
        
from vertexai.generative_models import GenerativeModel

model = GenerativeModel("gemini-2.0-flash-001")

responses = model.generate_content("The opposite of hot is")

for response in responses:
    print(response.text)
        

Geração de texto com parâmetros

Os seguintes exemplos de código mostram as diferenças entre a API PaLM e a API Gemini para criar um modelo de geração de texto, com parâmetros opcionais.

PaLM Gemini
from vertexai.language_models import TextGenerationModel

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

prompt = """
You are an expert at solving word problems.

Solve the following problem:

I have three houses, each with three cats.
each cat owns 4 mittens, and a hat. Each mitten was
knit from 7m of yarn, each hat from 4m.
How much yarn was needed to make all the items?

Think about it step by step, and show your work.
"""

response = model.predict(
    prompt=prompt,
    temperature=0.1,
    max_output_tokens=800,
    top_p=1.0,
    top_k=40
)

print(response.text)
        
from vertexai.generative_models import GenerativeModel

model = GenerativeModel("gemini-2.0-flash-001")

prompt = """
You are an expert at solving word problems.

Solve the following problem:

I have three houses, each with three cats.
each cat owns 4 mittens, and a hat. Each mitten was
knit from 7m of yarn, each hat from 4m.
How much yarn was needed to make all the items?

Think about it step by step, and show your work.
"""

responses = model.generate_content(
    prompt,
    generation_config={
        "temperature": 0.1,
        "max_output_tokens": 800,
        "top_p": 1.0,
        "top_k": 40,
    }
  )

for response in responses:
    print(response.text)
        

Chat

Os exemplos de código seguintes mostram as diferenças entre a API PaLM e a API Gemini para criar um modelo de chat.

PaLM Gemini
from vertexai.language_models import ChatModel

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

chat = model.start_chat()

print(
    chat.send_message(
        """
Hello! Can you write a 300 word abstract for a research paper I need to write about the impact of AI on society?
"""
    )
)

print(
    chat.send_message(
        """
Could you give me a catchy title for the paper?
"""
    )
)
        
from vertexai.generative_models import GenerativeModel

model = GenerativeModel("gemini-2.0-flash-001")

chat = model.start_chat()


responses = chat.send_message(
        """
Hello! Can you write a 300 word abstract for a research paper I need to write about the impact of AI on society?
"""
    )

for response in responses:
   print(response.text)


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

for response in responses:
   print(response.text)
        

Geração de código

Os exemplos de código seguintes mostram as diferenças entre a API PaLM e a API Gemini para gerar uma função que prevê se um ano é bissexto.

Codey Gemini
from vertexai.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002")

response = model.predict(
        prefix="Write a function that checks if a year is a leap year."
    )

print(response.text)
        
from vertexai.generative_models import GenerativeModel

model = GenerativeModel("gemini-2.0-flash-001")

response = model.generate_content("Write a function that checks if a year is a leap year.")

print(response.text)
        

Migre comandos para os modelos do Gemini

Se tiver conjuntos de comandos que usou anteriormente com os modelos PaLM 2, pode otimizá-los para utilização com os modelos Gemini através do otimizador de comandos do Vertex AI (pré-visualização).

Passos seguintes

  • Consulte a página Modelos Google para ver mais detalhes sobre os modelos e as funcionalidades mais recentes.