1. Przegląd
Z tego ćwiczenia dowiesz się, jak używać interfejsu wiersza poleceń agentów do zarządzania całym lokalnym cyklem tworzenia agenta AI. Niezależnie od tego, czy tworzysz otoki istniejących modeli Gemini, czy też budujesz niestandardowych agentów od podstaw za pomocą pakietu Agent Development Kit (ADK 2.0), interfejs wiersza poleceń Agents zapewnia narzędzia do tworzenia szkieletów, budowania, sprawdzania i testowania agentów lokalnie.
Czego się nauczysz
- Jak zainstalować i skonfigurować
agents-clioraz powiązane z nim umiejętności. - Jak utworzyć szkielet nowego projektu agenta.
- Struktura i kluczowe pliki projektu agenta przepływu pracy w formie wykresu ADK 2.0.
- Jak uruchamiać automatyczne sprawdzanie kodu i czyszczenie kodu.
- Jak uruchomić i używać lokalnego środowiska testowego do interaktywnego testowania z automatycznym ponownym wczytywaniem.
Wymagania
- Python 3.11 lub nowszy
- system zarządzania pakietami uv,
- Node.js 18 lub nowszy (jeśli używasz umiejętności agenta kodowania)
- Antigravity IDE (instalacja i konfiguracja w Google Antigravity)
Wymagania wstępne
W tym ćwiczeniu z programowania zakładamy, że masz już doświadczenie w tych kwestiach:
- za pomocą terminala i wiersza poleceń.
Nie jest wymagane wcześniejsze doświadczenie z agentami AI ani pakietem ADK 2.0.
2. Konfigurowanie uwierzytelniania i środowiska
Podaj dane uwierzytelniające, aby agent mógł wywoływać modele Gemini.
Opcja 1. Klucz interfejsu Gemini API (Google AI Studio)
Jeśli używasz standardowego klucza interfejsu Gemini API (który możesz uzyskać w Google AI Studio), wyeksportuj go w sesji terminala IDE:
export GEMINI_API_KEY="your_api_key_here"
export GOOGLE_GENAI_USE_ENTERPRISE=FALSE
Opcja 2. Domyślne uwierzytelnianie aplikacji Google Cloud
Jeśli korzystasz z Vertex AI w Google Cloud, uwierzytelnij się za pomocą domyślnych danych logowania aplikacji Google Cloud (ADC) i ustaw aktywny projekt Google Cloud:
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. Konfigurowanie interfejsu CLI i umiejętności agentów
Najpierw zainstaluj narzędzie agents-cli. To narzędzie wykonuje większość pracy związanej z zarządzaniem projektami agentów.
Po zainstalowaniu Antigravity uruchom polecenie konfiguracji bezpośrednio w terminalu.
👉 Otwórz terminal i uruchom:
uvx google-agents-cli setup
To polecenie automatycznie instaluje:
- Narzędzie Agents CLI globalnie w systemie.
- 7 umiejętności asystenta kodowania w określonych domenach, które Antigravity może wykorzystać, aby pomóc Ci w tworzeniu, budowaniu szkieletów, ocenianiu i wdrażaniu agentów. Te umiejętności są instalowane globalnie w
~/.agents/skills/i automatycznie wykrywane przez Antigravity.
Uwaga: umiejętności są instalowane w ~/.agents/skills/ i automatycznie wykrywane przez Antigravity. Możesz to sprawdzić za pomocą polecenia /skills lub w ustawieniach Antigravity.
Oczekiwane dane wyjściowe (przycięte):
█▀█ █▀▀ █▀▀ █▄ █ ▀█▀ █▀ █▀▀ █ █`
`█▀█ █▄█ ██▄ █ ▀█ █ ▄█ █▄▄ █▄ █`
`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. Tworzenie projektu agenta
W tej sekcji utworzysz w pełni ustrukturyzowany katalog projektu przy użyciu szablonu prototypu.
👉 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 automatycznie uruchamia polecenie szkieletowe (agents-cli scaffold create customer-support-agent --prototype --yes) i konfiguruje pliki projektu.
5. Poznaj kod agenta
👉 Poproś Antigravity o wyjaśnienie wygenerowanego kodu:
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.
W środowisku IDE Antigravity nowo utworzone pliki projektu i artefakty są wyświetlane bezpośrednio w panelu pomocniczym (po lewej stronie). Możesz go wyświetlić app/agent.py w tym miejscu lub otworzyć w eksploratorze plików IDE, aby przejrzeć wygenerowany kod.
# 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,
)
Kluczowe pojęcia
- Przepływ pracy i krawędzie: w ADK 2.0 aplikacje agentów są koordynowane jako wykres za pomocą
Workflow. Listaedgesokreśla przepływ wykonania, łącząc węzły zSTARTi umożliwiając rozgałęzianie warunkowe na podstawie ścieżek (np. kierowanie dofaq_agentw przypadku"shipping"lub dohandle_unrelatedw przypadku"unrelated"). - LlmAgent: deklaratywne węzły, które definiują zadania oparte na LLM z określonymi instrukcjami, modelami i danymi wyjściowymi w formacie strukturalnym (
output_schema). - Węzły i kontekst: funkcje Pythona oznaczone dekoratorem
@node(lub funkcje standardowe), które wykonują logikę, uzyskują dostęp do stanu wykonania za pomocąContexti zwracają obiektyEvent, aby przekazywać dane i sygnały routingu wzdłuż wykresu. - Model: jako domyślny szybki model rozumowania używany jest model „gemini-3.1-flash-lite”.
- App Wrapper: obiekt
Appnajwyższego poziomu otacza główny przepływ pracy. Narzędzia zewnętrzne, takie jak lokalny plac zabaw, platformy oceny ADK i Agent Runtime, wykrywają i wykonują przepływ pracy za pomocą tego standardowegoappinterfejsu.
6. Automatyczne sprawdzanie kodu
Przed uruchomieniem lub przetestowaniem agenta warto sprawdzić, czy kod jest przejrzysty i prawidłowo sformatowany.
👉 Prompt Antigravity:
Run linting on my agent project to verify its health.
Antigravity wykona agents-cli lint za kulisami, aby uruchomić wstępnie skonfigurowane testy, sprawdzając importy, składnię i spójność formatowania w plikach.
7. Interaktywne testowanie w narzędziu Playground
Lokalny plac zabaw w internecie to najszybszy sposób na sprawdzenie działania agenta. Jest to interaktywny interfejs czatu, w którym możesz rozmawiać z agentem i sprawdzać realizację zadań w czasie rzeczywistym.
👉 Prompt Antigravity:
Launch the local development playground for my agent.
Antigravity uruchomi lokalny serwer deweloperski (agents-cli playground). Otwórz podany adres URL (zwykle http://127.0.0.1:8080/dev-ui/?app=app) w przeglądarce, wybierz z menu folder app i zacznij rozmawiać z agentem.
Rozpocznij czat z agentem w interfejsie internetowym. Spróbuj zadać pytanie dotyczące dostawy:
How much is standard shipping?
Zwróć uwagę, jak przepływ pracy skutecznie kategoryzuje i kieruje zapytanie do faq_agent, aby uzyskać odpowiedź. Spróbuj też zadać pytanie niezwiązane z tematem, aby sprawdzić, czy przepływ pracy kieruje do handle_unrelated i prawidłowo odmawia odpowiedzi:
What is the weather like?
Testowanie automatycznego doładowywania w czasie rzeczywistym
Możesz zobaczyć, jak zmiany wprowadzone w agencie w czasie rzeczywistym są odzwierciedlane w sekcji Playground.
- Zmodyfikuj instrukcję
faq_agentwapp/agent.py, zadając pytanie 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. - Wyślij agentowi w playgroundzie nową wiadomość, aby przetestować automatyczne ponowne wczytywanie:
Środowisko testowe automatycznie przeładuje i wykona zaktualizowany kod w czasie rzeczywistym bez konieczności ponownego uruchamiania serwera. W odpowiedzi powinny pojawić się emotikony.How much is standard shipping?
8. Wykonywanie w wierszu poleceń
W przypadku szybkich testów, automatyzacji lub skryptów możesz poprosić Antigravity o uruchomienie agenta bezpośrednio z terminala.
👉 Prompt Antigravity:
Run a CLI query asking my agent how long standard delivery takes.
Antigravity wykona polecenie zapytania (agents-cli run "How long does standard delivery take?"). Spowoduje to szybkie wnioskowanie jednorazowe i wyświetlenie ostatecznej odpowiedzi agenta wraz ze szczegółami wykonania narzędzia.
9. Czyszczenie
Aby uniknąć pozostawienia niechcianych zasobów w środowisku lokalnym, wykonaj te czynności czyszczenia:
- Zatrzymaj serwery lokalne: jeśli serwer
agents-cli playgroundnadal działa, zatrzymaj go w terminalu, naciskającCtrl + C. - Usuń lokalne pliki projektu: usuń z komputera lokalnego katalog projektu agenta.
rm -rf customer-support-agent
10. Podsumowanie i dalsze kroki
Gratulacje! Udało Ci się zarządzać pełnym cyklem życia lokalnego programowania agenta AI za pomocą interfejsu wiersza poleceń Agents i ADK 2.0.
Czego się dowiedziałeś(-aś)
- Skonfiguruj narzędzia: zainstaluj interfejs wiersza poleceń agentów i skonfiguruj umiejętności przepływu pracy w określonej domenie na potrzeby Antigravity.
- Utworzono projekt: utworzono w pełni ustrukturyzowany
customer-support-agentprojekt przy użyciu standardowych szablonów. - Analiza struktury ADK 2.0: omówienie przepływów pracy w postaci wykresów, agentów LLM, węzłów, krawędzi i routingu warunkowego.
- Zarządzane lokalne usługi zdrowotne: przeprowadzono automatyczne kontrole jakości kodu za pomocą
agents-cli lint. - Sprawdzone działanie: agent został przetestowany interaktywnie z użyciem funkcji szybkiego przeładowywania w czasie rzeczywistym w środowisku testowym oraz przeprowadzono szybkie testy w wierszu poleceń.
Co dalej?
Teraz, gdy opanujesz już lokalny cykl programowania, możesz rozbudować i wdrożyć swojego agenta w środowisku produkcyjnym:
- Ocena: oceń agenta na podstawie zbioru ewaluacyjnego za pomocą funkcji
agents-cli eval run, aby zmierzyć dokładność i wykryć regresje. - Skala chmury klasy korporacyjnej: wdrażanie i obserwowanie: pakuj i wdrażaj agenta w środowiskach produkcyjnych, takich jak środowisko wykonawcze agentów lub Cloud Run, za pomocą
agents-cli deploy. Skonfiguruj telemetrię produkcyjną, aby przesyłać strumieniowo logi i ślady wykonania do Cloud Trace i BigQuery.