Скразныя AI-агенты з ADK Dev Skills
Скразныя AI-агенты з навыкамі распрацоўкі Google ADK: што гэта за навыкі, якія існуюць і як яны пакрываюць зборку, тэсты, CI/CD і назіральнасць.
Наступныя прытамлівкі паказваюць практычны шлях для выканання задачы «Стварэнне AI-агентаў з нуля за дапамогою навыкаў ADK Dev Skills». Акцэнт ставіцца на контракты, перакананняя і месцы для коду, а не на мотывацыйныя аспекты.
Введэнне
Калі працуеце над стадзіяй введэння, спачатку запісайце контракт: неабходныя даны, сігнал успеху і тое, што выканаецца у разы частковага невясковасці. Такі спіс контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрэчвайце гэтую стадзію як контракт межа данымі і перакананымі выходамі. Дайце назвы элементам, задаце крытэрыя успеху і не падтрымайце частковыя завершэння без адзначэння.
Што такое навыкі ADK Dev Skills?
Калі працуеце над стадзіяй «Што такое ADK Dev», спачатку запісайце умовы віканання: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага невыканання. Такі спіс дапамагае заліцвачваць змяны ў кодзе.
Запісвайце час віканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы відомасці костаў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Зробіце перапаконтаванне пасля дорогіх крокаў. Програма не должна зноў нарахоўваць кост той самай вызову LLM, калі аператар прабуюць зноў віканаць пазнейшы элемент.
Доступныя навыкі
Калі працюеце з этапам «Доступныя навыкі», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе пасля таго. Зберагаюце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Ставяце контрольны пункт пасля дорогіх крокаў. Сістэма вярнення не должна занова ставіць плату за той самы вызов LLM, калі аператар перапрыяўляе працу да наступнага вузла.
Сумеснасць
Калі працюеце над стадзіяй сумаспрацоўнасці, спачатку запішыце умовы кантракту: неабяжныя даны, сігнал успеху і тое, што выходзіць пад час частковага невыпання. Такі спіс пераконтроўкаў дапамагае заліцвачыць змяны ў кодзе.
Прыяўнія прычыны
Калі працюеце над стадзіяй «Прыёмныя умовы», спачатку запісайце «контракт»: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, нявыпанне павінна вказваць на адну адповядальнасць, а не на заплутаны ланцужок задач. Зробіце перапактаванне пасля дорогіх крокаў. Сістэма вярнення не павінна зноў выраховваць адплату за той самы вызыв LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працюеце над стадзіяй «Прыёмныя умовы», спачатку запісайце «контракт»: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду чыстымі. Запісвайце час выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відкрытыя даныя пра косцы з’являюцца рана, таму не будзе неспадзянак у вырахунках, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы.
# Required tools
- Node.js (for npx)
- Python 3.10+
- uv package manager (pip install uv)
- Google Cloud SDK (gcloud)
- An active GCP project with billing enabled
gcloud config set project YOUR_PROJECT_ID
gcloud auth application-default login
Шаг 1: Установка ADK Dev Skills
Этап установкі ADK ў рамках Шагу 1 будзе працаваць наякней лепшая, якшо яго розглядаць як меркаваны элемент. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Зберагаючы настройкі пазначайце іх окола коду прыемлі. Файлы серавэра, хранільнікі секрэтных даных і пазначкі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можу выконваць аўдыт без неабяжнага чытання всіх дадзеных. Зберагаючы стан сіткі дадзеных у простам і тыпаваным фармаце, унікальнае розташоўванне вузлаў і ўласнасці полей будуць відразу відны, а перадача дадзеных пасля перэрываў не будзе наражаная на проблемы.
npx skills add google/adk-docs/skills -y -g
npx skills list
Шаг 2: Адакцэйваюце вашыя трэбаванні
Этап „Адакцэйваюце вашыя трэбаванні“ работае наўзяй калі яго спрыяваць як мерыемую структуру. Запісайце адну ідэальную версію працы, адзін прыклад неудачы і прыметкі па поверненню да пачатковага стану пры розшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшай дапрацоўкі. Храніце стан графа ў простам і тыпаваным фармаце. Вярстакаваныя элементы маскуюць інфармацію пра тое, які вузел запісаў канкрэтны поле, і спакшваюць продовжэнне працы пасля перарываў.
I need to build a Retail Returns multiagent system using ADK.
Requirements:
- Check order status by order ID
- Process refunds for delivered orders
- Multi-agent architecture with routing
- Production deployment to Agent Engine
Шаг 3: Стварэнне канструкцыі праекта
Этап шаг 3 «Стварэнне праекта» працюе найкрашча, калі яго розглядаць як меркаваную плошчу. Зафіксавайце адны ідэальны прымер працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштабаў. Валіце варыянты маленькіх, тэставаных елементаў замест большых скрыптов. Калі які-небудзь шаг не выйшае, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа павінны быць простымі і з адначытаемымі дадзеннямі. Вярнутыя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшуюць продовжэнне працы пасля перэрываў. Этап шаг 3 «Стварэнне праекта» працюе найкрашча, калі яго розглядаць як меркаваную плошчу. Зафіксавайце адны ідэальны прымер працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштабаў. Запісвайце часы выканання і косты токенав або запытаў разам з функцыйнальнымі рэзультатамі. Відразувая візуабельнасць костаў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайшанняў у спяльныя сераўы.
Use adk-scaffold to create this project with:
- Agent Engine deployment target
- GitHub Actions CI/CD
- No datastore needed (we'll use mock data)
retail-returns/
├── app/ # Our agent code
├── tests/ # Unit, integration, eval tests
├── .github/workflows/ # CI/CD pipelines
├── deployment/terraform/ # Infrastructure as code
├── notebooks/ # Jupyter notebooks
└── Makefile # Common development commands
Шаг 4: Адаптаванне логікі бізнесу
У падзе «Адаптаванне логікі бізнесу», якая ўскладнюецца 4-м шагам, пярэд тым, як зменіць код, неабходна візначыць параметры вхідных дадзеных, адпаведальнага за шаг і крытэрыі завершэння. Аператары должны магчымае перазапускаць шаг з вядомай точкі контролю, не падозрэўаючы прыхованы статус. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь код. Даецца можлівасць людзкай апраўды для тых вароў, якія выкарыстоўваюць грошы або зменяюць даны праўай працы. Підключэння пад час компілявання не ўзначае повнасці бізнес-функцыйяў.
Add tools for:
1. check_order_status(order_id: str) -> dict
2. process_refund(order_id: str) -> dict
Use mock data with 3 sample orders. Refunds only work for delivered orders.
# Mock database
ORDERS = {
"12345": {"status": "shipped", "total": 45.99, "items": ["T-shirt"], "refunded": False},
"67890": {"status": "delivered", "total": 120.50, "items": ["Shoes", "Socks"], "refunded": False},
}
async def check_order_status(order_id: str) -> dict:
"""Checks order status and details."""
if order_id in ORDERS:
return {"status": "success", "order": ORDERS[order_id]}
return {"status": "error", "message": f"Order {order_id} not found."}
async def process_refund(order_id: str) -> dict:
"""Processes refund with validation."""
if order_id not in ORDERS:
return {"status": "error", "message": f"Order {order_id} not found."}
order = ORDERS[order_id]
if order["status"] != "delivered":
return {"status": "error", "message": "Order must be delivered"}
if order["refunded"]:
return {"status": "error", "message": "Already refunded"}
order["refunded"] = True
return {"status": "success", "transaction_id": f"REF-{order_id}-123"}
from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.models import Gemini
def create_status_agent() -> Agent:
return Agent(
name="status_agent",
model=Gemini(model="gemini-3-flash-preview"),
instruction="Look up orders using check_order_status tool.",
tools=[check_order_status],
)
def create_refund_agent() -> Agent:
return Agent(
name="refund_agent",
model=Gemini(model="gemini-3-flash-preview"),
instruction="Verify order is delivered before processing refund.",
tools=[check_order_status, process_refund],
)
root_agent = Agent(
name="triage_agent",
model=Gemini(model="gemini-3-flash-preview"),
instruction="Route requests to status_agent or refund_agent.",
sub_agents=[create_status_agent(), create_refund_agent()],
)
app = App(name="retail_returns_app", root_agent=root_agent)
Шаг 5: Тэставанне ў локальных умовах
У падэйпе тэставання ў локальных умовах, які ёсць частынай шага 5, пярэд тым, як зменіць код, неабходна візначыць даныя, якія будуць вводзіцца, адпаведальнага за шаг і крытэрыя завершэння. Аператары должны магчымае перадзеісцаваць шаг з вядомай точкі контролю, не падозрэўаючы прыхованы статус. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія пераказы і апрацоўка некорэктных паведамленняў ёсцю частынай продукту, а не елементамі, якія дадуцца пазней. Неабходна людзкая апраўда для тых крокоў, якія ведуць да выдатку грошаў або змены даных у прыемніце. Компіляцыйны механізм не ёсць адпаведнікам пачынковай готовасці продукту.
Let's test this locally
cd retail-returns
make install
make playground
Шаг 6: Стварыць ацэнкі
Для этапы 6 «Стварэнне ацэнкаў» неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за этап і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перайсці на гэты этап з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі этап не выйшоў, прычына неудачы должна вказываць на адзін конкрэтны элемент, а не на заплутаную структуру. Неабходна людская апрацоўка тых крокаў, якія ведуць да выдаткаў грошаў або змяны дадзэнняў у працоўным сераверы. Компіляцыйныя налашчэння не ўзначаюць павнае адпрацоўкі бізнес-процэсаў. Для этапы 6 «Стварэнне ацэнкаў» неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за этап і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае перайсці на гэты этап з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Паруч з функцыйнаімі рэзультатамі неабходна фіксаваць час выкарыстоўвання, а таксу токенаў чы запытаў. Візуабільнасць костоў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльную.
Коментары.
Create an evaluation to test invalid order handling
{
"eval_set_id": "invalid_orders",
"eval_cases": [
{
"eval_id": "invalid_status_check",
"conversation": [
{"user_content": {"parts": [{"text": "What's the status of order #99999?"}]}}
],
"expected_tool_calls": [
{"tool_name": "check_order_status", "args": {"order_id": "99999"}}
]
},
{
"eval_id": "invalid_refund",
"conversation": [
{"user_content": {"parts": [{"text": "I want a refund for order #88888"}]}}
]
}
]
}
{
"criteria": {
"tool_trajectory_avg_score": {
"threshold": 1.0,
"match_type": "IN_ORDER"
},
"final_response_match_v2": {
"threshold": 0.8,
"judgeModelOptions": {"judgeModel": "gemini-3-flash-preview"}
}
}
}
make eval
Tests passed: 2
Tests failed: 0
Крок 7: Развертанне у працэйныя умовы
Калі працуеце над крокам 7 «Развертанне у працэйныя умовы», спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы ў частковай невялічыні. Такі спіс дапамагае залішацца чыстым пад час пазнейшых змян у кодзе. Храніце настройкі парадульна ад коду прыемліка. Файлы сераўнавання, хранальнікі секрэтных дадзеных і флагі функцый крануцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры. Стварайце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення не должна занова ставіць плата за той самы вызыв LLM, калі аператар перапрыяўляе працу да наступнага элемента.
Deploy this to Agent Engine
# Export dependencies
uv export --no-hashes > app/app_utils/.requirements.txt
# Deploy to Vertex AI
uv run -m app.app_utils.deploy \
--source-packages=./app \
--entrypoint-module=app.agent_engine_app \
--entrypoint-object=agent_engine \
--requirements-file=app/app_utils/.requirements.txt
import vertexai
client = vertexai.Client(project="YOUR_PROJECT", location="us-central1")
agent = client.agent_engines.get(name="ENGINE_ID")
async for event in agent.async_stream_query(
message="Where is order #12345?",
user_id="test"
):
print(event)
Крок 8: Наладжэнне CI/CD
Калі працуеце над крокам 8 «Наладжэнне», спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі спіс пераканаецца ў тым, што пазнейшыя змены коду будуць адкрытымі. Запісайце адночасна шлях успеху і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не дадатковымі правакамі. Зробіце контрольны пункт пасля дорогіх крокаў. Програма для вярнення не павінна знову ставіць плату за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
Set up CI/CD with GitHub Actions
1. Перагляды PR (.github/workflows/pr_checks.yaml)
Калі працуеце на стадыі 1 PR Checks у GitHub, спачатку запісайце «кантракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным направленні. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Зробіце перапытку пасля дорогіх крокаў. Сістэма не павінна зноў сцягваць плата за той самы вызов LLM, калі аператар праказвае пазнейшы ўзлок. Калі працуеце на стадыі 1 PR Checks у GitHub, спачатку запісайце «кантракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным направленні. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайшых уяўленняў у спаканыя сераўы.
2. Развертванне на стадыі прыготавкі (.github/workflows/staging.yaml)
Стадыя развертвання на стадыі прыготавкі у github работае найэфектывней, калі яе спрыяваць як меравальную плошчу. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і прыказку па абяроŭненню перш чым расшырваць масштабы. Храніце настройкі парадульна ад коду прыемліка. Файлы сяродавішча, хранальнікі секрэтных дадзеных і флагі функцый крануцца ў аднам месцы, якое аператары можаць пераглядаць без неабяŭнога чытання всіх элементаў. Храніце стан сістэмы у простай форме з адзінаковымі тыпамі дадзеных. Вярсткаваныя элементы маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поль, і спакошуюць продыржанне працы пасля перарываў.
3. Развертванне ў працоўны рэжым (.github/workflows/deploy-to-prod.yaml)
Этап 3 Production Deployment у GitHub работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Дакументавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакоююць продовжэнне працы пасля перэрываў.
uvx agent-starter-pack setup-cicd \
--staging-project YOUR_STAGING_PROJECT \
--prod-project YOUR_PROD_PROJECT \
--repository-name YOUR_REPO \
--repository-owner YOUR_GITHUB_USER \
--auto-approve
Шаг 9: Возможнае адзіёванне
Этап Шаг 9 «Возможнае адзіёванне» працюе найкрашча, калі яго спрыяюць як меравальную плошчу. Зберагачыце адны ідэальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Валіце маленькія, тэставальныя элементы замест большых скрыптов. Калі якісь шаг не выйшаў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Рэгулюйце стан графа так, каб ён быў простым і з адзіным тыпам дадзеных. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, канферэнтныя вузел напісаў канкрэтную палатку, і спакойваюць працу пасля перарываў. Этап Шаг 9 «Возможнае адзіёванне» працюе найкрашча, калі яго спрыяюць як меравальную плошчу. Зберагачыце адны ідэальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультаты. Відкрытая інфармацыя пра косты запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайшанняў у спяльныя асяроддзя.
How's observability configured?
Вбудована версія (некалькі рэгулярыяў)
У рэжыме «Вбудована версія, некалькі рэгулярыяў» неабходна прадзефінаваць вхідныя даны, адпаведальную особу за крок і крытэрыя завершэння прычыму перад змінайом коду. Аператары должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Калькі рэгулярыяў трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных дадзенаў і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры. Працявалецкую апраўдку трэба застосавляць да тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны у працэсе. Прыўязка на час компілявання не ёсць падтверджэннем полной адпаведнасці да бізнес-трэбаў.
Неабавязковыя інтэграцыі
У стадыі неабяцковых інтэграцый неабяцкова паказваць вхідныя даны, адпаведнага адпаведнага і крэтыя выходу пры перадзеіснаванні коду. Аператары павінны магчымаць перадзеіснаванне крока з вядомага пункта контролю без неабяцковага адгадвання схованага стану. Неабяцкова задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не яго пазнейшага дапрацоўкі. Неабяцкова прыняць людзкую згоду для тых крокаў, які выкарыстоўваюць грошы або зміняюць даны ў працэсе. Прыўязка на час компілявання не ёсць абавесцю цэлыснасі бізнес-процэсу.
# Add to app/agent.py
from google.adk.plugins import BigQueryAgentAnalyticsPlugin
app = App(
root_agent=root_agent,
plugins=[BigQueryAgentAnalyticsPlugin(dataset="agent_analytics")]
)
Шаг 10: Апрацоўка тэстаў для прыемнай експлуатацыі
Для этапы 10 «Аплікацыя тэстаў» неабходна перад зменым коду адзначыць вхідныя даны, адпаведальнага за шаг і крэтырыя завершэння. Аперацыйныя працавнікі должны магчымае перайсці на гэты шаг з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі шаг не выйшоў, прычына неудачы должна вказываць на адзін конкрэтны элемент, а не на заплутаную структуру працэса. Неабходна людская апраўда для тых крокаў, якія ведуць да выдаткаў грошаў або зменыння дадзэнняў у працоўным сераверы. Компіляцыйныя налашчэння не ўзначаюць павнае адпраўлення задання. Для этапы 10 «Аплікацыя тэстаў» неабходна перад зменым коду адзначыць вхідныя даны, адпаведальнага за шаг і крэтырыя завершэння. Аперацыйныя працавнікі должны магчымае перайсці на гэты шаг з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Паруч з рэзультатамі функцыйнасці неабходна фіксаваць час выкарыстоўвання, а таксу токенаў чы запытаў. Візуабільнасць костоў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераверы.
Create integration tests that hit the deployed agent
import pytest
import requests
import subprocess
def get_access_token():
result = subprocess.run(
["gcloud", "auth", "print-access-token"],
capture_output=True, text=True
)
return result.stdout.strip()
@pytest.mark.integration
def test_valid_order_status():
"""Test order lookup on deployed agent."""
token = get_access_token()
response = requests.post(
f"https://us-central1-aiplatform.googleapis.com/v1/projects/{PROJECT_NUM}/locations/us-central1/reasoningEngines/{ENGINE_ID}:streamQuery",
headers={"Authorization": f"Bearer {token}"},
json={"input": {"message": "Where is order #12345?", "user_id": "test"}}
)
assert response.status_code == 200
text = "".join(event.get("text", "") for event in response.json())
assert "shipped" in text.lower()
assert "45.99" in text
pytest tests/integration/test_remote_agent.py
До і пасля
Калі працуеце над этапам «До» і «Пасля», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўвае чыстасць пазнейшых змян у кодзе. Зберагайце настройкі параду ўнутры коду прыемленае. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжлівага чытання всей структуры. Стварайце контрольныя пункты пасля дорогіх крокаў. Сістэма вярнення не должна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыяўляе працу да пазнейшага вузла.
Без навыкаў
Калі працюеце на стадыі «Без навыкаў», спачатку запісайце контракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага неякшання. Такі спіс пераказваў заходзіць на тое, каб пазнейшыя змены коду былі чыстымі. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зробіце пераказв пасля дорогіх крокаў. Сістэма вярнення не павінна знову ставіць рахунак за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
З навыкамі
Калі працюеце на стадыі «With Skills», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаецца, каб пазнейшыя змены коду былі чыстымі. Волейце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына нявыполнення павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Зробіце перапактаванне пасля дорогіх крокаў. Сістэма не павінна зноў выраховваць адплату за той самы вызыв LLM, калі аператар праканаецца з новага пазнейшы ўзел. Калі працюеце на стадыі «With Skills», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаецца, каб пазнейшыя змены коду былі чыстымі. Запісвайце час выканання і кост токенав або запытаў праза функцыйнае рэзультат. Відкрытыя даны пра косцы з’являюцца ранішэ, таму не будзе неспакою з адплатай, калі працэс пераходзіць з дэмавайнага рэжыма ў спяльныя сераўеры.
Найлепшыя практыкі і парады
Этап «Аптальнейшыя практыкі і парады» работае наўзяй калі яго спрыяваюць як мерыемую структуру. Зафіксавайце адну ідэальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Зберагаюце настройкі пазырочна ад коду прыемліцеля. Файлы сераўнавальнага сяродовішча, хранілішчы секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всей структуры. Зберагаюце стан структуры у простам і тыпаваным фармаце. Вярстакованыя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакоююць працу пасля перарываў.
1. Установіце навыкі глобальна
Этап «1 Install Skills Globally» працюе найкрашча, калі яго розглядаць як вімерную плошчу. Зафіксавце адзін ідэальны прыклад, адзін прыклад неудачы і запіс працэў павернення да пярвоначальнага стану пры расшырэнні масштаба. Дакументавце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Храніце стан графаў у простам і тыпаваным фармаце. Вярнутыя структуры дакументаў маскуюць інфармацыю пра тое, калькі вузел запісаў калькія поля, і спакшваюць продовжэнне обработкі пасля перарываў.
npx skills add google/adk-docs/skills -y -g
2. Будзьце конкрэтныя ў запітах
Этап «Будзьце конкрэтныя» работае найкрашча, калі яго спрыяваць як мерыемую велічыну. Запісаце адна ідэальная версія рэзультата, адын прыклад неудачы і прыметкі па поверненню да пачатковага стану пры розшырэнні масштаба. Валідзіце маленькія, тэставаныя елементы замест амбіцыйных скрыптав. Калі якісь крок не выходзіце, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны працэс. Задаце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
3. Адыходзіце да правага каналу навыкаў для кожнай фазы
4. Працюйце па ціклу з адгукамі
5. Перагляньце створаны код
6. Ожывайце кантроль версій
git init
git add .
git commit -m "Initial scaffold from ADK Dev Skills"
Частыя запытанні
Чы гэта неабяжна спачатку выучыць ADK?
Можна ліквідаваць змест коду, які быў створаны?
Чы гэта будзе працаваць з іншымі дапаможнікамі AI?
Што, як мы хачым выкорыстаць Cloud Run заместо гэтага?
Можна стварыць саве навыкі?
Як мы апдэюем навыкі?
npx skills add google/adk-docs/skills -y -g