Migrar de la API PaLM a la API de Gemini en Vertex AI

En esta guía se muestra cómo migrar código del SDK de Vertex AI para Python de la API PaLM a la API Gemini. Puedes generar texto, conversaciones de varios turnos (chat) y código con Gemini. Después de la migración, comprueba tus respuestas, ya que el resultado de Gemini puede ser diferente del de PaLM.

Diferencias entre Gemini y PaLM

Estas son algunas diferencias entre los modelos de Gemini y PaLM:

  • Sus estructuras de respuesta son diferentes. Para obtener información sobre la estructura de las respuestas de Gemini, consulta el cuerpo de respuesta de la referencia del modelo de la API de Gemini.

  • Sus categorías de seguridad son diferentes. Para obtener información sobre las diferencias entre los ajustes de seguridad de Gemini y PaLM, consulta Diferencias clave entre Gemini y otras familias de modelos.

  • Gemini no puede completar el código. Si necesitas crear una aplicación de autocompletado de código, usa el modelo code-gecko. Para obtener más información, consulta el artículo Modelo de finalización de código de Codey.

  • En cuanto a la generación de código, Gemini tiene una tasa de bloqueo de recitación más alta.

  • La puntuación de confianza de los modelos de generación de código de Codey, que indica el nivel de confianza del modelo en su respuesta, no se muestra en Gemini.

Actualizar el código de PaLM para usar modelos de Gemini

Los métodos de la clase GenerativeModel son prácticamente los mismos que los de las clases PaLM. Por ejemplo, usa GenerativeModel.start_chat para sustituir el equivalente de PaLM, ChatModel.start_chat. Sin embargo, como Google Cloud siempre está mejorando y actualizando Gemini, puede que encuentres algunas diferencias. Para obtener más información, consulta la referencia del SDK de Python.

Para migrar de la API PaLM a la API de Gemini, es necesario modificar el código de la siguiente manera:

  • En todas las clases de modelos de PaLM, se usa la clase GenerativeModel en Gemini.

  • Para usar la clase GenerativeModel, ejecuta la siguiente instrucción de importación:

    from vertexai.generative_models import GenerativeModel

  • Para cargar un modelo de Gemini, usa el constructor GenerativeModel en lugar del método from_pretrained. Por ejemplo, para cargar el modelo Gemini 1.0 Pro, usa GenerativeModel(gemini-2.0-flash-001).

  • Para generar texto en Gemini, usa el método GenerativeModel.generate_content en lugar del método predict que se usa en los modelos de PaLM. Por ejemplo:

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

Comparación de las clases de Gemini y PaLM

Cada clase de modelo de PaLM se sustituye por la clase GenerativeModel en Gemini. En la siguiente tabla se muestran las clases que usan los modelos PaLM y su clase equivalente en Gemini.

Modelo PaLM Clase de modelo PaLM Clase de modelo de Gemini
text-bison TextGenerationModel GenerativeModel
chat-bison ChatModel GenerativeModel
code-bison CodeGenerationModel GenerativeModel
codechat-bison CodeChatModel GenerativeModel

Instrucciones de configuración habituales

El proceso de configuración es el mismo para la API PaLM y la API de Gemini en Vertex AI. Para obtener más información, consulta la introducción al SDK de Vertex AI para Python. A continuación, se muestra un breve fragmento de código que instala el SDK de Vertex AI para Python.

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

En este código de ejemplo, sustituye PROJECT_ID por el ID de tu proyecto Google Cloud y LOCATION por la ubicación de tu proyecto Google Cloud (por ejemplo, us-central1).

Ejemplos de código de Gemini y PaLM

Cada uno de los siguientes pares de ejemplos de código incluye código de PaLM y, junto a él, código de Gemini que se ha migrado desde el código de PaLM.

Generación de texto: básica

Los siguientes ejemplos de código muestran las diferencias entre la API PaLM y la API Gemini para crear un modelo de generación 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)
        

Generación de texto con parámetros

Los siguientes ejemplos de código muestran las diferencias entre la API PaLM y la API Gemini para crear un modelo de generación de texto, con parámetros opcionales.

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

En los siguientes ejemplos de código se muestran las diferencias entre la API PaLM y la API Gemini para crear un 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)
        

Generación de código

Los siguientes ejemplos de código muestran las diferencias entre la API PaLM y la API Gemini para generar una función que predice si un año es bisiesto.

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)
        

Migrar peticiones a modelos de Gemini

Si tienes conjuntos de peticiones que has usado anteriormente con modelos PaLM 2, puedes optimizarlos para usarlos con modelos Gemini mediante el optimizador de peticiones de Vertex AI (vista previa).

Pasos siguientes

  • Consulta la página Modelos de Google para obtener más información sobre los modelos y las funciones más recientes.