За межамы панелей керування: стварэнне автонамнага агента-аналізавца дадзейнаў BigQuery
Автонамны агент-аналізавальнік дадзейнаў BigQuery з Google ADK і Gemini: чаму панелі керування і простыя прыемы перакладу тэксту ў SQL зупіняюцца на заключным етапе, і як гэта практычна выправіць у працэсах CI/CD.
У гэтым карыце практычным напамінанні перакладзенаецца шлях ад сыр'ёў да рабочай сістэмы для праекта «Beyond Dashboards: Building an Autonomous BigQuery Data Analyst Agent with Google ADK for Customer 360». Акцэнт ставіцца на практычныя крокі, чыстае перакананне ў правільнасці дзействаў і код, які можна проста падключыць у рэпазітарый, не прабуючы здогадвацца пра мету. У стадыі агульнага перакладзення неабходна з'явіць вхідныя даны, абавесцелювальнага адпаведальнага за крок і крытэрыя завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае перадзначыць крок з вядомай точкі контролю, не прабуючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна быць адносна конкрэтной адпаведальнасці, а не плутанай лянцюговой структуры.
1. Акцэнт на заключным етапе: чаму традыцыйныя інструменты аналізу дадзэнняў і простыя методы перакладу тэкста ў SQL не функцыонуюць
Калі працюеце над стадзіяй «1. Акцэнт на заканчоўнай частцы», спачатку запісаце кантракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс пераказвае робіць пазнейшыя змены ў кодзе працэсабельнымі. Спрытваце гэту стадзію як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даце назвы артыфактам, задаце крытэрыя успеху і не падзволяйце частковаму завершэнню без паведамлення. Зробіце пераконтроль пасля дорогіх крокаў. Програма для продакцыі не павінна знову сцягваць плата за той самы вызов LLM, калі аператар прабуе зноў запрацаваць з пазнейшым вузлам.
Чаму традыцыйныя панелі BI перастаюць працаваць
Калі працюеце над этапам «Чаму традыцыйныя панелі дадзеных?», спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе адкрыта і чэстна. Запісвайце час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зробіце перапаконтроль пасля дорогіх крокаў. Сістэма вярнення не павінна знову нарахоўваць кост той самай вызову LLM, калі аператар прабуюць зноў запрацаваць пазнейшы вузел.
Чаму наўмовістныя «Тэкст-у-SQL» прыемнікі LLM не функцыонуюць у корпаратыўных срэдах
Калі працуеце над стадзіяй «Why Naive Text-to-SQL LLM», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьваты чыстасцю пазнейшых змян у кодзе. Зберагаюце настройкі за межамі коду прыемлена. Файлы сераўнавання, хранілішчы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных ўсё часта стварае проблемы. Калі працуеце над стадзіяй «Why Naive Text-to-SQL LLM», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьваты чыстасцю пазнейшых змян у кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі які-небудзь крок не выйшаў, прычына нявыпання должна вказываць на адну конкрэтную абавязку, а не на заплутаную структуру працы.
2. Архітэктура агентав: Канвэн Google ADK
Архітэктура агентав працюе наяўней, калі яе розглядаць як вімерную паверхню. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Разглядзайце гэты этап як кантракт межа вхіднымі данымі і паверыжанымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, некомплектным выкананнем задачы. Зберагаюце стан графа у простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў кожны поле, і спакоююць працу пасля перарываў.
3. Аснова інжынерыі 1: Фундамент знанняў і кэшаванне кантэксту Vertex AI
1-й этап 3-х інжынярскіх ступеняў працюе наякша, калі яго розглядаць як вімерную паверхню. Зафіксавайце адна «золатая» транскрыпцыю, адын прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце часы выканання і косты токеноў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графа як просты і з адначыяным тыпам дадзеных. Вкладаныя блокі маскуюць інфармацыю пра тое, які вузел запісаў якое поле, і спакшваюць продажчыку працу пасля перарываў.
Компіляванне слоўнікаў Markdown у сістэмны прапт
Прыкладчыцтва слоўнікаў Markdown у стадыю працуюць наякша, калі іх спрыяваць як мерыемую паверхню. Зберагчыце адны ідэальны прыклад выкарыстоўвання, адзін кейс неудачы і прыметкі па адвярненню працы пры расшырэнні масштаба. Хавайце настройкі за межамі коду прыемлівання. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыяй павінны знаходзіцца ў адном месцы, куды аператары можаць адбавляць без падчытання всей структуры. Задаўце ліміты токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; жорсткія ліміты не дазволяюць дэмам ператварыцца на неспакоўлівыя рахункі. Прыкладчыцтва слоўнікаў Markdown у стадыю працуюць наякша, калі іх спрыяваць як мерыемую паверхню. Зберагчыце адны ідэальны прыклад выкарыстоўвання, адзін кейс неудачы і прыметкі па адвярненню працы пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача павінна адносіцца да адной адпаведальнасці, а не да заплутанай лінійкі задач.
# c360_agent/config.py
import os
import glob
def compile_knowledge_base(knowledge_dir: str) -> str:
"""Recursively compiles markdown architecture guides into structured agent context."""
context_chunks = []
guide_files = glob.glob(os.path.join(knowledge_dir, "**/*.md"), recursive=True)
for file_path in sorted(guide_files):
with open(file_path, "r", encoding="utf-8") as f:
rel_name = os.path.relpath(file_path, knowledge_dir)
content = f.read()
context_chunks.append(f"### KNOWLEDGE GUIDE: {rel_name}\n\n{content}\n")
return "\n---\n".join(context_chunks)
KNOWLEDGE_CONTEXT = compile_knowledge_base("c360_agent/knowledge")
SYSTEM_PROMPT = f"""
You are an expert BigQuery Data Analyst Agent for an Enterprise Customer 360 (C360) Lakehouse.
Your mission is to answer business and analytical questions by generating and executing accurate, cost-effective SQL queries.
CRITICAL OPERATIONAL RULES:
1. TARGET CONFORMED MARTS FIRST: Always query `c360_curated_unified` for golden demographics or cross-system questions. Use Spoke marts (`c360_curated_*`) only for system-specific line-item grain.
2. MANDATORY DRY RUN: You MUST execute `dry_run_bq_query` on every generated SQL statement before calling `execute_bq_query`. Inspect syntax and bytes scanned.
3. CLUSTER AWARENESS: Always filter or join on clustered keys (`UnifiedCustomerDimId`, `UnifiedOrderDimId`) to minimize BigQuery slot consumption.
4. STRICT READ-ONLY: You are strictly forbidden from executing INSERT, UPDATE, DELETE, DROP, or ALTER statements.
DOMAIN ARCHITECTURE CONTEXT:
{KNOWLEDGE_CONTEXT}
"""
Спосаб пры змене віткоў: Vertex AI Context Caching
Для этапы The Cost Game-Changer Vertex неабходна прадзефінавацыя вхідных дадзеных, адпаведальнага за кожны крок і крэтарыя выходу пры змены коду. Аператары должны магчымае перзапусканне кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій этапы як даговору межа вхідных дадзеных і перакананых выходных рэзультатаў. Дайце назвы артыфактам, прадзефінавацыя крэтароў успеху і адмовіцеся ад тыхнай частковай завершэння без паведамлення. Заставіце людзкую апраўдку для тых крокаў, якія вітрачаюць грошы або зменяюць даныя ў працэсе. Компіляцыйны момент не ўзроўнаваны з абсалютным завершэнням задачы.
# c360_agent/agent.py
from google.adk.agents.llm_agent import Agent
from google.adk.apps import App
from google.adk.agents.context_cache_config import ContextCacheConfig
from .config import SYSTEM_PROMPT
from .tools import (
execute_bq_query,
dry_run_bq_query,
get_table_schema,
list_dataset_tables,
get_table_preview
)
# 1. Initialize the Google ADK Agent
root_agent = Agent(
name="c360_data_analyst",
model="projects/enterprise-c360-prod/locations/us-central1/publishers/google/models/gemini-2.5-flash",
description="Autonomous BigQuery Data Analyst for the Enterprise Customer 360 Lakehouse.",
instruction=SYSTEM_PROMPT,
tools=[
dry_run_bq_query,
execute_bq_query,
get_table_schema,
list_dataset_tables,
get_table_preview
]
)
# 2. Wrap in App with Vertex AI Context Caching
app = App(
name="c360_agent_app",
root_agent=root_agent,
context_cache_config=ContextCacheConfig(
ttl_seconds=1800, # Cache prompt for 30 minutes
cache_intervals=10 # Reuse across up to 10 conversational turns
)
)
4. Вось другі сталакамень інжынерыі: Безпечная, контролюемая за віткамі експансія інструментаў
Для 4-го этапа «Сталагміту інжынерыі 2» неабяжна практычна ваказка інпутаў, адпаведальнага за выкананне крока і крэатарыяў завершэння працы перад змінайом коду. Аператары должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Запісваць трываласць выканання і кост токенаў або запытаў праза функцыйнае рэзультат. Відкрытыя даныя пра косцы з’являюцца рана, таму утрымліваецца можлівасць неспакою з боку расчыткаў, калі працэс пераходзіць з дамовай асяроддзя ў спадзеланую. Автэнтыфікацыя выканана ў воратах сістэмы, а практычная автарызацыя — у роўні дадзеных. Толькі токен-носіцель не ёсць межай адпаведнага тэнантства.
# c360_agent/tools.py
import subprocess
import re
def dry_run_bq_query(query: str) -> str:
"""Dry-runs a BigQuery SQL query to validate syntax and estimate bytes scanned."""
clean_query = query.strip().upper()
# Layer 1: Strict Read-Only Guard
if not (clean_query.startswith("SELECT") or clean_query.startswith("WITH")):
return "SECURITY ERROR: Only SELECT queries are permitted. DDL/DML is strictly forbidden."
try:
# Executes 'bq query --dry_run' to inspect execution planner without billing slots
result = subprocess.run(
["bq", "query", "--use_legacy_sql=false", "--dry_run", query],
capture_output=True,
text=True,
check=True
)
# bq CLI outputs estimated bytes scanned to stderr on dry run
dry_run_output = result.stderr if result.stderr else result.stdout
return f"DRY_RUN SUCCESS: {dry_run_output.strip()}"
except subprocess.CalledProcessError as e:
return f"DRY_RUN SYNTAX ERROR: {e.stderr.strip()}"
def execute_bq_query(query: str) -> str:
"""Executes a validated BigQuery SQL query and returns the formatted tabular results."""
clean_query = query.strip().upper()
if not (clean_query.startswith("SELECT") or clean_query.startswith("WITH")):
return "SECURITY ERROR: Only SELECT queries are permitted."
try:
result = subprocess.run(
["bq", "query", "--use_legacy_sql=false", "--format=pretty", "--max_rows=50", query],
capture_output=True,
text=True,
check=True
)
return result.stdout
except subprocess.CalledProcessError as e:
return f"EXECUTION ERROR: {e.stderr.strip()}"
5. Сталагміт інжынерыі 3: Аўтонамны цыкл самакорэкціі
Для 5-го этапа Engineering Pillar 3 неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных даных і флагі функцый павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь ланцуг. Прызначайце людскія апраўленні для рэлей, якія вітрачаюць грошы або зменяюць даны у працэйнай сістэме. Падключэння ў час компіляцыі не ёсць прамаравамым паказатэлем полнайасобнасці бізнес-процэсу. Для 5-го этапа Engineering Pillar 3 неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валічыце маленькія, тэставальныя елементы пра велікія скрыпты. Калі крок не выйшоў, прычына нехарактэрнага рэзультата павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцуг задач.
Неяк.
Рэальны трагектар вырабатчыка: самаўздоровяючы цыкл у дзейнасці
Кал працуеце над рэальным трагектарыем вырабатчыка, спачатку запісайце кантракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разы ў частковай нявыполненасці. Такі спіс пераканае ў тым, што пазнейшыя змены коду буду чыстымі. Спрыймайце гэты этап як кантракт між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце перакананні успеху і адмовіцеся ад тыхоўкага частковага завершэння. Стварайце контрольныя пункты пасля дорогіх крокаў. Програма для продакцыі не павінна знову сцягваць плата за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
Запіт бізнес-выкарбувальніка
Калі працюеце над этапам «Бізнес-выкарыстоўнач», спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўкаў дапамагае заліцвачыць змяны ў кодзе адкрыта і чэсна. Запісвайце час выканання і кост токена або запыту праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зробіце пераконтроўку пасля дорогіх крокаў. Сістэма адновлення не должна зноў нарахоўваць косты за той самы вызов LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
Крок 1: Пачатковая спроба і адхіленне кампайлера
Калі працуеце на стадыі Першай спробы крок 1, спачатку запісаце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Храніце настройкі парадульна коду прыемлі. Файлы сераўнавання, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Ставяце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення до працы не должна занова ставіць плату за той самы вызов LLM, калі аператар перазначае празбіг на пазнейшы вузел. Калі працуеце на стадыі Першай спробы крок 1, спачатку запісаце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы працы над вялікімі скрыптамі. Калі крок не выйшаў, прычына неудачы должна вказываць на адну адпаведальнасць, а не на заплутаны ланцужок задач.
-- Attempt 1: Generated by Agent (Pre-Flight Dry Run)
SELECT
SUM(c.total_spent) AS total_vip_revenue
FROM `enterprise-c360-prod.c360_curated_shopify.dim_customer` c
JOIN `enterprise-c360-prod.c360_curated_shopify.CustomerWarranties` w
ON c.customer_id = w.customer_id;
Шаг 2: Автонамная дыягноза і самакорэкцыя
Этап автонамнай дыягнозы ў Шагу 2 работае наўзям лепей, калі яго спрыяваць як вімерную плошчу. Зафіксавайце адны ідэальны прымер, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб. Спрыяйце гэтам этапу як кантракту межа вхіднымі данымі і паверыжанымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і адмовіцеся ад тыхняй частковай працы без паведамлення. Храніце стан графа ў простым і тыпаванам фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў кожны поле, і спакоююць продовжэнне працы пасля перарываў.
SELECT SUM(c.total_spent) AS total_vip_revenue
FROM `enterprise-c360-prod.c360_curated_shopify.dim_customer` c
JOIN `enterprise-c360-prod.c360_curated_shopify.CustomerWarranties` w
- ON c.customer_id = w.customer_id;
+ ON c.UnifiedCustomerDimId = w.UnifiedCustomerDimId;
Шаг 3: Перакананне ў вартасці перад запускам
Этап «Косты падчырвання перад запускам» у 3-му кроцы працюе найэфектывнейша, калі яго расследжваць як вімерную плошчу. Запісайце адны ідэальны прыклад працы, адзін прыклад неудачы і прыметку па поверненню да пачатковага стану пры розшырэнні масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультаты. Відкрытыя даныя пра косты з самага пачатку запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўеры. Храніце стан графа ў простам і тыпаваным фармаце. Вярнутыя структуры даных маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшваюць продажчыку працу пасля перарываў.
4-й крок: Обмежанае выконанне і сінтэза выкарыстоўвання
Этап адміністрування з межавым выконанням у кроку 4 працюе найэфектывней, калі яго розглядаць як меравальную плошчу. Зберагучы адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра відкат, спачатку расшыруйце сферу дзейснення. Зберагачы настройкі парадульна ў зовнішняй часты коду прыкладнага програмы. Файлы серавэра, хранільнікі секрэтных даных і флагі функцый павінны знаходзіцца ў адном месцы, куды аператары можаць аўдытаваць, не чытаючы весь граф. Зберагачы стан графа у простам і тыпаванам фармаце. Вкладныя блокі маскуюць інфармацыю пра тое, які вузел запісаў які поле, і спакоююць продовжэнне выканання пасля перэрываў. Этап адміністрування з межавым выконанням у кроку 4 працюе найэфектывней, калі яго розглядаць як меравальную плошчу. Зберагучы адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра відкат, спачатку расшыруйце сферу дзейснення. Валідзіце малыя, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач.
6. З тэрміналу CLI да інтэрактыўнага веб-інтэрфейсу
Для этапы 6 «З тэрміналу праз CLI» неабяжна прадзеява інпутаў, адначальніка крока і крэатарыяў выходу пры перадзеяванні коду. Аператары должны магчымае перадзеяваць крок з вядомай точкі контролю, не падозрываючы схованы статус. Спрыяйце гэтай этапы як кантракту межа інпутамі і падтвердзенымі выходамі. Даўце назвы артыфактам, прадзеяваць перагляды успеху і адмовіцеся ад тых падчасных завершэнняў, якія не зафіксаваны. Заставьце людзкую апраўду ў тых моментах, калі выкананы вітраты або змененыя ў продакшн-даных. Компіляцыйныя налашчэння не ўзроўнаўцуюцца з абсягам выкананняя бізнес-задач.
Рэжым 1: Тэрмінал праз CLI для інжынераў дадзеных і CI/CD
Для этапы CLI-тэрмінала рэжыма 1 неабяжна прадзефінаваць вхідныя даны, адміністратара крока і крэтыяры выходу пры перадзеўці коду. Аператары должны магчымае запускваць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токена або запыту праза функцыйнальных рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспадзяваным рахункам, калі парадок пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Заставіць людзкую апраўдку для тых крокаў, якія вітрачаюць грошы або зменяюць даны ў працоўнай асяроддзі. Працэс складання коду не ўзроўнаваецца з повнасцю бізнес-процэсаў.
python3 c360_agent/agent.py "Show me top 5 customers by SAP delivery volume in 2026"
Рэжым 2: Інтэрактыўная веб-кансоль дыбаггіну (adk web)
Для стадыі Interactive Web у рэжыме 2 неабяцо практычна апранаваць вхідных дадзеных, выявлення адпаведнага адпаведальніка за крок і встановлення крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перапрацоўваць крок з вядомага пункту контролю, не спрабоўваючы з’ясаваць захаваны стан. Конфігурацыю трэба залічваць парад унутранам коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь ланцуг задач. Пры выконанні дзеяння, якія коштуюць грошы або зменяюць даныя ў працэйным рэжыме, неабяцо выкарыстоўваць людскія празгляды. Прыўязкі, створаныя пад час компіляцыі, не ўзначаюць повнайшага адпаведання бізнес-трэбаванням. Для стадыі Interactive Web у рэжыме 2 неабяцо практычна апранаваць вхідных дадзеных, выявлення адпаведнага адпаведальніка за крок і встановлення крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перапрацоўваць крок з вядомага пункту контролю, не спрабоўваючы з’ясаваць захаваны стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выканаўся, прычына нехтаравання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.
Неяк.
adk web --port 8001 c360_agent --reload
Разлік: Спісак перагляду для автонамных агентаў падпрыемства
Кал працуеце над разлікам на стадыўцы автонамных агентаў падпрыемства, спачатку запісайце умовы контракту: неабходныя даны, сігнал успеху і тое, што выходзіць у разы ў частковай невялікай памылцы. Такі спісак дапамагае заставіць пазнейшыя змены коду чыстымі. Спрыймайце гэтую стадыю як контракт межа данымі, якія вводзяцца, і падтверджанымі рэзультатамі. Дайце назвы элементам, задаць правіла перагляду успеху і не падтрымайце тыхнучую частковую завершэння. Зробіце перагляд пасля дорогіх крокаў. Програма не должна зноў ставіць плату за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
Завершанне трылогіі: Сучасная база дадзейнаў падпрыемства
Калі працуеце над этапам «Трылогія завершана», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запіту праза функцыональныя рэзультаты. Відразлівасць коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зробіце контрольную пазнаку пасля дорогіх крокаў. Функцыя вярнення не должна зноў нараховваць кост той самай вызову LLM, калі аператар праканае пазнейшы вузел.
Чэк-ліст для эксплуатацыі
Этап чэк-ліста для эксплуатацыі працюе найкрашча, калі яго спрыяглядаць як мерыемую плошчу. Запісайце адну ідэальную транскрыпцыю, адзін прыклад нявыпання і прыметку па вярненню да пачатковага стану, перш чым расшырваць масштаб. Дакументавайце як «шчаслівы» шлях, так і шлях вярнення. Праканы, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Зберагаеце стан графа ў простам і тыпаваным фармаце. Вкладаныя блокі маскуюць інфармацыю пра тое, які вузел запісаў якое поле, і спакоююць працэз выканання пасля перэрываў.
Калі бюджэт дазволяе, дадзіце тэст на перакананне, які працюе з крытычным шляхам у сістэме CI за дапамогою фіксатываў, а не з рэальнымі платнымі API.
Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, адказгаванне за гэта павінна баціся на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.
Зберагаеце стан графа ў простам і тыпаваным фармаце. Вкладаныя блокі маскуюць інфармацыю пра тое, які вузел запісаў якое поле, і спакоююць працэз выканання пасля перэрываў.