Von der PaLM API zur Gemini API in Vertex AI migrieren

In dieser Anleitung erfahren Sie, wie Sie Vertex AI SDK für Python-Code von der Verwendung der PaLM API zur Verwendung der Gemini API migrieren. Sie können mit Gemini Text, Unterhaltungen über mehrere Themen (Chat) und Code generieren. Prüfen Sie nach der Migration Ihre Antworten, da die Gemini-Ausgabe von der PaLM-Ausgabe abweichen kann. Weitere Informationen finden Sie in der Einführung in multimodale Klassen in Vertex AI SDK.

Unterschiede zwischen Gemini und PaLM

Im Folgenden sind einige Unterschiede zwischen Gemini- und PaLM-Modellen aufgeführt:

  • Die Antwortstrukturen sind unterschiedlich. Weitere Informationen zur Gemini-Antwortstruktur finden Sie im Antworttext der Gemini API-Modellreferenz.

  • Die Sicherheitskategorien sind unterschiedlich. Weitere Informationen zu den Unterschieden zwischen den Sicherheitseinstellungen von Gemini und PaLM finden Sie unter Wichtige Unterschiede zwischen Gemini und anderen Modellfamilien.

  • Gemini kann keine Codevervollständigung ausführen. Wenn Sie eine Anwendung zur Codevervollständigung erstellen müssen, verwenden Sie das code-gecko-Modell. Weitere Informationen finden Sie unter Codey-Codevervollständigungsmodell.

  • Für die Codegenerierung hat Gemini eine höhere Rezitationsblockrate.

  • Der Konfidenzwert in Codey-Codegenerierungsmodellen, der angibt, wie hoch die Konfidenz des Modells in seine Antwort ist, wird in Gemini nicht angezeigt.

PaLM-Code für die Verwendung von Gemini-Modellen aktualisieren

Die Methoden in der GenerativeModel-Klasse sind weitgehend die gleichen wie die Methoden in den PaLM-Klassen. Verwenden Sie beispielsweise GenerativeModel.start_chat, um das PaLM-Äquivalent ChatModel.start_chat zu ersetzen. Da Google Cloud Gemini jedoch immer verbessert und aktualisiert, kann es zu Unterschieden kommen. Weitere Informationen finden Sie in der Python SDK-Referenz.

Für die Migration von der PaLM API zur Gemini API sind die folgenden Codeänderungen erforderlich:

  • Für alle PaLM-Modellklassen verwenden Sie die Klasse GenerativeModel in Gemini.

  • Führen Sie die folgende Importanweisung aus, um die Klasse GenerativeModel zu verwenden:

    from vertexai.generative_models import GenerativeModel

  • Verwenden Sie zum Laden eines Gemini-Modells den Konstruktor GenerativeModel, statt die Methode from_pretrained zu verwenden. Verwenden Sie beispielsweise GenerativeModel(gemini-1.0-pro), um das Gemini 1.0 Pro-Modell zu laden.

  • Verwenden Sie zum Generieren von Text in Gemini die Methode GenerativeModel.generate_content anstelle der Methode predict, die in PaLM-Modellen verwendet wird. Beispiel:

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

Gemini- und PaLM-Klassenvergleich

Jede PaLM-Modellklasse wird in Gemini durch die Klasse GenerativeModel ersetzt. Die folgende Tabelle zeigt die Klassen, die von den PaLM-Modellen verwendet werden, und ihre entsprechende Klasse in Gemini.

PaLM-Modell PaLM-Modellklasse Gemini-Modellklasse
text-bison TextGenerationModel GenerativeModel
chat-bison ChatModel GenerativeModel
code-bison CodeGenerationModel GenerativeModel
codechat-bison CodeChatModel GenerativeModel

Allgemeine Anleitungen zur Einrichtung

Sowohl für die PaLM API als auch für die Gemini API in Vertex AI ist die Einrichtung identisch. Weitere Informationen finden Sie unter Einführung in das Vertex AI SDK für Python. Im Folgenden finden Sie ein kurzes Codebeispiel, das das Vertex AI SDK für Python installiert.

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

Ersetzen Sie in diesem Beispielcode PROJECT_ID durch Ihre Google Cloud-Projekt-ID und LOCATION durch den Standort Ihres Google Cloud-Projekts (z. B. us-central1).

Codebeispiele für Gemini und PaLM

Jedes der folgenden Paare von Codebeispielen enthält PaLM-Code und daneben Gemini-Code, der aus dem PaLM-Code migriert wurde.

Textgenerierung: Basis

Die folgenden Codebeispiele zeigen die Unterschiede zwischen der PaLM API und der Gemini API zum Erstellen eines Textgenerierungsmodells.

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)
        

Textgenerierung mit Parametern

Die folgenden Codebeispiele zeigen die Unterschiede zwischen der PaLM API und Gemini APIs zum Erstellen eines Textgenerierungsmodells mit optionalen Parametern.

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

Die folgenden Codebeispiele zeigen die Unterschiede zwischen der PaLM API und der Gemini API zum Erstellen eines Chatmodells.

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)
        

Codegenerierung

Die folgenden Codebeispiele zeigen die Unterschiede zwischen der PaLM API und Gemini APIs zum Generieren einer Funktion, die vorhersagt, ob ein Jahr ein Schaltjahr ist.

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)
        

Nächste Schritte