Migrazione dall'API PaLM all'API Gemini su Vertex AI

Questa guida mostra come eseguire la migrazione del codice dell'SDK Vertex AI per Python dall'utilizzo di PaLM all'uso dell'API Gemini. Puoi generare conversazioni di testo in più passaggi (chat) e scrivere codice con Gemini. Dopo la migrazione, controlla le risposte poiché l'output di Gemini potrebbe essere diverso da quello di PaLM. Per ulteriori informazioni, vedi l'introduzione alle classi multimodali nella SDK Vertex AI.

Differenze di Gemini rispetto a PaLM

Di seguito sono riportate alcune differenze tra i modelli Gemini e PaLM:

Aggiorna il codice PaLM per utilizzare i modelli Gemini

I metodi della classe GenerativeModel sono per lo più gli stessi dei metodi su le classi PaLM. Ad esempio, utilizza GenerativeModel.start_chat per sostituire il Equivalente PaLM, ChatModel.start_chat. Tuttavia, poiché Google Cloud è sempre migliorando e aggiornando Gemini, potresti riscontrare alcune differenze. Per ulteriori informazioni informazioni, consulta Riferimento SDK Python

Per eseguire la migrazione dall'API PaLM all'API Gemini, devi apportare le seguenti modifiche al codice sono obbligatori:

  • Per tutte le classi del modello PaLM, viene utilizzata la classe GenerativeModel in Gemini.

  • Per utilizzare la classe GenerativeModel, esegui questa istruzione di importazione:

    from vertexai.generative_models import GenerativeModel

  • Per caricare un modello Gemini, utilizza il costruttore GenerativeModel anziché utilizzando il metodo from_pretrained. Ad esempio, per caricare Gemini 1.0 Pro, utilizzare GenerativeModel(gemini-1.0-pro).

  • Per generare testo in Gemini, usa il metodo GenerativeModel.generate_content anziché il metodo predict usato sui modelli PaLM. Ad esempio:

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

Confronto delle classi Gemini e PaLM

Ogni classe del modello PaLM viene sostituita dalla classe GenerativeModel in Gemini. La la tabella seguente mostra le classi utilizzate dai modelli PaLM e i loro equivalenti in Gemini.

modello PaLM Classe del modello PaLM Classe del modello Gemini
text-bison TextGenerationModel GenerativeModel
chat-bison ChatModel GenerativeModel
code-bison CodeGenerationModel GenerativeModel
codechat-bison CodeChatModel GenerativeModel

Istruzioni di configurazione comuni

Sia per l'API PaLM che per l'API Gemini in Vertex AI, il processo di configurazione è allo stesso modo. Per ulteriori informazioni, vedi Introduzione all'SDK Vertex AI per Python. Di seguito è riportato un breve esempio di codice che installa l'SDK Vertex AI per Python.

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

In questo codice campione, sostituisci PROJECT_ID con il tuo ID progetto Google Cloud, e sostituisci LOCATION con la località del tuo progetto Google Cloud (ad es. us-central1).

Esempi di codice Gemini e PaLM

Ognuna delle seguenti coppie di esempi di codice include il codice PaLM e, accanto, codice Gemini di cui è stata eseguita la migrazione dal codice PaLM.

Generazione del testo: base

I seguenti esempi di codice mostrano le differenze tra l'API PaLM e Gemini API per la creazione di un modello di generazione di testo.

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)
        

Generazione di testo con parametri

I seguenti esempi di codice mostrano le differenze tra l'API PaLM e Gemini API per la creazione di un modello di generazione del testo, con parametri facoltativi.

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

I seguenti esempi di codice mostrano le differenze tra l'API PaLM e Gemini API per la creazione di un modello di 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)
        

Generazione del codice

I seguenti esempi di codice mostrano le differenze tra l'API PaLM e Gemini API per la generazione di una funzione che prevede se un anno è un anno bisestile.

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)
        

Passaggi successivi