Migrer de l'API PaLM vers l'API Gemini sur Vertex AI

Ce guide explique comment migrer votre code SDK Vertex AI pour Python depuis l'API PaLM vers l'API Gemini. Vous pouvez générer du texte, des conversations multitours (chat) et du code avec Gemini. Après la migration, vérifiez vos réponses, car la sortie Gemini peut être différente de la sortie PaLM. Pour plus d'informations, consultez la présentation des classes multimodales dans le SDK Vertex AI.

Différences entre Gemini et PaLM

Voici quelques différences entre les modèles Gemini et PaLM:

  • Leurs structures de réponse sont différentes. Pour en savoir plus sur la structure de réponse Gemini, consultez le corps de la réponse de référence du modèle de l'API Gemini.

  • Leurs catégories de sécurité sont différentes. Pour en savoir plus sur les différences entre les paramètres de sécurité Gemini et PaLM, consultez la section Principales différences entre Gemini et d'autres familles de modèles.

  • Gemini ne peut pas effectuer la complétion de code. Si vous devez créer une application de complétion de code, utilisez le modèle code-gecko. Pour en savoir plus, consultez la page Modèle de complétion de code Codey.

  • Pour la génération de code, Gemini a un taux de blocage de récitation plus élevé.

  • Le score de confiance des modèles de génération de code Codey qui indique le niveau de confiance du modèle dans sa réponse n'est pas exposé dans Gemini.

Mettre à jour le code PaLM pour utiliser des modèles Gemini

Les méthodes de la classe GenerativeModel sont essentiellement les mêmes que celles des classes PaLM. Par exemple, utilisez GenerativeModel.start_chat pour remplacer l'équivalent PaLM, ChatModel.start_chat. Toutefois, comme Google Cloud améliore et met à jour Gemini en permanence, vous pouvez rencontrer quelques différences. Pour en savoir plus, consultez la documentation de référence du SDK Python.

Pour migrer de l'API PaLM vers l'API Gemini, les modifications de code suivantes sont nécessaires:

  • Pour toutes les classes de modèle PaLM, vous utilisez la classe GenerativeModel dans Gemini.

  • Pour utiliser la classe GenerativeModel, exécutez l'instruction d'importation suivante:

    from vertexai.generative_models import GenerativeModel

  • Pour charger un modèle Gemini, utilisez le constructeur GenerativeModel au lieu d'utiliser la méthode from_pretrained. Par exemple, pour charger le modèle Gemini 1.0 Pro, utilisez GenerativeModel(gemini-1.0-pro).

  • Pour générer du texte en Gemini, utilisez la méthode GenerativeModel.generate_content au lieu de la méthode predict utilisée sur les modèles PaLM. Exemple :

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

Comparaison des classes Gemini et PaLM

Chaque classe de modèle PaLM est remplacée par la classe GenerativeModel dans Gemini. Le tableau suivant présente les classes utilisées par les modèles PaLM et leur classe équivalente dans Gemini.

Modèle PaLM Classe de modèle PaLM Classe de modèle Gemini
text-bison TextGenerationModel GenerativeModel
chat-bison ChatModel GenerativeModel
code-bison CodeGenerationModel GenerativeModel
codechat-bison CodeChatModel GenerativeModel

Instructions de configuration courante

Pour l'API PaLM et l'API Gemini dans Vertex AI, le processus de configuration est identique. Pour en savoir plus, consultez la Présentation du SDK Vertex AI pour Python. Voici un exemple de code court qui installe le SDK Vertex AI pour Python.

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

Dans cet exemple de code, remplacez PROJECT_ID par votre ID de projet Google Cloud et remplacez LOCATION par l'emplacement de votre projet Google Cloud (par exemple, us-central1).

Exemples de code Gemini et PaLM

Chacune des paires d'exemples de code suivantes inclut du code PaLM et, à côté de celui-ci, le code Gemini migré à partir du code PaLM.

Génération de texte : Basic

Les exemples de code suivants montrent les différences entre l'API PaLM et l'API Gemini pour créer un modèle de génération de texte.

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)
        

Génération de texte avec des paramètres

Les exemples de code suivants montrent les différences entre l'API PaLM et l'API Gemini pour créer un modèle de génération de texte, avec des paramètres facultatifs.

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

Les exemples de code suivants montrent les différences entre l'API PaLM et l'API Gemini pour créer un modèle 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)
        

Génération de code

Les exemples de code suivants montrent les différences entre l'API PaLM et l'API Gemini pour générer une fonction capable de prédire si une année est une année bissextile.

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)
        

Étapes suivantes