Das Paket google-cloud-aiplatform enthält sowohl das AI Platform SDK for Python als auch die Python-Clientbibliothek für die Gemini Enterprise Agent Platform. Auf dieser Seite werden die folgenden Kategorien von Änderungen im google-cloud-aiplatform-Paket behandelt:
Generative AI-Module werden zum Google Gen AI SDK migriert: Die folgenden generativen AI-Module im Paket
vertexaisind veraltet und werden zum Google Gen AI SDK (google-genai) migriert:vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Informationen zum Migrieren der eingestellten Module zum Google Gen AI SDK finden Sie unter Generative AI-Module zum Google Gen AI SDK migrieren.
Umstrukturierung der Agent-Oberfläche:An den
agentplatform-Modulen vongoogle-cloud-aiplatformwurden die folgenden Änderungen vorgenommen:- Umbenennungen
- Werbeaktionen auf oberster Ebene
- Entfernen des globalen Initialisierers
Informationen zur Migration zur neuen SDK-Struktur finden Sie unter Umstrukturierung des Agent Platform SDK.
Entkopplung von
agentplatform:google-cloud-agentplatformist jetzt eine eigenständige, schlanke Distribution und die empfohlene Installation für Agent-Arbeitslasten. Wenn Sie nur Agents erstellen, installieren Siegoogle-cloud-agentplatform, das keine generativen KI-Module enthält.agentplatform-Module decken die gängigen Integrationen wie[adk],[a2a],[agent_engines],[langchain],[ag2],[llama_index],[evaluation],[bigquery],[live]und[all]ab.
Was ist nicht betroffen?
Die klassische Machine-Learning-Oberfläche (Datasets, Training, Modelle, Vorhersage, Tracking, Pipelines) wird vollständig unterstützt, ist von den Änderungen in Version 2.0.1 nicht betroffen und hat kein Äquivalent im Google Gen AI SDK. Sie können weiterhin auf die Bewertung, die Agent Runtime, Prompts und Skills zugreifen, indem Sie google-cloud-aiplatform installieren. Sowohl google-cloud-aiplatform als auch google-genai sind in einer Umgebung vorhanden und google-genai ist jetzt eine feste Abhängigkeit von google-cloud-aiplatform:
import agentplatform
client = agentplatform.Client(project="my-project", location="global")
# client.evals client.prompts
# client.prompt_optimizer client.datasets client.skills
vertexai.batch_prediction ist nicht veraltet, aber es gibt ein Google Gen AI SDK-Äquivalent, das das empfohlene Tool ist.
Generative AI-Module zum Google Gen AI SDK migrieren
Wenn Sie die generativen KI-Module im Paket google-cloud-aiplatform verwenden, folgen Sie den folgenden Empfehlungen, um zum Google Gen AI SDK (google-genai) zu migrieren:
Legen Sie
google-cloud-aiplatform < 2.0.0fest, damit durch nicht verwandte Abhängigkeitsaktualisierungen die Module unter Ihnen nicht entfernt werden können.Suchen Sie in Ihrem Code nach den eingestellten Modulen:
vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Wenn Sie eines der betroffenen Python-Module importieren, erhalten Sie die folgende Warnung zur Einstellung:
UserWarning: This feature is deprecated as of June 24, 2025 and will be removed on June 24, 2026. For details, see https://cloud.google.com/vertex-ai/generative-ai/docs/deprecations/genai-vertexai-sdk.Führen Sie Ihre Testsuite mit
-W error::UserWarningaus, um fehlende Importe zu erkennen.Ersetzen Sie
vertexai.init(...)durch einen explizitengenai.Client(enterprise=True, project=..., location=...). Behalten Sievertexai.init()bei, wenn Sie auch die klassische Oberfläche für maschinelles Lernen verwenden.Vorher
# pip install google-cloud-aiplatform import vertexai from vertexai.generative_models import GenerativeModel vertexai.init(project="my-project", location="us-central1") # Model identity and config are bound at construction time. model = GenerativeModel("gemini-2.5-flash")Nach
# pip install google-genai from google import genai from google.genai import types client = genai.Client( enterprise=True, project="my-project", location="global", )Oder konfigurieren Sie die Umgebung so:
export GOOGLE_GENAI_USE_ENTERPRISE=true export GOOGLE_CLOUD_PROJECT=my-project export GOOGLE_CLOUD_LOCATION=globalfrom google import genai client = genai.Client()Wichtige Überlegungen:
- Der globale Status wird zu einem expliziten Client.
vertexai.init()konfiguriert den gesamten Prozess.genai.Client()ist ein Objekt, das Sie übergeben. Mitgenai.Client()können Sie zwei Projekte oder Regionen in einem Prozess verwenden. - Das Feld „
enterprise=True“ darf nicht leer sein. Wenn Sie sie weglassen, wird die Gemini Developer API im Hintergrund aufgerufen, was zu einem Fehler bei den Standardanmeldedaten für Anwendungen führt oder einen API-Schlüssel erfordert. - Der Modellname wird von der Konstruktion zu jedem Aufruf verschoben. Es gibt kein „bind-once“-Modellobjekt.
model=ist ein erforderliches Keyword-Argument für jedenclient.models.*-Aufruf. - Die Authentifizierung ist unverändert. Standardanmeldedaten für Anwendungen gelten weiterhin und
credentials=akzeptiert in beiden SDKs eingoogle.auth.credentials.Credentials. vertexai.init()enthielt auch nicht generative Einstellungen wiestaging_bucket,experiment,encryption_spec_key_name,service_accountundnetwork.genai.Clienthat für sie keine Entsprechung.- Die neuere Schreibweise
enterprise=Truewird abgoogle-genai2.20.0 akzeptiert, die ältere Versionvertexai=Truefunktioniert jedoch in jeder Version und ist die sicherere Wahl.
- Der globale Status wird zu einem expliziten Client.
Prüfen Sie Ihren Code auf stille Änderungen, bei denen das Verhalten ohne Fehler abweicht. Diese werden kompiliert und ausgeführt, ändern aber ihre Bedeutung.
Verhalten Vorher Nach response.textbei einer blockierten oder leeren AntwortLöst ValueErrorausGibt Nonezurückresponse.textmit mehreren KandidatenLöst ValueErrorausGibt eine Warnung aus und gibt den ersten Kandidaten zurück Client-Targeting vertexai.init()Implizite Agent PlatformWenn vertexai=Trueweggelassen wird, wird die Gemini Developer API im Hintergrund verwendet.Einbettungen auto_truncateDie Standardeinstellung ist True.Nicht festgelegt; Serverstandard wird angewendet Eine Python-Funktion, die als Tool übergeben wird Nicht unterstützt Wird automatisch vom SDK ausgeführt system_instructionEinmal an das Modell gebunden Muss bei jedem Anruf übergeben werden Die Änderung
response.textsollte zuerst untersucht werden. Jedestry/except ValueError, das.textumschließt, wird zu nicht mehr benötigtem Code. Jedes ungeschützte.textkann jetztNonezurückgeben, wo zuvorstrzurückgegeben wurde:if response.text is None: print( "blocked or empty:", response.prompt_feedback, response.candidates[0].finish_reason if response.candidates else None, )Lassen Sie
google-cloud-aiplatforminstalliert, wenn Sie die Bewertung, die Agent Runtime, Prompts, Datasets, Skills und die gesamte klassische Oberfläche für maschinelles Lernen verwenden.Ändern Sie die Aufrufe in die neuen Versionen. Beginnen Sie mit mechanischen Umbenennungen und fahren Sie dann mit der
config=-Konsolidierung fort.
Aufgabenbasierte Anrufänderungen
Hier sehen Sie die geänderten Aufrufe basierend auf der Aufgabe:
- Textgenerierung
- Streaming-Generierung
- Asynchrone Generierung
- Chats
- Konfiguration, Sicherheitseinstellungen und Systemanweisungen
- Multimodale Eingabe
- Funktionsaufrufe und Fundierung
- Einbettungen
- Token zählen
- Kontext-Caching
- Batch-Vorhersage und ‑optimierung
Textgenerierung
Bei Aufgaben zur Textgenerierung sind alle Argumente nur als Schlüsselwort verfügbar. Positionsaufrufe lösen TypeError aus.
Vorher
model = GenerativeModel("gemini-2.5-flash")
response = model.generate_content("Why is the sky blue?")
print(response.text)
Nach
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Why is the sky blue?",
)
print(response.text)
Streaming-Generierung
Bei Streaming-Generierungsaufgaben wird das Flag stream=True entfernt. Streaming ist jetzt eine separate Methode, die Iterator[types.GenerateContentResponse] zurückgibt. Verwenden Sie if chunk.text:, um vor dem Zugriff auf den Text zu prüfen, da jeder Chunk ein vollständiges Antwortobjekt ist und sein .text-Attribut manchmal None sein kann.
Vorher
stream = model.generate_content("Tell me a story in 300 words.", stream=True)
for chunk in stream:
print(chunk.text, end="")
Nach
for chunk in client.models.generate_content_stream(
model="gemini-3.5-flash",
contents="Tell me a story in 300 words.",
):
if chunk.text:
print(chunk.text, end="")
Asynchrone Generierung
Bei asynchronen Generierungsaufgaben wurde das Suffix _async-Methodenname entfernt. Jeder asynchrone Aufruf befindet sich unter client.aio.<module> und hat denselben Methodennamen wie sein synchrones Pendant. Schließen Sie den Client mit await client.aio.aclose() oder verwenden Sie async with genai.Client(...).aio as aclient:.
Vorher
response = await model.generate_content_async("Why is the sky blue?")
async_stream = await model.generate_content_async("Why is the sky blue?", stream=True)
async for chunk in async_stream:
print(chunk.text, end="")
Nach
response = await client.aio.models.generate_content(
model="gemini-3.5-flash",
contents="Why is the sky blue?",
)
# Note the `await` in front of the async iterator.
async for chunk in await client.aio.models.generate_content_stream(
model="gemini-3.5-flash",
contents="Tell me a story in 300 words.",
):
print(chunk.text, end="")
Chatsitzungen
Beachten Sie die folgenden Änderungen für Aufgaben in Chatsitzungen:
- Chats werden vom Client erstellt, nicht von einem Modellobjekt.
chat.history(Attribut) wird zuchat.get_history()(Methode). Die neue Methode verwendetcurated: bool = False. Wenn SieTrueübergeben, werden nur die beibehaltenen Turns zurückgegeben. Dafür gibt es kein altes Äquivalent.client.aio.chats.create(...)gibt direkt einAsyncChatzurück. Es werden nursend_messageundsend_message_streamerwartet.- Die Optionen für die einzelnen Züge werden in einem Argument zusammengefasst:
send_message(message, config=types.GenerateContentConfig(...)). Der erste Parameter wird ebenfalls voncontentinmessageumbenannt. start_chat(response_validation=False)ist eine neue Methode, für die es in früheren Versionen kein Äquivalent gab.
Vorher
model = GenerativeModel("gemini-2.5-flash")
chat = model.start_chat()
print(chat.send_message("Tell me a story").text)
for content in chat.history:
print(content.role, content.parts)
Nach
chat = client.chats.create(model="gemini-3.5-flash")
print(chat.send_message("Tell me a story").text)
for content in chat.get_history():
print(content.role, content.parts)
Konfiguration, Sicherheitseinstellungen und Systemanweisungen
Beachten Sie die folgenden Änderungen bei Aufgaben für Konfiguration, Sicherheitseinstellungen und Systemanweisungen:
Die folgenden Argumente werden als Felder von
GenerateContentConfigin einemconfig=zusammengefasst:generation_configsafety_settingstoolstool_configlabelssystem_instruction
Ein einfaches
dictfunktioniert überall dort, wo ein Konfigurationstyp funktioniert.system_instructionwird vom Modellkonstruktor in die Konfiguration pro Aufruf verschoben. In der früheren SDK-Version wurdesystem_instructioneinmal beim Erstellen vonGenerativeModelfestgelegt.system_instructionmuss jetzt bei jedem Aufruf übergeben oder inclient.chats.create(config=...)enthalten sein.Die Sicherheitseinstellungen ändern sich von
dictzulist. Beispiel:[types.SafetySetting(category=c, threshold=t) for c, t in old_dict.items()]Enumerationen werden als einfache Strings akzeptiert und umgewandelt.
Skalare Feldnamen bleiben ansonsten unverändert:
temperature,top_p,top_k,candidate_count,max_output_tokens,stop_sequences,presence_penalty,frequency_penalty,seed,response_mime_type,response_schema,response_logprobs,logprobs.Zu den neuen Feldern ohne altes Äquivalent gehören
thinking_config,cached_content,automatic_function_calling,http_options,media_resolutionundspeech_config.
Vorher
from vertexai.generative_models import (
GenerativeModel, GenerationConfig, HarmCategory, HarmBlockThreshold,
)
model = GenerativeModel(
"gemini-2.5-flash",
system_instruction=["Talk like a pirate.", "Don't use rude words."],
)
response = model.generate_content(
contents="Why is the sky blue?",
generation_config=GenerationConfig(temperature=0, top_p=0.95, max_output_tokens=100),
safety_settings={
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
},
)
Nach
from google.genai import types
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Why is the sky blue?",
config=types.GenerateContentConfig(
system_instruction="Talk like a pirate. Don't use rude words.",
temperature=0,
top_p=0.95,
max_output_tokens=100,
safety_settings=[
types.SafetySetting(
category="HARM_CATEGORY_HATE_SPEECH",
threshold="BLOCK_MEDIUM_AND_ABOVE",
),
types.SafetySetting(
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH,
),
],
),
)
Multimodale Eingabe
Beachten Sie die folgenden Änderungen für Aufgaben mit multimodaler Eingabe:
| Alt | Neu |
|---|---|
Part.from_uri(uri, mime_type), positionell zulässig |
Part.from_uri(file_uri=, mime_type=), nur Schlüsselwort, Parameter umbenannt |
Part.from_data(data, mime_type) |
Part.from_bytes(data=, mime_type=), Methode umbenannt |
Part.from_text(text) |
Part.from_text(text=), nur Keyword |
Image.load_from_file(path) |
Kein Äquivalent. Öffnen Sie die Datei und verwenden Sie Part.from_bytes. |
mime_typeist intypes.Part.from_uri()optional (wird serverseitig abgeleitet), bleibt aber intypes.Part.from_bytes()erforderlich.client.files.upload(...)wird nur in der Gemini Developer API unterstützt. Für Agent Platform-Arbeitslasten können Sie Cloud Storage-URIs weiterhin mitfrom_urioder Inline-Bytes mitfrom_bytesübergeben.
Vorher
from vertexai.generative_models import GenerativeModel, Part, Image
image = Image.load_from_file("image.jpg")
print(model.generate_content(["What is shown in this image?", image]).text)
image_part = Part.from_uri(
"gs://cloud-samples-data/generative-ai/image/scones.jpg",
mime_type="image/jpeg",
)
Nach
from google.genai import types
# Image.load_from_file has no equivalent: read the bytes yourself.
with open("image.jpg", "rb") as f:
image = types.Part.from_bytes(data=f.read(), mime_type="image/jpeg")
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=["What is shown in this image?", image],
)
image_part = types.Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
mime_type="image/jpeg",
)
Funktionsaufrufe und Fundierung
Beachten Sie die folgenden Änderungen für Funktionsaufrufe und Grounding-Aufgaben:
- Tools werden in
config=verschoben. Es gibt keintools=-Argument im Aufruf oder in einem Modellobjekt. Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())wird zutypes.Tool(google_search=types.GoogleSearch()). Eine Factory-Methode wird zu einem einfachen Feld.types.Toolhat auch ein separatesgoogle_search_retrieval-Feld.response.function_callsist der idiomatische Accessor und schlägt nicht fehl, wenn Teil 0 Text ist. Die alte Methode funktioniert weiterhin.- Das Roh-JSON-Schema wird in
parameters_json_schemaangegeben. Ein typisiertestypes.Schemawird inparametersangegeben. - Sie können jetzt eine Python-Funktion als Tool übergeben. Der automatische Funktionsaufruf ist standardmäßig aktiviert, wenn Sie die Funktion übergeben. Wenn Sie eine manuelle Tool-Schleife portieren und ein Funktionsobjekt übergeben, beginnt das SDK mit der Ausführung Ihres Codes. Deaktivieren Sie den standardmäßigen automatischen Funktionsaufruf mit
automatic_function_calling=types.AutomaticFunctionCallingConfig(disable=True). Die folgenden neuen Tooltypen haben in früheren Versionen kein Äquivalent:
code_execution,url_context,google_maps,computer_use,file_search,enterprise_web_search,mcp_servers.
Vorher
from vertexai.generative_models import GenerativeModel, FunctionDeclaration, Tool, grounding
weather_tool = Tool(function_declarations=[
FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
parameters={
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
)
])
model = GenerativeModel("gemini-2.5-flash", tools=[weather_tool])
response = model.generate_content("What is the weather in Boston?")
call = response.candidates[0].content.parts[0].function_call
# Grounding
search_tool = Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())
Nach
from google.genai import types
weather_tool = types.Tool(function_declarations=[
types.FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
parameters_json_schema={
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
)
])
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="What is the weather in Boston?",
config=types.GenerateContentConfig(tools=[weather_tool]),
)
call = response.function_calls[0]
# Grounding
search_tool = types.Tool(google_search=types.GoogleSearch())
Einbettungen
Beachten Sie die folgenden Änderungen für Einbettungsaufgaben:
- „
TextEmbeddingInput“ wurde entfernt.task_typeundtitlesind jetzt pro Anfrage verfügbar. Batchanfragen mit gemischten Aufgaben müssen also in mehrere Aufrufe aufgeteilt werden. - Der Rückgabetyp wurde von einer direkten Liste in ein Antwortobjekt geändert.
get_embeddings()hat direkt einlist[TextEmbedding]zurückgegeben, sodass Aufrufer die Liste direkt indexiert haben (embeddings[0].values). In der neuen Version gibtembed_content()einEmbedContentResponse-Objekt mit einer.embeddings-Liste zurück, sodass Sie aufresponse.embeddings[0].valueszugreifen müssen. Die einzelnen Einbettungsfelder (.valuesund.statistics) behalten ihre ursprünglichen Namen. auto_truncateist nicht mehr standardmäßig aufTrueeingestellt. Das neue Feld ist standardmäßig aufunsetgesetzt. Wenn Sie sich auf das automatische Kürzen von zu langen Eingaben verlassen, legen Sieauto_truncateexplizit fest.
Vorher
from vertexai.language_models import TextEmbeddingModel, TextEmbeddingInput
model = TextEmbeddingModel.from_pretrained("gemini-embedding-001")
text_input = TextEmbeddingInput(
text="How do I get a driver's license?",
task_type="RETRIEVAL_DOCUMENT", # per input
title="Driver's License", # per input
)
embeddings = model.get_embeddings([text_input], output_dimensionality=3072, auto_truncate=True)
print(embeddings[0].values)
Nach
from google.genai import types
response = client.models.embed_content(
model="gemini-embedding-2",
contents="How do I get a driver's license?",
config=types.EmbedContentConfig(
task_type="RETRIEVAL_DOCUMENT", # now per request
title="Driver's License", # now per request
output_dimensionality=3072,
auto_truncate=True,
),
)
print(response.embeddings[0].values)
Tokens zählen
Beachten Sie die folgenden Änderungen für Aufgaben zur Tokenzählung:
total_billable_characterswurde entfernt und es gibt keinen Ersatz. Alle Kostenschätzungen, die auftotal_billable_charactersbasieren, müssen aus einem Generierungsaufruf heraus überarbeitet werden (z. B. anhand vontotal_tokensoderresponse.usage_metadata).client.models.compute_tokens(...)wurde für Token-IDs und String-Teile hinzugefügt.Die Offline-Zählung wurde über
google.genai.local_tokenizer.LocalTokenizerhinzugefügt.
Vorher
model = GenerativeModel("gemini-2.5-flash")
response = model.count_tokens(["Why is the sky blue?"])
print(response.total_tokens)
print(response.total_billable_characters)
Nach
response = client.models.count_tokens(
model="gemini-3.5-flash",
contents=["Why is the sky blue?"],
)
print(response.total_tokens)
print(response.cached_content_token_count)
Kontext-Caching
Beachten Sie die folgenden Änderungen für Aufgaben zum Zwischenspeichern von Kontext:
ttländert den Typ vondatetime.timedeltain einen Dauerstring wie"86400s".- Methoden für Ressourcenobjekte werden zu Clientmodulaufrufen.
updategibt ein neues Objekt zurück, anstatt das vorhandene zu ändern.
Vorher
import datetime
from vertexai.caching import CachedContent
cache = CachedContent.create(
model_name="gemini-2.5-flash",
system_instruction="Please answer my question formally",
contents=contents,
ttl=datetime.timedelta(days=1),
)
cache.update(ttl=datetime.timedelta(days=2))
cache.delete()
Nach
from google.genai import types
cache = client.caches.create(
model="gemini-3.5-flash",
config=types.CreateCachedContentConfig(
contents=contents,
system_instruction="Please answer my question formally",
ttl="86400s",
),
)
cache = client.caches.update(
name=cache.name, config=types.UpdateCachedContentConfig(ttl="172800s")
)
client.caches.delete(name=cache.name)
Batch-Vorhersage und ‑optimierung
Beachten Sie die folgenden Änderungen für Batchvorhersage- und Abstimmungsaufgaben:
- Das Polling basiert auf dem erneuten Binden, nicht auf dem In-Place-Verfahren. Es gibt kein
job.refresh()und keinjob.has_ended. Rufe ein neues Objekt vonclient.batches.get(name=...)ab und vergleichejob.statemit denJOB_STATE_*-Strings. - Batch-Umbenennungen:
source_modelinmodel,input_datasetinsrc,output_uri_prefixinconfig.dest,job_display_nameinconfig.display_name. - Batch-Steuerelemente für die maschinelle Form werden entfernt und haben in der neuen SDK-Version kein Äquivalent.
machine_type,accelerator_type,accelerator_count,starting_replica_countundmax_replica_countsind keine Felder vonCreateBatchJobConfigmehr. - Die folgenden Methoden wurden umbenannt:
sft.trainbisclient.tunings.tunesource_modelnachbase_modeltrain_datasetnachtraining_datasetepochsbisepoch_count
- Abstimmungs-Datasets werden umschlossen. Ein einfacher
"gs://..."-String wird zutypes.TuningDataset(gcs_uri=...). adapter_sizeändert den Typ vonintin einen Enum-String wie"ADAPTER_SIZE_FOUR".
Vorher
from vertexai.batch_prediction import BatchPredictionJob
from vertexai.tuning import sft
job = BatchPredictionJob.submit(
source_model="gemini-2.5-flash",
input_dataset="bq://my-project.my-dataset.my-table",
output_uri_prefix="bq://my-project.my-dataset.output",
)
while not job.has_ended:
job.refresh()
tuning_job = sft.train(
source_model="gemini-2.5-flash",
train_dataset="gs://bucket/train.jsonl",
epochs=1,
adapter_size=4,
)
Nach
from google.genai import types
job = client.batches.create(
model="gemini-3.5-flash",
src="bq://my-project.my-dataset.my-table",
config=types.CreateBatchJobConfig(dest="bq://my-project.my-dataset.output"),
)
completed = {"JOB_STATE_SUCCEEDED", "JOB_STATE_FAILED", "JOB_STATE_CANCELLED", "JOB_STATE_PAUSED"}
while job.state not in completed:
job = client.batches.get(name=job.name)
tuning_job = client.tunings.tune(
base_model="gemini-3.5-flash",
training_dataset=types.TuningDataset(gcs_uri="gs://bucket/train.jsonl"),
config=types.CreateTuningJobConfig(
epoch_count=1,
adapter_size="ADAPTER_SIZE_FOUR",
),
)
Umstrukturierung des Agent Platform SDK
Wenn Sie die agentplatform-Module von google-cloud-aiplatform verwenden, folgen Sie den folgenden Empfehlungen, um zur neuen SDK-Struktur zu migrieren:
google-cloud-agentplatformist jetzt eine eigenständige, schlanke Distribution und die empfohlene Installation für Agent-Arbeitslasten. Wenn Sie die klassische Benutzeroberfläche für maschinelles Lernen nicht benötigen, wechseln Sie vonpip install google-cloud-aiplatformzupip install google-cloud-agentplatform.Verwenden Sie die folgende Tabelle, um Importe und Attributpfade zu aktualisieren:
Zurück Neu client.agent_engines.createclient.runtimes.create(Bereitstellen einer Agent Runtime-Instanz auf der Gemini Enterprise Agent Platform, die integrierte Sitzungen, Sandbox-Codeausführung und Kontextspeicherkonfiguration bietet)
client.memory_banks.create(Erstellen von eigenständigen Memory Bank-Ressourcen zum Speichern, Verwalten und Abrufen von Erinnerungen über Interaktionen hinweg)client.agent_engines.sandboxesclient.sandboxesclient.agent_engines.sandboxes.snapshotsclient.sandboxes.snapshotsclient.agent_engines.sandboxes.templatesclient.sandboxes.templatesclient.agent_engines.sessionsclient.sessionsclient.agent_engines.sessions.eventsclient.sessions.eventsclient.agent_engines.runtimes.revisionsclient.runtimes.revisionsclient.agent_engines.memoriesclient.memory_banks.memoriesagentplatform.agent_engines.templatesagentplatform.frameworksDer globale Initialisierer wird entfernt und Agent-Frameworks lesen Projekt und Standort nicht mehr aus dem
aiplatform.init()- odervertexai.init()-Status. Ersetzen Sie die aus dem Initialisierer abgeleitete Konfiguration durch Umgebungsvariablen für alles, was in einem Agent-Framework ausgeführt wird. Code, der sich auf den Initialisierer zum Konfigurieren bereitgestellter Agents verlässt, wird ohne Fehlermeldung unterbrochen.Aktualisieren Sie die Aufrufstellen von
evals.run_inference(agent=...), umtypes.Runtimezu übergeben, da das SDKtypes.AgentEnginenicht mehr akzeptiert.Nehmen Sie die folgenden Änderungen vor:
vertexai.Clientbisagentplatform.Clientvertexai.ragbisagentplatform.Client().rag
vertexai.Clientgibt bei der ersten Instanziierung einFutureWarningaus:The vertexai.Client class is deprecated. Please use agentplatform.Client instead.vertexai.raggibt beim Import des Moduls eineUserWarningaus, nicht beim Aufruf. Migrieren Sie zu Folgendem:import agentplatform client = agentplatform.Client(project="your-project", location="global") client.rag.create_corpus(...)Die Fehlerbehandlung bei
AdkApp- und Sitzungsaufrufen wurde verbessert. Bei synchronen Sitzungsmethoden und Streaming-Agent-Ausführungen wird jetzt der zugrunde liegende API-Fehler angezeigt. Anrufer, bei denen ein allgemeiner umschlossener Fehler auftritt, werden nicht mehr zugeordnet. Ersetzen Sie Catch-Anweisungen für generische Wrapper-Ausnahmen der Bibliothek durchgoogle.api_core.exceptions.GoogleAPICallErroroder durch bestimmte Statusfehler wieResourceExhaustedundNotFound.Aktualisieren Sie Clientaufrufer oder Middleware, damit das OAuth-Zugriffstoken des Nutzers in jede Anfrage aufgenommen wird. Tokens sind jetzt kurzlebig und werden nicht mit dem Sitzungsstatus gespeichert. Achten Sie darauf, dass die Aktualisierung von Tokens clientseitig erfolgt.
Das Modul
a2a.taskswurde ohne Ersatz entfernt.