Il pacchetto google-cloud-aiplatform include sia l'SDK Agent Platform per Python sia la libreria client Python di Agent Platform. Questa pagina illustra 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 stati 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 Spostamento dei moduli di AI generativa all'SDK Google Gen AI.
Ristrutturazione della piattaforma per gli agenti: sono state apportate le seguenti modifiche ai moduli
agentplatformdigoogle-cloud-aiplatform:- Rinomina
- Promozioni al livello superiore
- Rimozione dell'inizializzatore globale
Per scoprire come eseguire la migrazione alla nuova struttura dell'SDK, consulta Ristrutturazione dell'SDK Agent Platform.
Disaccoppiamento di
agentplatform:google-cloud-agentplatformè ora una distribuzione autonoma e leggera, nonché l'installazione consigliata per i workload 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].
Cosa non è interessato
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 un equivalente nell'SDK Google Gen AI. Puoi comunque accedere alla valutazione, ad Agent Runtime, ai prompt e alle skill installando google-cloud-aiplatform. Sia google-cloud-aiplatform che 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 è deprecato, ma esiste un equivalente dell'SDK Google Gen AI ed è lo strumento consigliato.
Spostamento dei moduli di AI generativa nell'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 upgrade delle dipendenze non correlati non possano rimuovere i moduli sottostanti.Cerca i moduli deprecati nel 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 individuare le importazioni che hai dimenticato.Sostituisci
vertexai.init(...)con ungenai.Client(enterprise=True, project=..., location=...)esplicito. Mantienivertexai.init()se utilizzi anche la piattaforma 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 passi. Congenai.Client(), puoi utilizzare due progetti o regioni in un unico processo. enterprise=Trueè obbligatorio. Se lo ometti, il client sceglie automaticamente 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 passa dalla costruzione a ogni chiamata. Non esiste un oggetto modello bind-once.
model=è un argomento di parola chiave obbligatorio per ogni chiamataclient.models.*. - L'autenticazione rimane invariata. Le credenziali predefinite dell'applicazione rimangono valide 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 per questi elementi.- La nuova ortografia
enterprise=Trueè accettata a partire dagoogle-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 individuare modifiche silenziose in cui il comportamento diverge senza un errore. 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 implicitoSe ometti vertexai=True, l'API Gemini Developer viene scelta come target in modo silenziosoEmbedding 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_instructionBound once on the model Deve essere trasmesso a ogni chiamata La modifica
response.textè quella da cercare per prima. Ognitry/except ValueErrorche racchiude.textdiventa codice inattivo e ogni.textnon protetto può ora restituireNonedove in precedenza veniva restituitostr:if response.text is None: print( "blocked or empty:", response.prompt_feedback, response.candidates[0].finish_reason if response.candidates else None, )Mantieni installato
google-cloud-aiplatformse utilizzi la valutazione, Agent Runtime, i prompt, i set di dati, le skill e l'intera superficie di machine learning classica.Modifica le chiamate alle nuove versioni. Inizia con le ridenominazioni meccaniche, poi continua con il consolidamento di
config=.
Modifiche alle chiamate basate sulle attività
Di seguito sono riportate le chiamate modificate in base all'attività:
- Generazione di testo
- Generazione di flussi di dati
- Generazione asincrona
- Sessioni di chat
- Configurazione, impostazioni di sicurezza e istruzioni di sistema
- Input multimodale
- Chiamata di funzione e grounding
- Embedding
- Conteggio dei token
- Memorizzazione nella cache del contesto
- Previsione e ottimizzazione in batch
Generazione di testo
Per le attività di generazione di testo, tutti gli argomenti sono solo parole chiave. Le chiamate posizionali generano 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 in streaming
Per le attività di generazione in streaming, il flag stream=True viene rimosso. Lo streaming è ora un metodo separato che restituisce Iterator[types.GenerateContentResponse]. Utilizza if chunk.text: per controllare prima di accedere al testo, perché ogni chunk è un oggetto di risposta completo e il suo 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, il suffisso del nome del metodo _async è stato rimosso. Ogni chiamata asincrona si trova in client.aio.<module> con lo stesso nome del metodo della sua 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. Se passiTrue, vengono restituiti solo i turni conservati, che non hanno un equivalente precedente.client.aio.chats.create(...)restituisce direttamente unAsyncChat. Sono attesi solosend_messageesend_message_stream.- Le opzioni per turno vengono raggruppate 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 sono compressi in un unico
config=come campi diGenerateContentConfig:generation_configsafety_settingstoolstool_configlabelssystem_instruction
Un semplice
dictfunziona ovunque funzioni un tipo di configurazione.system_instructionpassa dal costruttore del modello alla configurazione per chiamata. Nella versione precedente dell'SDK,system_instructionveniva impostato una 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 sono 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 per 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 per parole chiave |
Image.load_from_file(path) |
Nessun equivalente; apri il file e utilizza Part.from_bytes |
mime_typeè facoltativo intypes.Part.from_uri()(dedotto lato server), ma rimane obbligatorio intypes.Part.from_bytes().client.files.upload(...)è supportato solo nell'API Gemini Developer. Per i workload di Agent Platform, continua a passare gli URI Cloud Storage utilizzandofrom_urio i byte in linea 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 funzione e grounding:
- Gli strumenti vengono spostati in
config=. Non esiste un argomentotools=nella chiamata o in un oggetto modello. Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())diventatypes.Tool(google_search=types.GoogleSearch()). Un metodo factory diventa un campo semplice.types.Toolha anche un campogoogle_search_retrievalseparato.response.function_callsè l'accessor idiomatico e non genera errori quando la parte zero è un testo. La vecchia navigazione 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 di funzione automatica è attiva per impostazione predefinita quando passi la funzione. Se esegui il porting di un loop di strumenti manuale e passi un oggetto funzione, l'SDK inizia a eseguire il tuo codice. Disattiva la chiamata di funzione automatica predefinita con
automatic_function_calling=types.AutomaticFunctionCallingConfig(disable=True). I seguenti nuovi tipi di strumenti non hanno un equivalente 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 le attività di embedding:
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()restituiva direttamente unlist[TextEmbedding], quindi i chiamanti indicizzavano 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 embedding (.valuese.statistics) mantengono i loro nomi originali. auto_truncatenon è più impostato come predefinito perTrue. Il valore predefinito del nuovo campo èunset. 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_charactersviene rimosso e non ha un sostituto. Qualsiasi stima dei costi basata sutotal_billable_charactersdeve essere rielaborata (ad esempio rispetto 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 in loco.
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 ottimizzazione e previsione in batch:
- Il polling si basa sul riassociazione, non sul posto. Non esiste
job.refresh()e non esistejob.has_ended. Recupera un nuovo oggetto daclient.batches.get(name=...)e confrontajob.statecon le stringheJOB_STATE_*. - Rinomina in batch:
source_modelinmodel,input_datasetinsrc,output_uri_prefixinconfig.dest,job_display_nameinconfig.display_name. - I controlli della forma della macchina batch 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 di ottimizzazione sono aggregati. 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 i consigli riportati di seguito per eseguire la migrazione alla nuova struttura dell'SDK:
google-cloud-agentplatformè ora una distribuzione leggera autonoma e l'installazione consigliata per i workload degli agenti. Se non hai bisogno della piattaforma di machine learning classica, passa l'installazione dapip install google-cloud-aiplatformapip 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(esegui il deployment di un runtime dell'agente nell'istanza di Gemini Enterprise Agent Platform, che fornisce sessioni di Agent Platform integrate, esecuzione di codice in sandbox e configurazione della memoria di contesto)
client.memory_banks.create(crea risorse Agent Platform Memory Bank autonome per la persistenza, la gestione e il recupero delle memorie tra le 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 variabili di ambiente per tutto ciò che viene eseguito all'interno di un framework di agenti. 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 passaretypes.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 istanza:The vertexai.Client class is deprecated. Please use agentplatform.Client instead.vertexai.raggenera unUserWarningal momento dell'importazione del modulo, non durante la chiamata. Esegui la migrazione a:import agentplatform client = agentplatform.Client(project="your-project", location="global") client.rag.create_corpus(...)- Da
Aggiorna la gestione degli errori relativi alle chiamate
AdkAppe di sessione. I metodi di sessione sincrona e le esecuzioni degli agenti di streaming ora mostrano l'errore dell'API sottostante. I chiamanti che rilevano un errore generico con wrapping non corrispondono più. Sostituisci i blocchi catch per le eccezioni generiche del wrapper della libreria congoogle.api_core.exceptions.GoogleAPICallError(o errori di stato specifici comeResourceExhaustedeNotFound).Aggiorna i chiamanti o il middleware del client in modo da includere il token di accesso OAuth dell'utente in ogni richiesta, poiché i token ora sono temporanei e non vengono mantenuti con lo stato della sessione. Assicurati che l'aggiornamento dei token sia gestito lato client.
Tieni presente che il modulo
a2a.tasksè stato rimosso senza una sostituzione.