Das Paket google-cloud-aiplatform enthält sowohl das Agent Platform SDK für Python als auch die Agent Platform Python-Clientbibliothek. Auf dieser Seite werden die folgenden Kategorien von Änderungen im Paket google-cloud-aiplatform behandelt:
Generative AI-Module werden in das Google Gen AI SDK verschoben: Die folgenden Generative AI-Module im Paket
vertexaiwurden eingestellt und in das Google Gen AI SDK (google-genai) migriert:vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Informationen zum Migrieren der verworfenen Module zum Google Gen AI SDK finden Sie unter Generative AI-Module zum Google Gen AI SDK migrieren.
Umstrukturierung der Agent-Oberfläche: Die folgenden Änderungen wurden an den
agentplatform-Modulen vongoogle-cloud-aiplatformvorgenommen:- Umbenennungen
- Beförderungen auf die oberste Ebene
- Entfernen des globalen Initialisierers
Informationen zur Migration zur neuen SDK-Struktur finden Sie unter Agent Platform SDK umstrukturieren.
Entkopplung von
agentplatform:google-cloud-agentplatformist jetzt eine eigenständige, schlanke Distribution und die empfohlene Installation für Agent-Arbeitslasten. Wenn Sie nur Agenten 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 Oberfläche für maschinelles Lernen (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 harte 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 wurde nicht eingestellt, aber es gibt ein entsprechendes Google Gen AI SDK, das empfohlen wird.
Module für generative KI in das Google Gen AI SDK verschieben
Wenn Sie die Module für generative KI im Paket google-cloud-aiplatform verwenden, beachten Sie die folgenden Empfehlungen für die Migration zum Google Gen AI SDK (google-genai):
Legen Sie
google-cloud-aiplatform < 2.0.0fest, damit nicht zusammenhängende Abhängigkeitserhöhungen die Module unter Ihnen nicht entfernen können.Suchen Sie in Ihrem Code nach den verworfenen Modulen:
vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Wenn Sie eines der betroffenen Python-Module importieren, erhalten Sie die folgende Einstellungswarnung:
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 Test-Suite mit
-W error::UserWarningaus, um fehlende Importe zu finden.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:
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 weitergeben. Mitgenai.Client()können Sie zwei Projekte oder Regionen in einem Prozess verwenden. - Das Feld „
enterprise=True“ darf nicht leer sein. Wenn Sie ihn weglassen, wird die Gemini Developer API im Hintergrund als Ziel verwendet. Dies schlägt dann bei Standardanmeldedaten für Anwendungen fehl oder erfordert einen API-Schlüssel. - Der Modellname wird von der Konstruktion zu jedem Aufruf verschoben. Es gibt kein einmalig gebundenes Modellobjekt.
model=ist ein erforderliches Keyword-Argument für jedenclient.models.*-Aufruf. - Die Authentifizierung bleibt unverändert. Standardanmeldedaten für Anwendungen gelten weiterhin und
credentials=akzeptiert in beiden SDKs einengoogle.auth.credentials.Credentials. vertexai.init()enthielt auch nicht generative Einstellungen wiestaging_bucket,experiment,encryption_spec_key_name,service_account,network.genai.Clienthat kein Äquivalent für sie.- Die neuere Schreibweise
enterprise=Truewird abgoogle-genai2.20.0 akzeptiert, aber die ältere Versionvertexai=Truefunktioniert in jedem Release und ist die sicherere Wahl.
- Der globale Status wird zu einem expliziten Client.
Prüfen Sie Ihren Code auf unbemerkte Änderungen, bei denen das Verhalten ohne Fehler abweicht. Diese werden kompiliert und ausgeführt, ändern aber die Bedeutung.
Verhalten Vorher Nach response.textbei einer blockierten oder leeren AntwortLöst ValueErrorausGibt Nonezurückresponse.textmit mehreren KandidatenLöst ValueErrorausProtokolliert eine Warnung und gibt den ersten Kandidaten zurück Client-Targeting vertexai.init()implizierte Agent Platform-KI-AgentenWenn Sie vertexai=Trueweglassen, wird die Gemini Developer API automatisch als Ziel verwendet.Einbettungen auto_truncateDie Standardeinstellung ist True.Nicht festgelegt; Serverstandard gilt 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 Aufruf übergeben werden Die Änderung
response.textist die erste, nach der gesucht werden sollte. Jedertry/except ValueError, der um.textherum verwendet wird, wird zu totem Code, und jeder ungeschützte.textkann jetztNonezurückgeben, wo zuvor einstrzurü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, 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 Anrufe
Hier finden Sie die geänderten Aufrufe nach Aufgabe:
- Textgenerierung
- Streaming-Generierung
- Asynchrone Generierung
- Chatsitzungen
- Konfiguration, Sicherheitseinstellungen und Systemanweisungen
- Multimodale Eingabe
- Funktionsaufrufe und Fundierung
- Einbettungen
- Tokenanzahl
- Kontext-Caching
- Batch-Vorhersage und -Abstimmung
Textgenerierung
Bei Aufgaben zur Textgenerierung sind alle Argumente reine Schlüsselwortargumente. 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 dies zu prüfen, bevor Sie auf den Text zugreifen, da jeder Block ein vollständiges Antwortobjekt ist und das Attribut .text 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 für den Methodennamen entfernt. Jeder asynchrone Aufruf befindet sich unter client.aio.<module> und hat denselben Methodennamen wie sein synchrones Gegenstück. 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 und nicht von einem Modellobjekt erstellt.
chat.history(Attribut) wird zuchat.get_history()(Methode). Die neue Methode dauertcurated: 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 pro Runde werden zu 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 keine Entsprechung gibt.
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 für Konfigurations-, Sicherheitseinstellungs- und Systemanweisungsaufgaben:
Die folgenden Argumente werden als Felder von
GenerateContentConfigin einemconfig=zusammengefasst:generation_configsafety_settingstoolstool_configlabelssystem_instruction
Ein einfacher
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()]Enums werden als einfache Strings akzeptiert und implizit umgewandelt.
Die Namen der Skalarfelder bleiben 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 alte Entsprechung 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), positional 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), intypes.Part.from_bytes()aber weiterhin erforderlich.client.files.upload(...)wird nur in der Gemini Developer API unterstützt. Übergeben Sie für Agent Platform-Arbeitslasten weiterhin Cloud Storage-URIs mitfrom_urioder Inline-Byte mitfrom_bytes.
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 Fundierungsaufgaben:
- 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 die idiomatische Zugriffsfunktion und schlägt nicht fehl, wenn der erste Teil Text ist. Die alte Durchsuchung funktioniert weiterhin.- Das JSON-Rohschema wird in
parameters_json_schemaangegeben. Ein typisiertertypes.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 Toolschleife portieren und ein Funktionsobjekt übergeben, beginnt das SDK mit der Ausführung Ihres Codes. Deaktivieren Sie die standardmäßigen automatischen Funktionsaufrufe mit
automatic_function_calling=types.AutomaticFunctionCallingConfig(disable=True). Die folgenden neuen Tooltypen haben keine Entsprechung in früheren Versionen:
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_typeundtitlegelten jetzt pro Anfrage. Batches mit gemischten Aufgaben müssen daher 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 zurück, das eine.embeddings-Liste enthält. Sie müssen also aufresponse.embeddings[0].valueszugreifen. Die einzelnen Einbettungsfelder (.valuesund.statistics) behalten ihre ursprünglichen Namen. auto_truncateist nicht mehr standardmäßig aufTruefestgelegt. Das neue Feld ist standardmäßig aufunsetgesetzt. Wenn Sie sich auf das automatische Kürzen zu langer 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)
Token zählen
Beachten Sie die folgenden Änderungen für Aufgaben zur Tokenzählung:
total_billable_characterswurde entfernt und nicht ersetzt. Alle Kostenschätzungen, die auftotal_billable_charactersbasieren, müssen aus einem Generierungsaufruf überarbeitet werden (z. B. fürtotal_tokensoderresponse.usage_metadata).client.models.compute_tokens(...)wurde für Token-IDs und Stringteile hinzugefügt.Die Offlinezä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 Kontext-Caching-Aufgaben:
ttländert den Typ vondatetime.timedeltain einen Dauerstring wie"86400s".- Methoden von Ressourcenobjekten werden zu Aufrufen von Clientmodulen.
updategibt ein neues Objekt zurück, anstatt es direkt 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)
Batchvorhersage und -abstimmung
Beachten Sie die folgenden Änderungen für Batchvorhersage- und Abstimmungsaufgaben:
- Das Polling basiert auf einer erneuten Bindung, nicht auf einer direkten Aktualisierung. Es gibt kein
job.refresh()und keinjob.has_ended. Rufen Sie ein neues Objekt ausclient.batches.get(name=...)ab und vergleichen Siejob.statemit denJOB_STATE_*-Strings. - Batch-Umbenennungen:
source_modelinmodel,input_datasetinsrc,output_uri_prefixinconfig.dest,job_display_nameinconfig.display_name. - Die Steuerelemente für Batch-Maschinenformen wurden 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 umgebrochen. 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, beachten Sie die folgenden Empfehlungen für die Migration zur neuen SDK-Struktur:
google-cloud-agentplatformist jetzt eine eigenständige, schlanke Distribution und die empfohlene Installation für Agent-Arbeitslasten. Wenn Sie die klassische Oberfläche für maschinelles Lernen nicht benötigen, wechseln Sie bei der Installation 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(Agent Runtime auf einer Gemini Enterprise Agent Platform-Instanz bereitstellen, die integrierte Agent Platform-Sitzungen, Sandbox-Codeausführung und Kontextspeicherkonfiguration bietet)
client.memory_banks.create(Eigenständige Agent Platform Memory Bank-Ressourcen erstellen, um gemerkte Informationen über Interaktionen hinweg zu speichern, zu verwalten und abzurufen)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 vom Initialisierer abgeleitete Konfiguration durch Umgebungsvariablen für alles, was in einem Agent-Framework ausgeführt wird. Code, der sich auf den Initialisierer verlässt, um bereitgestellte Agents zu konfigurieren, bricht ohne Fehlermeldung ab.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 Importieren des Moduls einenUserWarningaus, nicht beim Aufruf. Migrieren Sie zu Folgendem:import agentplatform client = agentplatform.Client(project="your-project", location="global") client.rag.create_corpus(...)Fehlerbehandlung für
AdkApp- und Sitzungsaufrufe aktualisieren. Synchrone Sitzungsmethoden und Streaming-Agent-Ausführungen geben jetzt den zugrunde liegenden API-Fehler aus. Aufrufer, die einen allgemeinen verpackten Fehler abfangen, stimmen nicht mehr überein. Ersetzen Sie Catches für generische Wrapper-Ausnahmen der Bibliothek durchgoogle.api_core.exceptions.GoogleAPICallError(oder spezifische Statusfehler wieResourceExhaustedundNotFound).Aktualisieren Sie Clientaufrufer oder Middleware, damit das OAuth-Zugriffstoken des Nutzers bei jeder Anfrage enthalten ist. Tokens sind jetzt flüchtig und werden nicht mit dem Sitzungsstatus beibehalten. Achten Sie darauf, dass die Tokenaktualisierung clientseitig verwaltet wird.
Das Modul
a2a.taskswurde ohne Ersatz entfernt.