Il pacchetto google-cloud-aiplatform include sia l'SDK AI Platform per Python sia la libreria client Python di Gemini Enterprise Agent Platform. Questa pagina tratta le seguenti categorie di modifiche nel pacchetto google-cloud-aiplatform:
I moduli di AI generativa vengono spostati nell'SDK Google Gen AI: i seguenti moduli di AI generativa nel pacchetto
vertexaisono ritirati e migrati all'SDK Google Gen AI (google-genai):vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Per scoprire come eseguire la migrazione dei moduli deprecati all'SDK Google Gen AI, consulta Spostare i moduli di AI generativa nell'SDK Google Gen AI.
Ristrutturazione della superficie dell'agente:sono state apportate le seguenti modifiche ai moduli
agentplatformdigoogle-cloud-aiplatform:- Rinomina
- Promozioni al primo livello
- Rimozione dell'inizializzatore globale
Per scoprire come eseguire la migrazione alla nuova struttura dell'SDK, consulta Ristrutturazione dell'SDK Agent Platform.
Separazione di
agentplatform:google-cloud-agentplatformè ora una distribuzione leggera autonoma e l'installazione consigliata per i carichi di lavoro degli agenti. Se crei solo agenti, installagoogle-cloud-agentplatform, che non contiene moduli di AI generativa. I moduliagentplatformcoprono le integrazioni comuni come[adk],[a2a],[agent_engines],[langchain],[ag2],[llama_index],[evaluation],[bigquery],[live]e[all].
Elementi non interessati
La superficie di machine learning classica (set di dati, addestramento, modelli, previsione, monitoraggio, pipeline) è completamente supportata, non è interessata dalle modifiche della versione 2.0.1 e non ha equivalenti nell'SDK Google Gen AI. Puoi comunque accedere a valutazione, Agent Runtime, prompt e skill installando google-cloud-aiplatform. google-cloud-aiplatform e google-genai coesistono in un unico ambiente e google-genai è ora una dipendenza rigida di 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 non è ritirato, ma esiste un equivalente dell'SDK Google Gen AI ed è lo strumento consigliato.
Migrazione dei moduli di AI generativa all'SDK Google Gen AI
Se utilizzi i moduli di AI generativa nel pacchetto google-cloud-aiplatform, segui questi consigli per eseguire la migrazione all'SDK Google Gen AI (google-genai):
Imposta
google-cloud-aiplatform < 2.0.0in modo che gli incrementi delle dipendenze non correlate non possano rimuovere i moduli sottostanti.Cerca i moduli ritirati nel tuo codice:
vertexai.generative_modelsvertexai.language_modelsvertexai.vision_modelsvertexai.cachingvertexai.tuning
Se importi uno dei moduli Python interessati, ricevi il seguente avviso di ritiro:
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.Esegui la suite di test con
-W error::UserWarningper rilevare le importazioni che hai omesso.Sostituisci
vertexai.init(...)con ungenai.Client(enterprise=True, project=..., location=...)esplicito. Mantienivertexai.init()se utilizzi anche la superficie di machine learning classica.Prima
# 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")Dopo
# pip install google-genai from google import genai from google.genai import types client = genai.Client( enterprise=True, project="my-project", location="global", )In alternativa, configura dall'ambiente:
export GOOGLE_GENAI_USE_ENTERPRISE=true export GOOGLE_CLOUD_PROJECT=my-project export GOOGLE_CLOUD_LOCATION=globalfrom google import genai client = genai.Client()Considerazioni principali:
- Lo stato globale diventa un client esplicito.
vertexai.init()ha configurato l'intero processo;genai.Client()è un oggetto che viene passato. Congenai.Client(), puoi utilizzare due progetti o regioni in un unico processo. enterprise=Trueè obbligatorio. Se lo ometti, il client ha come target l'API Gemini Developer, che poi non riesce a utilizzare le credenziali predefinite dell'applicazione o richiede una chiave API.- Il nome del modello viene spostato dalla costruzione a ogni chiamata. Non esiste alcun oggetto modello di associazione singola.
model=è un argomento di parola chiave obbligatorio in ogni chiamataclient.models.*. - L'autenticazione è invariata. Le credenziali predefinite dell'applicazione vengono comunque applicate e
credentials=accetta ungoogle.auth.credentials.Credentialsin entrambi gli SDK. vertexai.init()includeva anche impostazioni non generative comestaging_bucket,experiment,encryption_spec_key_name,service_account,network.genai.Clientnon ha un equivalente.- La nuova ortografia
enterprise=Trueè accettata a partire dalla versionegoogle-genai2.20.0, ma la versione precedentevertexai=Truefunziona su ogni release ed è la scelta più sicura.
- Lo stato globale diventa un client esplicito.
Controlla il codice per rilevare modifiche silenziose in cui il comportamento diverge senza errori. Questi vengono compilati ed eseguiti, ma cambiano significato.
Comportamento Prima Dopo response.textsu una risposta bloccata o vuotaAumenta ValueErrorRestituisce Noneresponse.textcon più candidatiAumenta ValueErrorRegistra un avviso, restituisce il primo candidato Targeting dei clienti vertexai.init()Agent Platform implicitaL'omissione di vertexai=Trueha come target silenzioso l'API Gemini DeveloperEmbedding auto_truncateIl valore predefinito è TrueNon impostato; viene applicato il valore predefinito del server Una funzione Python passata come strumento Non supportata Eseguito automaticamente dall'SDK system_instructionVincolato una volta al modello Deve essere passato a ogni chiamata La modifica
response.textè quella da cercare per prima. Ognitry/except ValueErrorracchiuso in.textdiventa codice inutilizzato e ogni.textnon protetto ora può generareNonedove in precedenza veniva restituito unstr:if response.text is None: print( "blocked or empty:", response.prompt_feedback, response.candidates[0].finish_reason if response.candidates else None, )Mantieni
google-cloud-aiplatforminstallato se utilizzi la valutazione, Agent Runtime, prompt, set di dati, competenze e l'intera superficie del machine learning classico.Modifica le chiamate alle nuove versioni. Inizia con i cambi di nome meccanici, poi continua con il consolidamento di
config=.
Modifiche alle chiamate basate sulle attività
Visualizza le chiamate modificate in base all'attività:
- Generazione di testo
- Generazione di streaming
- Generazione asincrona
- Sessioni di chat
- Configurazione, impostazioni di sicurezza e istruzioni di sistema
- Input multimodale
- Chiamata di funzione e grounding
- Incorporamenti
- Conteggio token
- Memorizzazione nella cache del contesto
- Previsioni in batch e ottimizzazione
Generazione di testo
Per le attività di generazione di testo, tutti gli argomenti sono solo parole chiave. Le chiamate posizionali aumentano TypeError.
Prima
model = GenerativeModel("gemini-2.5-flash")
response = model.generate_content("Why is the sky blue?")
print(response.text)
Dopo
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Why is the sky blue?",
)
print(response.text)
Generazione di streaming
Per le attività di generazione di streaming, il flag stream=True viene rimosso. Lo streaming è ora un metodo separato che restituisce Iterator[types.GenerateContentResponse]. Utilizza if chunk.text: per eseguire il controllo prima di accedere al testo, perché ogni blocco è un oggetto di risposta completo e il relativo attributo .text a volte può essere None.
Prima
stream = model.generate_content("Tell me a story in 300 words.", stream=True)
for chunk in stream:
print(chunk.text, end="")
Dopo
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="")
Generazione asincrona
Per le attività di generazione asincrona, è stato rimosso il suffisso _async method-name. Ogni chiamata asincrona si trova in client.aio.<module> con lo stesso nome del metodo della controparte sincrona. Chiudi il client con await client.aio.aclose() o utilizza async with genai.Client(...).aio as aclient:.
Prima
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="")
Dopo
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="")
Sessioni di chat
Tieni presente le seguenti modifiche per le attività delle sessioni di chat:
- Le chat vengono create dal client, non da un oggetto modello.
chat.history(proprietà) diventachat.get_history()(metodo). Il nuovo metodo richiedecurated: bool = False. L'argomentoTruerestituisce solo le giocate mantenute, che non hanno un equivalente precedente.client.aio.chats.create(...)restituisce direttamente unAsyncChat. Sono attesi solosend_messageesend_message_stream.- Le opzioni per svolta vengono compresse in un unico argomento:
send_message(message, config=types.GenerateContentConfig(...)). Anche il primo parametro viene rinominato dacontentamessage. start_chat(response_validation=False)è un nuovo metodo senza equivalenti nelle versioni precedenti.
Prima
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)
Dopo
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)
Configurazione, impostazioni di sicurezza e istruzioni di sistema
Tieni presente le seguenti modifiche per le attività di configurazione, impostazioni di sicurezza e istruzioni di sistema:
I seguenti argomenti vengono compressi in un unico
config=come campi diGenerateContentConfig:generation_configsafety_settingstoolstool_configlabelssystem_instruction
Un
dictsemplice funziona ovunque funzioni un tipo di configurazione.system_instructionsi sposta dal costruttore del modello alla configurazione per chiamata. Nella versione precedente dell'SDK,system_instructionveniva impostato una sola volta durante la creazione diGenerativeModel. Orasystem_instructiondeve essere passato a ogni chiamata o incluso inclient.chats.create(config=...).Le impostazioni di sicurezza cambiano da
dictalist. Ad esempio:[types.SafetySetting(category=c, threshold=t) for c, t in old_dict.items()].Gli enum vengono accettati come stringhe semplici e forzati.
I nomi dei campi scalari rimangono invariati:
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.I nuovi campi senza un equivalente precedente includono
thinking_config,cached_content,automatic_function_calling,http_options,media_resolutionespeech_config.
Prima
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,
},
)
Dopo
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,
),
],
),
)
Input multimodale
Tieni presente le seguenti modifiche per le attività di input multimodale:
| Precedente | Nuovo |
|---|---|
Part.from_uri(uri, mime_type), posizionale consentito |
Part.from_uri(file_uri=, mime_type=), solo parole chiave, parametro rinominato |
Part.from_data(data, mime_type) |
Part.from_bytes(data=, mime_type=), metodo rinominato |
Part.from_text(text) |
Part.from_text(text=), solo parole chiave |
Image.load_from_file(path) |
Nessun equivalente; apri il file e utilizza Part.from_bytes |
mime_typeè facoltativo intypes.Part.from_uri()(lato server dedotto), ma rimane obbligatorio intypes.Part.from_bytes().client.files.upload(...)è supportato solo dall'API Gemini Developer. Per i carichi di lavoro di Agent Platform, continua a passare gli URI Cloud Storage utilizzandofrom_urio i byte incorporati utilizzandofrom_bytes.
Prima
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",
)
Dopo
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",
)
Chiamata di funzione e grounding
Tieni presente le seguenti modifiche per le attività di chiamata di funzioni e grounding:
- Gli strumenti vengono spostati in
config=. Non esiste alcun argomentotools=nella chiamata o in un oggetto modello. Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())diventatypes.Tool(google_search=types.GoogleSearch()). Un metodo di fabbrica diventa un campo semplice.types.Toolha anche un campogoogle_search_retrievalseparato.response.function_callsè la funzione di accesso idiomatica e non genera errori quando la parte zero è un testo. Il vecchio attraversamento funziona ancora.- Lo schema JSON non elaborato è specificato in
parameters_json_schema. Untypes.Schemadigitato è specificato inparameters. - Ora puoi passare una funzione Python come strumento e la chiamata automatica di funzioni è attiva per impostazione predefinita quando passi la funzione. Se esegui il porting di un ciclo di strumenti manuale e passi un oggetto funzione, l'SDK inizia a eseguire il codice. Disattiva la chiamata automatica di funzioni predefinita con
automatic_function_calling=types.AutomaticFunctionCallingConfig(disable=True). I seguenti nuovi tipi di strumenti non hanno equivalenti nelle versioni precedenti:
code_execution,url_context,google_maps,computer_use,file_search,enterprise_web_search,mcp_servers.
Prima
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())
Dopo
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())
Incorporamenti
Tieni presente le seguenti modifiche per l'incorporamento delle attività:
TextEmbeddingInputrimosso.task_typeetitleora sono per richiesta, quindi i batch di attività miste devono essere suddivisi in più chiamate.- Il tipo restituito è cambiato da un elenco diretto a un oggetto di risposta.
get_embeddings()ha restituito direttamente unlist[TextEmbedding], quindi i chiamanti hanno indicizzato direttamente l'elenco (embeddings[0].values). Nella nuova versione,embed_content()restituisce un oggettoEmbedContentResponsecontenente un elenco.embeddings, che richiede l'accesso aresponse.embeddings[0].values. I singoli campi di incorporamento (.valuese.statistics) mantengono i nomi originali. auto_truncatenon è più impostato come valore predefinito diTrue. Il nuovo campo ha come valore predefinitounset. Se ti affidi al troncamento silenzioso degli input troppo lunghi, impostaauto_truncatein modo esplicito.
Prima
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)
Dopo
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)
Conteggio dei token
Tieni presente le seguenti modifiche per le attività di conteggio dei token:
total_billable_charactersè stato rimosso e non è stato sostituito. Qualsiasi stima dei costi basata sutotal_billable_charactersdeve essere rielaborata (ad esempio in base atotal_tokensoresponse.usage_metadata) da una chiamata di generazione.- È stato aggiunto
client.models.compute_tokens(...)per gli ID token e le parti di stringa. Il conteggio offline è stato aggiunto tramite
google.genai.local_tokenizer.LocalTokenizer.
Prima
model = GenerativeModel("gemini-2.5-flash")
response = model.count_tokens(["Why is the sky blue?"])
print(response.total_tokens)
print(response.total_billable_characters)
Dopo
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)
Memorizzazione nella cache del contesto
Tieni presente le seguenti modifiche per le attività di memorizzazione nella cache del contesto:
ttlcambia tipo dadatetime.timedeltaa una stringa di durata come"86400s".- I metodi degli oggetti risorsa diventano chiamate ai moduli client.
updaterestituisce un nuovo oggetto anziché modificarlo sul posto.
Prima
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()
Dopo
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)
Previsioni in batch e ottimizzazione
Tieni presente le seguenti modifiche per le attività di previsioni in batch e ottimizzazione:
- Il polling è basato sul rebind, non in loco. Non esiste
job.refresh()e non esistejob.has_ended. Recupera un nuovo oggetto daclient.batches.get(name=...)e confrontajob.statecon le stringheJOB_STATE_*. - Rinomine batch:
source_modelinmodel,input_datasetinsrc,output_uri_prefixinconfig.dest,job_display_nameinconfig.display_name. - I controlli batch della forma della macchina vengono rimossi e non hanno un equivalente nella nuova versione dell'SDK.
machine_type,accelerator_type,accelerator_count,starting_replica_countemax_replica_countnon sono più campi diCreateBatchJobConfig. - I seguenti metodi sono stati rinominati:
- Da
sft.trainaclient.tunings.tune - Da
source_modelabase_model - Da
train_datasetatraining_dataset - Da
epochsaepoch_count
- Da
- I set di dati per l'ottimizzazione sono inclusi. Una stringa
"gs://..."semplice diventatypes.TuningDataset(gcs_uri=...). adapter_sizecambia tipo dainta una stringa enum come"ADAPTER_SIZE_FOUR".
Prima
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,
)
Dopo
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",
),
)
Ristrutturazione dell'SDK Agent Platform
Se utilizzi i moduli agentplatform di google-cloud-aiplatform, segui questi consigli per eseguire la migrazione alla nuova struttura dell'SDK:
google-cloud-agentplatformè ora una distribuzione leggera autonoma e l'installazione consigliata per i carichi di lavoro degli agenti. Se non hai bisogno della superficie di machine learning classica, passa dall'installazione dipip install google-cloud-aiplatforma quella dipip install google-cloud-agentplatform.Utilizza la seguente tabella per aggiornare le importazioni e i percorsi degli attributi:
Indietro Nuovo client.agent_engines.createclient.runtimes.create(Deploy di un runtime dell'agente su un'istanza di Gemini Enterprise Agent Platform, che fornisce sessioni, esecuzione di codice sandbox e configurazione della memoria contestuale integrate)
client.memory_banks.create(Crea risorse Memory Bank autonome per archiviare, gestire e recuperare i ricordi nelle interazioni)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.frameworksL'inizializzatore globale viene rimosso e i framework degli agenti non leggono più il progetto e la località dallo stato
aiplatform.init()overtexai.init(). Sostituisci la configurazione derivata dall'inizializzatore con le variabili di ambiente per qualsiasi elemento in esecuzione all'interno di un framework dell'agente. Il codice che si basa sull'inizializzatore per configurare gli agenti di cui è stato eseguito il deployment si interrompe automaticamente anziché generare un errore.Aggiorna i siti di chiamata
evals.run_inference(agent=...)per trasmetteretypes.Runtime, poiché l'SDK non accetta piùtypes.AgentEngine.Apporta le seguenti modifiche:
- Da
vertexai.Clientaagentplatform.Client - Da
vertexai.ragaagentplatform.Client().rag
vertexai.Clientemette unFutureWarningalla prima creazione di un'istanza:The vertexai.Client class is deprecated. Please use agentplatform.Client instead.vertexai.ragemette unUserWarningal momento dell'importazione del modulo, non durante la chiamata. Esegui la migrazione a quanto segue:import agentplatform client = agentplatform.Client(project="your-project", location="global") client.rag.create_corpus(...)- Da
Aggiorna la gestione degli errori relativi a
AdkAppe alle chiamate di sessione. I metodi di sessione sincrona e le esecuzioni dell'agente di streaming ora mostrano l'errore API sottostante. I chiamanti che rilevano un errore generico di wrapping non corrispondono più. Sostituisci le intercettazioni per le eccezioni generiche del wrapper della libreria congoogle.api_core.exceptions.GoogleAPICallError(o errori di stato specifici comeResourceExhaustedeNotFound).Aggiorna i chiamanti client o il middleware in modo da includere il token di accesso OAuth dell'utente in ogni richiesta, poiché i token ora sono effimeri e non vengono mantenuti con lo stato della sessione. Assicurati che l'aggiornamento del token sia gestito lato client.
Tieni presente che il modulo
a2a.tasksè stato rimosso senza sostituzione.