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

En esta guía, se muestra cómo migrar tu código del SDK de Vertex AI para Python del uso de la API de PaLM al uso de la API de Gemini. Puedes generar texto, conversaciones de varios turnos (chat) y código con Gemini. Después de migrar, revisa tus respuestas, ya que el resultado de Gemini puede ser diferente del resultado de PaLM. Para obtener más información, consulta Introducción a las clases multimodales en el SDK de Vertex AI.

Diferencias de Gemini con PaLM

A continuación, se muestran algunas diferencias entre los modelos de Gemini y PaLM:

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

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

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

  • Para la generación de código, Gemini tiene una tasa de bloqueos de repetición más alta.

  • La puntuación de confianza en los modelos de generación de código de Codey que indica la confianza que tiene el modelo en su respuesta no está expuesta en Gemini.

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

Los métodos de la clase GenerativeModel son, en su mayoría, los mismos que los de las clases de PaLM. Por ejemplo, usa GenerativeModel.start_chat para reemplazar el equivalente de PaLM, ChatModel.start_chat. Sin embargo, debido a que Google Cloud siempre mejora y actualiza Gemini, es posible que encuentres algunas diferencias. Para obtener más información, consulta la Referencia del SDK de Python.

Para migrar de la API de PaLM a la API de Gemini, se requieren las siguientes modificaciones de código:

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

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

    from vertexai.generative_models import GenerativeModel

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

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

   model = GenerativeModel("gemini-1.0-pro-002")
   response = model.generate_content("Write a short poem about the moon")

Comparación de clases de Gemini y PaLM

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

Modelo de PaLM Clase de modelo de 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 comunes

Para la API de PaLM y la API de Gemini en Vertex AI, el proceso de configuración es el mismo. Si deseas obtener más información, consulta Introducción al SDK de Vertex AI para Python. La siguiente es una muestra de código corta 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 muestra, reemplaza PROJECT_ID por el ID del proyecto de Google Cloud y LOCATION por la ubicación del proyecto de Google Cloud (por ejemplo, us-central1).

Muestras de código de Gemini y PaLM

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

Generación de texto: básica

En las siguientes muestras de código, se muestran las diferencias entre la API de PaLM y la API de 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-1.0-pro")

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

for response in responses:
    print(response.text)
        

Generación de texto con parámetros

En las siguientes muestras de código, se muestran las diferencias entre la API de PaLM y la API de 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-1.0-pro")

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 las siguientes muestras de código, se muestran las diferencias entre la API de PaLM y la API de 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-1.0-pro")

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

En las siguientes muestras de código, se muestran las diferencias entre la API de PaLM y la API de Gemini para generar una función que prediga 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-1.0-pro-002")

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

print(response.text)
        

Próximos pasos