1. Panoramica
In questo codelab imparerai a utilizzare Agents CLI per gestire l'intero ciclo di vita dello sviluppo locale di un agente AI. Che tu stia eseguendo il wrapping di modelli Gemini esistenti o creando agenti personalizzati da zero con Agent Development Kit (ADK 2.0), Agents CLI fornisce gli strumenti per creare, compilare, analizzare e testare gli agenti in locale.
Obiettivi didattici
- Come installare e configurare
agents-clie le relative skill. - Come creare la struttura di un nuovo progetto di agente.
- La struttura e i file chiave di un progetto di agente del flusso di lavoro del grafico ADK 2.0.
- Come eseguire la pulizia automatica del codice e il linting.
- Come avviare e utilizzare il playground web locale per i test interattivi con ricaricamento automatico.
Cosa serve
- Python 3.11 o versioni successive
- Gestore di pacchetti uv
- Node.js 18+ (se utilizzi le competenze dell'agente di programmazione)
- Antigravity IDE (installazione e configurazione da Google Antigravity)
Prerequisiti
Questo codelab presuppone che tu abbia familiarità con:
- Utilizzo di un terminale e della riga di comando.
Non è richiesta alcuna esperienza pregressa con gli agenti AI o ADK 2.0.
2. Configurare l'autenticazione e l'ambiente
Fornisci le credenziali di autenticazione per consentire all'agente di chiamare i modelli Gemini.
Opzione 1: chiave API Gemini (Google AI Studio)
Se utilizzi una chiave API Gemini standard (che puoi ottenere da Google AI Studio), esportala nella sessione del terminale IDE:
export GEMINI_API_KEY="your_api_key_here"
export GOOGLE_GENAI_USE_ENTERPRISE=FALSE
Opzione 2: credenziali predefinite dell'applicazione Google Cloud
Se utilizzi Vertex AI su Google Cloud, esegui l'autenticazione con le credenziali predefinite dell'applicazione (ADC) di Google Cloud e imposta il progetto Google Cloud attivo:
gcloud auth application-default login
gcloud config set project <YOUR_PROJECT_ID>
export GOOGLE_GENAI_USE_ENTERPRISE=TRUE
export GOOGLE_CLOUD_PROJECT=REPLACE-WITH-YOUR-PROJECT_ID # Replace with your project ID
export GOOGLE_CLOUD_LOCATION=REPLACE-WITH-LOCATION # Replace the location
3. Configurare Agents CLI e le skill
Il primo passaggio consiste nell'installare lo strumento agents-cli. Questo strumento si occupa del lavoro più pesante di gestione dei progetti degli agenti.
Con Antigravity installato, esegui il comando di configurazione direttamente nel terminale.
👉 Apri un terminale ed esegui:
uvx google-agents-cli setup
Questo comando installa automaticamente:
- Lo strumento Agents CLI a livello globale sul tuo sistema.
- Sette competenze di assistenza alla codifica specifiche per il dominio che Antigravity può utilizzare per aiutarti a creare, strutturare, valutare e implementare agenti. Queste skill vengono installate una sola volta a livello globale in
~/.agents/skills/e vengono rilevate automaticamente da Antigravity.
Nota: le skill vengono installate in ~/.agents/skills/ e rilevate automaticamente da Antigravity. Puoi verificarlo utilizzando il comando /skills o le impostazioni di Antigravity.
Output previsto (troncato):
█▀█ █▀▀ █▀▀ █▄ █ ▀█▀ █▀ █▀▀ █ █`
`█▀█ █▄█ ██▄ █ ▀█ █ ▄█ █▄▄ █▄ █`
`Your coding agent just got an upgrade.`
`1. Authentication`
`─────────────────`
`✓ Authenticated with Google Cloud`
`2. CLI Installation`
`───────────────────`
`▸ uv tool install google-agents-cli`
`✓ Installed google-agents-cli`
`3. Skills Installation`
`──────────────────────`
`▸ npx -y skills add https://github.com/google/agents-cli -y --all -g`
`◇ Found 7 skills`
`~/.agents/skills/google-agents-cli-adk-code`
`~/.agents/skills/google-agents-cli-deploy`
`~/.agents/skills/google-agents-cli-eval`
`~/.agents/skills/google-agents-cli-observability`
`~/.agents/skills/google-agents-cli-publish`
`~/.agents/skills/google-agents-cli-scaffold`
`~/.agents/skills/google-agents-cli-workflow`
4. Crea il progetto dell'agente
In questa sezione creerai una directory di progetto completamente strutturata utilizzando il modello di prototipo.
👉 Prompt Antigravity:
Use ADK 2.0 to create a new graph workflow agent project called
customer-support-agent. I don't want to deploy this agent, so you can skip
the deployment files. The workflow should act as a customer support
representative for a shipping company. It should first classify if the user
query is related to shipping (rates, tracking, delivery, returns) or
unrelated. If it is related to shipping, route to a shipping FAQ agent to
answer the question. If it is unrelated, route to a node that politely
declines to answer.
Antigravity esegue automaticamente il comando di scaffolding (agents-cli scaffold create customer-support-agent --prototype --yes) e configura i file di progetto.
5. Esplorare il codice dell'agente
👉 Chiedi ad Antigravity di spiegare il codice generato:
Read and explain the project structure of my new agent project. Walk me
through how `app/agent.py` is configured, highlighting the role of the
tools, nodes, edges, and the root Workflow.
Nell'IDE Antigravity, i file e gli artefatti del progetto appena creati vengono visualizzati direttamente nel riquadro ausiliario (a sinistra). Puoi visualizzarlo lì o aprirlo dall'Esplora file dell'IDE per esplorare il codice scaffolded.app/agent.py
# app/agent.py
from __future__ import annotations
from typing import Any, Literal
from google.adk.agents.context import Context
from google.adk.apps.app import App
from google.adk.events.event import Event
from google.adk.workflow import Edge
from google.adk.workflow import Workflow
from google.adk.workflow.agents.llm_agent import LlmAgent
from google.adk.workflow.node import node
from pydantic import BaseModel
from pydantic import Field
class InquiryCategory(BaseModel):
category: Literal['shipping', 'unrelated'] = Field(
description=(
'Determine if the user query is related to shipping (rates, tracking,'
' delivery times, returns) or unrelated.'
)
)
def save_query(node_input: str):
"""Saves user query in state for downstream nodes."""
yield Event(data=node_input, state={'user_query': node_input})
categorize_agent = LlmAgent(
name='categorize',
model='gemini-3.1-flash-lite',
instruction='You are an expert classifier. Categorize the user query.',
output_key='inquiry_category',
output_schema=InquiryCategory,
)
@node
def route_inquiry(ctx: Context, node_input: Any):
"""Routes the workflow based on the classified category."""
category_data = ctx.state.get('inquiry_category', {})
category = category_data.get('category', 'unrelated')
query = ctx.state.get('user_query', '')
yield Event(data=query, route=category)
faq_agent = LlmAgent(
name='shipping_faq',
model='gemini-3.1-flash-lite'',
instruction="""You are a customer support representative for a shipping company. Answer user questions based ONLY on the shipping FAQ below. Do not answer questions outside of the FAQ.
SHIPPING FAQ:
- Rates: Standard shipping is $5.99. Express shipping is $12.99. Orders
over $50 qualify for free standard shipping.
- Tracking: You can track your order by entering your tracking number on
our website's tracking page.
- Delivery Times: Standard delivery takes 3-5 business days. Express
delivery takes 1-2 business days.
- Returns: We offer free returns within 30 days of delivery. Please make
sure the item is in its original condition.
""",
)
@node
def handle_unrelated(ctx: Context, node_input: Any):
"""Handles unrelated inquiries politely."""
yield Event(
data=(
'I am sorry, I am a shipping customer support assistant and can only'
' answer questions related to our shipping FAQ.'
)
)
root_agent = Workflow(
name='customer_support_workflow',
edges=[
*Edge.chain('START', save_query, categorize_agent, route_inquiry),
(route_inquiry, faq_agent, 'shipping'),
(route_inquiry, handle_unrelated, 'unrelated'),
],
)
app = App(
name='customer_support_agent',
root_agent=root_agent,
)
Concetti principali
- Workflow e bordi: in ADK 2.0, le applicazioni dell'agente vengono orchestrate come un grafico utilizzando
Workflow. L'elencoedgesdefinisce il flusso di esecuzione, concatenando i nodi daSTARTe consentendo la ramificazione condizionale in base alle route (ad es. il routing afaq_agentsu"shipping"ohandle_unrelatedsu"unrelated"). - LlmAgent: nodi dichiarativi che definiscono attività basate su LLM con istruzioni, modelli e output strutturati specifici (
output_schema). - Nodi e contesto: funzioni Python decorate con
@node(o funzioni standard) che eseguono la logica, accedono allo stato di esecuzione tramiteContexte generano oggettiEventper passare dati e segnali di routing lungo il grafico. - Modello: "gemini-3.1-flash-lite" viene utilizzato come modello di ragionamento rapido predefinito.
- Wrapper app: l'oggetto
Appdi primo livello racchiude il flusso di lavoro principale. Strumenti esterni come il playground locale, gli strumenti di valutazione ADK e Agent Runtime rilevano ed eseguono il tuo flusso di lavoro tramite questa interfacciaappstandardizzata.
6. Linting automatizzato
Prima di eseguire o testare l'agente, è buona norma assicurarsi che il codice sia pulito e formattato correttamente.
👉 Prompt Antigravity:
Run linting on my agent project to verify its health.
Antigravity esegue agents-cli lint dietro le quinte per eseguire controlli preconfigurati, verificando l'importazione, la sintassi e la coerenza della formattazione nei file.
7. Test interattivi con il Playground
Il playground web locale è il modo più rapido per verificare il comportamento dell'agente. Fornisce un'interfaccia di chat interattiva in cui puoi chattare con l'agente e ispezionare le esecuzioni degli strumenti in tempo reale.
👉 Prompt Antigravity:
Launch the local development playground for my agent.
Antigravity avvierà il server di sviluppo locale (agents-cli playground). Apri l'URL fornito (in genere http://127.0.0.1:8080/dev-ui/?app=app) nel browser web, seleziona la cartella app dal menu a discesa per iniziare a chattare con l'agente.
Inizia a chattare con l'agente nell'interfaccia web. Prova a fare una domanda relativa alla spedizione:
How much is standard shipping?
Nota come il flusso di lavoro classifica e indirizza correttamente la richiesta a faq_agent per rispondere. Prova anche a porre una domanda non correlata per verificare che il flusso di lavoro venga indirizzato a handle_unrelated e che la risposta venga rifiutata correttamente:
What is the weather like?
Testare la ricarica automatica in tempo reale
Puoi vedere come le modifiche in tempo reale apportate al tuo agente vengono riflesse nel Playground.
- Modifica l'istruzione
faq_agentinapp/agent.pychiedendo ad Antigravity:Modify the faq_agent instruction in app/agent.py to make the shipping rates response more playful and enthusiastic. Add some emojis and highlight the free shipping threshold. - Invia un nuovo messaggio all'agente nel playground per testare il ricaricamento automatico:
Il playground si ricarica ed esegue automaticamente il codice aggiornato in tempo reale senza richiedere il riavvio del server. Ora dovresti vedere alcune emoji nella risposta.How much is standard shipping?
8. Esecuzione della riga di comando
Per test rapidi, automazione o scripting, puoi chiedere ad Antigravity di eseguire l'agente direttamente dal terminale.
👉 Prompt Antigravity:
Run a CLI query asking my agent how long standard delivery takes.
Antigravity eseguirà il comando di query (agents-cli run "How long does standard delivery take?"). In questo modo viene eseguita un'inferenza rapida a un solo turno e viene stampata la risposta finale dell'agente insieme ai dettagli di esecuzione dello strumento.
9. Esegui la pulizia
Per evitare di lasciare risorse indesiderate nel tuo ambiente locale, segui questi passaggi di pulizia:
- Arresta i server locali: se il server
agents-cli playgroundè ancora in esecuzione, arrestalo nel terminale premendoCtrl + C. - Rimuovi file di progetto locali: elimina la directory del progetto dell'agente di scaffolding dalla macchina locale.
rm -rf customer-support-agent
10. Riepilogo e passaggi successivi
Complimenti! Hai gestito correttamente il ciclo di vita dello sviluppo locale end-to-end di un agente AI utilizzando Agents CLI e ADK 2.0.
Che cosa hai imparato
- Configura i tuoi strumenti: hai installato la Agents CLI e configurato le skill del workflow specifiche per il dominio per Antigravity.
- Progetto strutturato: è stato creato un progetto
customer-support-agentcompletamente strutturato utilizzando modelli standardizzati. - Struttura ADK 2.0 analizzata: sono stati esplorati flussi di lavoro del grafico, agenti LLM, nodi, archi e routing condizionale.
- Managed Local Health: esegue controlli automatici della qualità del codice utilizzando
agents-cli lint. - Comportamento verificato: l'agente è stato testato in modo interattivo con il ricaricamento a caldo in tempo reale tramite il playground e sono stati eseguiti test rapidi sulla riga di comando.
Passaggi successivi
Ora che hai acquisito familiarità con il ciclo di sviluppo locale, ecco come puoi espandere e rendere operativo il tuo agente:
- Valutazione: assegna un punteggio al tuo agente rispetto a un evalset utilizzando
agents-cli eval runper misurare l'accuratezza e trovare le regressioni. - Enterprise Cloud Scale: Deployment e Osservabilità: impacchetta ed esegui il deployment dell'agente in ambienti di produzione come Agent Runtime o Cloud Run utilizzando
agents-cli deploy. Configura la telemetria di produzione per trasmettere in streaming i log e le tracce di esecuzione a Cloud Trace e BigQuery.