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 conversaciones de texto de varios turnos (chat) y programar con Gemini. Después de la migración, verifica tus respuestas porque el resultado de Gemini puede ser diferente al resultado de PaLM. Para obtener más información, consulta Introducción a las clases multimodales en SDK de Vertex AI.

Diferencias entre Gemini y PaLM

Las siguientes son algunas diferencias entre los modelos Gemini y PaLM:

  • Sus estructuras de respuesta son diferentes. Para obtener más información sobre la estructura de 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 más 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 completar el código. Si necesitas crear una aplicación de código de finalización, usa el modelo code-gecko. Para obtener más información, consulta Modelo de finalización del código Codey.

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

  • La puntuación de confianza en los modelos de generación de código de Codey que indica qué tan seguro es el modelo en su respuesta no se expone 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 PaLM. Por ejemplo, usa GenerativeModel.start_chat para reemplazar el equivalente de PaLM, ChatModel.start_chat. Sin embargo, debido a que Google Cloud siempre es mejorar y actualizar Gemini, es posible que te encuentres con algunas diferencias. Para una mayor información información, consulta la Referencia del SDK de Python

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

  • Para todas las clases de modelos de PaLM, debes usar 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 del método from_pretrained. Por ejemplo, para cargar el modelo 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 de 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 de PaLM se reemplaza por la clase GenerativeModel en Gemini. En la siguiente tabla, se muestran las clases que usan los modelos de PaLM y sus equivalentes 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

Tanto para la API de PaLM como para la de Gemini en Vertex AI, el proceso de configuración es el mismo. Para obtener más información, consulta Introducción al SDK de Vertex AI para Python. La siguiente es una muestra de código corto 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 con tu ID del proyecto de Google Cloud. y reemplaza LOCATION por la ubicación de tu 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 código PaLM y, junto a él, el código de Gemini que se migró desde el código de 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 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 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 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 de Gemini para generar un atributo 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