Галоўная / Артыкулы

Практычныя прытамулкі: Тры рэвеню Google Cloud RAG: пошук вектораў, двыжак RAG і агент для выкарыстоўвання дадзеных.

Практычныя прытамулкі: Тры рэвеню Google Cloud RAG: пошук вектораў, двыжак RAG і агент для выкарыстоўвання дадзеных: контракты, перакрыцчы і месца для коду.

Выдавец: REACTAPP.TOP17 хв чытання3958 слоў

Крыніцы: The Three Tiers of Google Cloud RAG: Vector Search, RAG Engine, and Agent Retrieval

Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі «Тры рангі Google Cloud RAG: пошук вектораў, дваржык RAG і агентскі адзыскванне дадзенняў» для працавікаў-оператараў: чыстыя этапы, аранжаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы задання. Адгледжэнне працюе найкрашча, калі яго спрыямаць як мерыябельную паверхню. Запісаўце адна ідэальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму расшырэння масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць крок не выходзіце, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.

Архітэктурныя і абстракцыйныя шары

Для архітэктурных і абстракцыйных слоў неабходна пазначыць вхідныя даны, абоўязкі таго, хто выкаанае крок, а таксама крытэрыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не падозрываючы пра схованы стан. Спрыяйце цэму этапу як контракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, пазначыце крытэрыя успеху і не прымайце тыхчасова часткова завершаныя рэзультаты. Цітуйце тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без цітатаў аперацыйныя працавнікі не зможу разлічыць галюцынацію ад працягу індэксавання.

1. Vertex AI Vector Search (Рэвень 1: Інфраструктура высокай працэздатнасі)

Для 1. Vertex AI Vector Search (Рэгламент 1: Інфраструктура з высокай якосцю) неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крытэрыя завершэння перад змінайом коду. Аперацыяныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Неабяжна фіксаваць час выкарыстоўвання і кост токенав або запытаў разам з функцыйнаімі рэзультатамі. Відразлівае прадставленне костоў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спадзеленыя сераўысы. Неабяжна цітаваць тые часткі тэксту, якія фактычна сталі падставай для адпаведнага адказу. Без цітатаў аперацыяныя працавнікі не можуць адразліваць галюцынацыі ад прасоў у індэксаванні.

Асновная архітэктура і механізмы

Для адміністрацыі основной архітэктуры і механізмаў неабходна прадзефінаваць вхідныя даны, адпаведальную особу за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здогадвацца пра схованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыкладнення. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый належыць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Паказваць трэба тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цытатаў аператары не можаць розразліці галюцынацію ад прычыны, вызванай недастаткам індэксацыі. Для адміністрацыі основной архітэктуры і механізмаў неабходна прадзефінаваць вхідныя даны, адпаведальную особу за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Валідзіць крашчэ маленькія, тэставаныя елементы, чым велікія скрыпты. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.

е.

Трыяступенчатая схема адгукування ScaNN

Працюючы з трыяступенчатай схемаю адгукування ScaNN, спачатку запішыце умовы дагавання: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контролю дапамагае заліцьваты змяны ў кодзе. Спрыймайце гэты этап як угоду межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы элементам, задаць крытэрыі успеху і не прыймайце часткова завершэнне без паведамлення. Змяроўваце рывень адгукування на фіксаванай сэтцы запітаў прычым рэгулювання патронав. Частае зменшэнне патронаў рэдка калі вылечвае слабкую сістэму адгукування.

Распадзелена інфраструктура: інновацыі ў дваржыку падбору Vertex

Калі працюеце над «Распраўятыя інфраструктуры: Інновацыі ў дваржэчыку падбору вершын», спачатку запісайце умовы: неабходныя даны, сігнал успеху і тое, што вядзецца пад частым неудачам. Такі спіс дапамагае заліцварыць будучыя змены ў кодзе. Запісвайце час выканання і вартасьць токеноў або запытанняя пры функцыйнаых рэзультаатах. Відразлівасьць вартасей з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайнага рэжыма ў спяльныя сераўеры. Замерьце ступень воскрэсення інформацыі на фіксаванай сэтке запытанняя прычым налаштаваць підказкі. Частая змена підказак рэдка калі вярнуе слабкія рэзультаты пошуку.

Случаі выкарыстоўвання у прымэтных умовах для Google Vector Search

Калі працюеце над прыкладамі выкарыстання для Google Vector Search у працоўнай сэрвісе, спачатку запішыце умовы вярбунка: неабходныя даныя, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі спіс дапамагае заліцварыць пазнейшыя змены ў кодзе. Зберагаюце настройкі паза кодам прыемліка. Файлы сэравіса, хранільнікі секрэтных дадзеных і флагі функцыяй должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжнага чытання всіх элементаў. Перад налагоджэньем запытоў пераканайцеся, як працюе алгорытм на фіксаванай сэтцы запытаў. Частае змены запытоў рэдка калі вярнуе хорашыя рэзультаты. Калі працюеце над прыкладамі выкарыстання для Google Vector Search у працоўнай сэрвісе, спачатку запішыце умовы вярбунка: неабходныя даныя, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі спіс дапамагае заліцварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.

1. Рэальнавычасовая мультымадальная электронная торгавля і пошук у візуальным каталогах

  1. Рэальнавычасовая мультымадальная электронная торгавля і пошук у візуальным каталогах працюе наяўнейша, калі яе розглядаць як меравальную плошчу. Запісаўце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Разглядзіце гэты этап як кантракт межа вхіднымі данымі і паверыранымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Раздзеліце правілы часткавага абрабатвання даных ад правіл яўлення рэзультатаў. Змена адных не павінна прымусваць перапісванне іншых, калі змянююцца паказнікі якосці.

2. Стварэнне мільярда кандыдатаў для сістэм рэкамендацый

  1. Стварэнне кандыдатаў у мільярдным масштабе для сістэм рэкамендацый працуе наяўней, калі яго спрыяваць як вімерную плошчу. Перад расшырэнням масштаба зафіксавайце адны ідэальны прыклад, адзін прыклад неудачы і прыметку па повернэнню да пярвінскага стану. Запісваўце часы выканання і кост токеноў або запытаў разам з функцыйнаямі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі у спяльныя асяроддзя. Раздзеляйце правілы часткавання дадзеных ад правілаў ўзяць іх. Змена аднаго з іх не должна прымусіваць перапісваць другі, калі змянююцыся паказнікі якосці.

3. Кластэруванне фінансавых мошчынняў і кібер-анамалій у рэальны час

  1. Кластэруванне фінансавых мошчанняў у рэальны час і кібер-анамалій працуе наяўней калі яго расследваюць як вімерную паверхню. Зберагачыце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Канфігурацыю трэба заставляць праза межы коду прыкладнага програма. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць без неабходнасці чытання всей структуры.
  2. Кластэруванне фінансавых мошчанняў у рэальны час і кібер-анамалій працуе наяўней калі яго расследваюць як вімерную паверхню. Зберагачыце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаную лінію дзеяння.

Код: стварэнне індэкса, прыемка дадзеных праз стрымінг і запыткі

Для рэжыму «Код: стварэнне індэкса, прыемка дадзеных праз стрымінг і запыткі» неабяжна ўзначыць вхідныя даныя, адпаведальную особу за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомай точкі контролю без неабяжнага адгадвання схованых станоў. Спрыяйце цэму этапу як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, узначыць пераканальныя крытэрыі і адмовіцеся ад беззвучнага частковага завершэння. Цітуйце тыя часткі, якія фактычна лежалі в основе адпаведнай адказы. Без цітатаў аператары не зможаць разлічыць галюцынацію ад прасоў у індэксаванні.

package main

import (
 "context"
 "fmt"
 "log"

 aiplatform "cloud.google.com/go/aiplatform/apiv1"
 aiplatformpb "cloud.google.com/go/aiplatform/apiv1/aiplatformpb"
 "google.golang.org/api/option"
)

func main() {
 ctx := context.Background()
 projectID := "my-enterprise-gcp-project"
 location := "us-central1"

 // 1. Initialize Vertex AI Match Client (Vector Search Query Service)
 matchClient, err := aiplatform.NewMatchClient(ctx)
 if err != nil {
  log.Fatalf("failed to create vertex match client: %v", err)
 }
 defer matchClient.Close()

 indexEndpointPath := fmt.Sprintf(
  "projects/%s/locations/%s/indexEndpoints/product_catalog_endpoint_id",
  projectID, location,
 )
 deployedIndexID := "product_catalog_deployed_v1"

 // 2. Construct 768-dimensional Query Embedding Vector
 queryVector := make([]float32, 768)
 queryVector[0] = 0.032
 queryVector[1] = -0.108
 queryVector[2] = 0.449

 // 3. Build Nearest Neighbor Request with Boolean & Numeric Restricts
 req := &aiplatformpb.FindNeighborsRequest{
  IndexEndpoint:   indexEndpointPath,
  DeployedIndexId: deployedIndexID,
  Queries: []*aiplatformpb.FindNeighborsRequest_Query{
   {
    Datapoint: &aiplatformpb.IndexDatapoint{
     DatapointId:   "query_req_001",
     FeatureVector: queryVector,
     Restricts: []*aiplatformpb.IndexDatapoint_Restriction{
      {
       Namespace: "category",
       AllowList: []string{"electronics", "audio"},
      },
      {
       Namespace: "brand",
       AllowList: []string{"sony", "bose"},
      },
     },
     NumericRestricts: []*aiplatformpb.IndexDatapoint_NumericRestriction{
      {
       Namespace: "price",
       Value: &aiplatformpb.IndexDatapoint_NumericRestriction_ValueFloat{
        ValueFloat: 350.0,
       },
       Op: aiplatformpb.IndexDatapoint_NumericRestriction_LESS_EQUAL,
      },
      {
       Namespace: "in_stock",
       Value: &aiplatformpb.IndexDatapoint_NumericRestriction_ValueInt{
        ValueInt: 1,
       },
       Op: aiplatformpb.IndexDatapoint_NumericRestriction_EQUAL,
      },
     },
    },
    NeighborCount: 5,
   },
  },
  ReturnFullDatapoint: false,
 }

 // 4. Execute Sub-Millisecond Vector Similarity Search
 resp, err := matchClient.FindNeighbors(ctx, req)
 if err != nil {
  log.Fatalf("failed to execute find neighbors: %v", err)
 }

 if len(resp.NearestNeighbors) > 0 {
  fmt.Printf("Retrieved %d nearest neighbors:\n", len(resp.NearestNeighbors[0].Neighbors))
  for _, neighbor := range resp.NearestNeighbors[0].Neighbors {
   fmt.Printf("Datapoint ID: %s | Distance: %.4f\n", neighbor.Datapoint.DatapointId, neighbor.Distance)
  }
 }
}

2. Vertex AI RAG Engine (Рэжым 2: кераваны мідлвэр)

Для версіі 2. Vertex AI RAG Engine (Рэгламент 2: Кераваныя мідлвэр), перад зменым коду неабходна ўзначыць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне крока з вядомага пункта контролю, не прыпускаючы стану, які застаецца незрозумелым. Запісваць трываласць выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відкрытыя даны пра косцы запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Указваць тыя часткі тэксту, якія фактычна сталі падставай для адпаведнага адказу. Без такіх цытатаў аператары не можаюць разлічыць галюцынацію ад прасоўкі ў індэксаванні.

Асновная архітэктура і механізмы

Для адміністрацыі основной архітэктуры і механізмаў неабходна прадзефінаваць вхідныя даны, адпаведальную особу за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здогадвацца пра схованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыкладнення. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый належыць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Паказваць трэба тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цытатаў аператары не можаць розразліці галюцынацію ад прычыны, вызванай недастаткам індэксацыі. Для адміністрацыі основной архітэктуры і механізмаў неабходна прадзефінаваць вхідныя даны, адпаведальную особу за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Валідзіць крашчэ маленькія, тэставаныя елементы, чым велікія скрыпты. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.

е.

Іншая архітэктурная перавага: падэйнавальныя бэкенды баз даных вектараў

Калі працуеце над іншай архітэктурной перавагай – падэйнавальнымі бэкендамі баз даных вектараў, спачатку запісайце умовы: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разы ў частковай нявыполненасці. Такі спіс контролю дапамагае заставіць пазнейшыя змены коду застаўцца чыстымі. Спрыяйце цэй стадзіі як умовам між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаце правіла пераканання успеху і адмовіцеся ад тыхнай частковай выполненасці без паведамлення. Змяркуйце рэкал на фіксаваным наборэ запытанняў прычым рэгулюванні прамптав. Частае змены прамптав рэдка калі вярнуюць слабую эфектыўнасць пошуку.

Чаму такая дэкауплёваная архітэктура ўзмоцнюе сітуацыю

Калі працюеце над матэрыялам «Чаму такая архітэктура з дэкаплюляцыяй ёсць пераможнай», спачатку запішыце умовы вікорыстання: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы частковага нэуспеху. Такі спіс дапамагае заліцьварыцца пад пазнейшыя змены коду. Запісвайце час выканання і вартась токенаў або запытак праза функцыйнае рэзультат. Відразлівась вартасей з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Перад налаштаваннем запрошэнняяў пераканайцеся ў якосці адзыначэння патрэбных даных на фіксаванай сэтке запытаў. Частае змены запрошэнняяў рэдка калі лепшае слабую якосць адзыначэння інформацыі.

Практычны прыклад выкарыстання: Памочнік з палітыкай кадровага аддзелу і санкцыяй прававых норм

Калі працуеце над кейсам выкарыстання ў прымэтнай сферэ: «Памочнік з палітакай кадровага аддзелу і супакоўкай з законамі», спачатку запісаце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі чэк-ліст дапамагае заставаць пазнейшыя змены коду чыстымі. Зберагаеце настройкі праза код прыемлі. Файлы серавэра, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць без неабходнасці чытання всей структуры. Замерайце рэкалі на фіксаваным наборэ запытанняў прычым падлашоўкі запрасаў. Частая змена запрасаў рэдка калі вялікі эфект на слабую сістэму пошуку. Калі працуеце над кейсам выкарыстання ў прымэтнай сферэ: «Памочнік з палітакай кадровага аддзелу і супакоўкой з законамі», спачатку запісаце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі чэк-ліст дапамагае заставаць пазнейшыя змены коду чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок абякае, абяканне должна паказаць на конкрэтны аспект, які трэба выправіць.

можлівасць, а не заплутанай лянцюга працэй.

Код: Генераванне на адмоўленых падставах з Vertex RAG Store

Код: Генераванне на адмоўленых падставах з Vertex RAG Store працюе найэфектывней, калі яго розглядаць як вімерную паверхню. Запісаўце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па аброце перад расшырэнням масштаба. Разглядзіце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад бяспечнага частковага завершэння. Раздзеліце правілы часткавага разбівання дадзенняў ад правіл наявнасці інформацыі. Змена адных не павінна вымагаць перапісву іншых, калі зменяюцца паказнікі якосці.

package main

import (
 "context"
 "fmt"
 "log"

 "google.golang.org/genai"
)

func main() {
 ctx := context.Background()
 projectID := "my-enterprise-gcp-project"
 location := "us-central1"

 // 1. Initialize Google GenAI Client with Vertex AI Backend
 client, err := genai.NewClient(ctx, &genai.ClientConfig{
  Project:  projectID,
  Location: location,
  Backend:  genai.BackendVertexAI,
 })
 if err != nil {
  log.Fatalf("failed to initialize genai client: %v", err)
 }

 // 2. Reference the Managed RAG Corpus Resource
 // (Corpus can be backed by RagManagedDb, Vertex Vector Search, Weaviate, or Pinecone)
 ragCorpusResource := fmt.Sprintf(
  "projects/%s/locations/%s/ragCorpora/enterprise_hr_policies_corpus",
  projectID, location,
 )

 // 3. Configure Grounding Tool with Vertex RAG Store and Semantic Reranking
 config := &genai.GenerateContentConfig{
  Tools: []*genai.Tool{
   {
    Retrieval: &genai.Retrieval{
     VertexRagStore: &genai.VertexRagStore{
      RagResources: []*genai.VertexRagStoreRagResource{
       {RagCorpus: ragCorpusResource},
      },
      SimilarityTopK:          genai.Ptr(int64(3)),
      VectorDistanceThreshold: genai.Ptr(0.5),
     },
    },
   },
  },
 }

 // 4. Generate Grounded Response with Gemini 3.5 Flash
 prompt := "Summarize our international meal reimbursement policy and specify receipt requirements."
 result, err := client.Models.GenerateContent(ctx, "gemini-3.5-flash", genai.Text(prompt), config)
 if err != nil {
  log.Fatalf("failed to generate grounded content: %v", err)
 }

 // 5. Output Synthesized Text and Inspect Verifiable Grounding Supports
 fmt.Println("--- Grounded Answer from Gemini ---")
 fmt.Println(result.Text())

 if len(result.Candidates) > 0 && result.Candidates[0].GroundingMetadata != nil {
  meta := result.Candidates[0].GroundingMetadata
  fmt.Printf("\nGrounding supports detected: %d\n", len(meta.GroundingSupports))
  for _, support := range meta.GroundingSupports {
   if support.Segment != nil {
    fmt.Printf("Segment: %q (Grounded by chunks: %v)\n", support.Segment.Text, support.GroundingChunkIndices)
   }
  }
 }
}

3. Vertex AI Agent Retrieval (Рэвэлюшн 3: Аўтонамнае разумаванне)

  1. Vertex AI Agent Retrieval (Level 3: Аўтаномныя выважэння) працюе наякша, калі яго розглядаць як меравальную плошчу. Запісаўце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па аброшчэнні працы пры расшырэнні масштаба. Запісвайце часы выканання і вартасць токенав або запіта праза функцыональныя рэзултаты. Відразлівасць вартасці з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмавайнтару ў спяльныя сераўры. Задаце бюджэт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмавайнтарам ператварыцца на неспакоўныя рахункі.

Асновная архітэктура і ключовыя характэрыстыкі

«Ядро архітэктуры і ключовыя атрыбуты» працюе найэфектывней, калі яго розглядаюць як параметр, які можна змерыць. Зберагчыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу прыемлівання. Храніце настройкі парадульна ад коду прыемлі. Файлы сэраўнавання сераў, базы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабходнасці чытання всей структуры. Раздзеляйце правілы часткавання дадзеных і правілы ўтрымання іх. Змена адных не должна вымагаць перапісву іншых, калі зменяюцыся паказчыкі якосці. «Ядро архітэктуры і ключовыя атрыбуты» працюе найэфектывней, калі яго розглядаюць як параметр, які можна змерыць. Зберагчыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу прыемлівання. Вядомей выбірайце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаную структуру працы.

Ключовыя атрыбуты механізма пошуку Vertex AI Agent

Для ключовых атрыбутаў функцыі Vertex AI Agent Retrieval неабходна пазначыць вхідныя даны, адпаведальнага за выкананне крока і крытэрыя завершэння пры зміне коду. Аператары должны магчыма было перзапускаць крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Спрыяйце таму, каб гэты этап быў розумеваны як даговор межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, пазначыць крытэрыя успеху і не прымайце часткова завершаныя рэзультаты без паведамлення. Указывайце тыя часткі тэксту, якія фактычна лежалі в основе адпаведнай адказы. Без такіх цытатаў аператары не зможуць розлічыць галюцынацію ад працягу індэксавання.

Кейс прыменення ў працэўнай асяроддзі: Автонамны агент для рашэння інцыдэтаў у SRE DevOps

Для сцэны выкарыстоўвання ў працэсе вырабаткі: Аўтонамны агент для рашэння інцыдэтаў у рамках практык SRE і DevOps. Перад змянай коду неабходна візначыць даны, якія будуць вводзіцца, адпаведальную особу за кожны крок і крытэрыя завершэння. Аператары должны магчыма было перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Неабходна фіксаваць час выкарыстоўвання, а таксу токенаў чы запытам нароўна з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі сістэма пераходзіць з дэмаверсіі ў спяльныя сераўы. Неабходна цітаваць тыя часткі тэксту, якія фактычна лежаць у падставе адпаведнай адказу. Без цітатаў аператары не можаць розразліць галюцынацію ад прычын, зв’язаных з недастаткам індэксацыі.

Код: Стварэнне аўтонамнага агента з Google ADK

Для коду: стварэнне автонамнага агента з Google ADK, перш чым зменіць код, неабяжна візначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцый належаць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Прыкладзіце часткі тэксту, якія фактычна ляглі в основу адпаведнай адказы. Без цых цітатаў аператары не можаць розразліць галюцынацію ад прычыны, зв’язанай з недастаткам індэксавання. Для коду: стварэнне автонамнага агента з Google ADK, перш чым зменіць код, неабяжна візначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна вказываць на адзін конкрэтны спосаб рашэння.

возможнае выкарыстоўванне, а не заплутаны тракт.

package main

import (
 "context"
 "fmt"
 "log"

 "google.golang.org/adk/agent"
 "google.golang.org/adk/model"
 "google.golang.org/adk/runner"
 "google.golang.org/adk/tool"
 "google.golang.org/adk/tool/vertexsearch"
)

// TelemetryQueryParams defines input arguments for the structured telemetry tool.
type TelemetryQueryParams struct {
 ServiceName       string `json:"service_name" jsonschema:"description=The target microservice name (e.g. payment-gateway)"`
 TimeWindowMinutes int    `json:"time_window_minutes" jsonschema:"description=The lookback window in minutes"`
}

// TelemetryReport defines the structured metrics returned to the agent.
type TelemetryReport struct {
 Service          string  `json:"service"`
 TimeWindow       string  `json:"time_window"`
 ErrorRate        float64 `json:"error_rate_percentage"`
 DominantStatus   string  `json:"dominant_http_status"`
 RootDependency   string  `json:"root_downstream_dependency"`
 ActiveRestarts   int     `json:"active_pod_restarts"`
 Region           string  `json:"region"`
}

// QuerySystemTelemetry is a custom tool function registered with the ADK agent.
func QuerySystemTelemetry(ctx context.Context, params TelemetryQueryParams) (TelemetryReport, error) {
 // Simulated query against Cloud Spanner and BigQuery live telemetry
 return TelemetryReport{
  Service:        params.ServiceName,
  TimeWindow:     fmt.Sprintf("%dm", params.TimeWindowMinutes),
  ErrorRate:      14.8,
  DominantStatus: "504 Gateway Timeout",
  RootDependency: "auth-token-validator-v2",
  ActiveRestarts: 12,
  Region:         "us-central1",
 }, nil
}

func main() {
 ctx := context.Background()
 projectID := "my-enterprise-gcp-project"

 // 1. Create Structured Telemetry Function Tool using Google ADK
 telemetryTool, err := tool.NewFunction(
  "query_system_telemetry",
  "Queries Cloud Spanner and BigQuery for live microservice error rates and container health.",
  QuerySystemTelemetry,
 )
 if err != nil {
  log.Fatalf("failed to create telemetry tool: %v", err)
 }

 // 2. Configure Vertex AI Search Datastore Retrieval Tool in Google ADK
 datastoreResource := fmt.Sprintf(
  "projects/%s/locations/global/collections/default_collection/dataStores/sre-runbooks-datastore",
  projectID,
 )
 runbookTool, err := vertexsearch.NewDatastoreTool(vertexsearch.DatastoreConfig{
  Name:        "sre_runbook_search",
  Description: "Searches authoritative SRE incident runbooks, architecture specs, and standard operating procedures (SOPs).",
  DatastoreID: datastoreResource,
 })
 if err != nil {
  log.Fatalf("failed to create vertex search tool: %v", err)
 }

 // 3. Define Autonomous SRE Agent using Google ADK
 systemInstruction := `You are an expert Autonomous Site Reliability Engineering (SRE) Incident Agent.
When investigating production alerts:
1. Use query_system_telemetry to inspect live metrics and isolate the failing component.
2. Formulate a targeted search query with sre_runbook_search to find the exact recovery SOP.
3. Synthesize a comprehensive Incident Diagnosis Report containing:
   - Root cause analysis with telemetry evidence
   - Step-by-step remediation commands cited directly from the runbook
   - Actionable rollback or mitigation steps.`

 sreIncidentAgent, err := agent.New(agent.Config{
  Name:        "sre_incident_investigator",
  Model:       model.Gemini("gemini-3.5-flash"),
  Description: "Autonomous SRE agent that investigates telemetry, retrieves runbooks, and drafts mitigation plans.",
  Instruction: systemInstruction,
  Tools:       []tool.Tool{telemetryTool, runbookTool},
 })
 if err != nil {
  log.Fatalf("failed to initialize ADK agent: %v", err)
 }

 // 4. Execute Multi-Turn Autonomous Workflow with Google ADK Runner
 r := runner.NewInMemoryRunner(sreIncidentAgent)

 userIncidentPrompt := "CRITICAL ALERT: Payment service checkout latency spiked to 4500ms in us-central1. " +
  "Investigate the payment-gateway service, locate the relevant runbook, and recommend immediate remediation."

 response, err := r.Run(ctx, userIncidentPrompt)
 if err != nil {
  log.Fatalf("agent execution failed: %v", err)
 }

 fmt.Println("--- Agentic Incident Resolution Plan ---")
 fmt.Println(response.Text())
}

4. Кантэкст работы: Выбір правільнага сервісу Google RAG

Калі працюеце над раздзелам 4. Кантэкст работы: Выбір правільнага сервісу Google RAG, спачатку запішыце умовы кантракту: неабяжныя даныя, сігнал успеху і тое, што вядзецца пад частым няудачам. Такі спіс дапамагае заліцваты змяны ў кодзе. Спрэчывайце гэты этап як кантракт межу вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы элементам, задаць крытэрыя успеху і не падтрымайце тыхі частыя завершэння. Замерьце рывень адтворэння на фіксаванай сэтке запытаў прычым рэгулюванні прамптав. Частае змяненне прамптав рэдка калі-небудзь выправляе слабую сістэму пошуку інформацыі.

Матрыца паўтарэння

Калі працуеце з матрыцай парабянаў, спачатку запісуйце умовы контракту: неабходныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі спіс контроля дапамагае заставаць пазнейшыя змены коду чыстымі. Запісвайце час выканання і кост токенаў або запытаў пад функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмавайнага рэжыма ў спяльныя асяроддзя. Замерайце рэткі адзыв на фіксаваныя наборы запытаў прычым рэгулюванні прамптав. Частае змена прамптав рэдка калі-небудзь выправляе слабую эфектыўнасць адзыву.

5. Аптаварыс і архітэктурныя выводы

Калі працюеце над раздзелам 5. Апутнік і архітэктурныя выводы, спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя аберанціі. Такі спіс контроля дапамагае залічваць пазнейшыя змены коду чыста і прозрачна. Храніце настройкі за межамі коду прыемлі. Файлы сераўіса, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Перад налаштаваннем запітоў пераканайцеся, што сістэма правільна адпавядае на фіксованы набор запітанняў. Рэдкаколі змены запітоў можаць выправіць слабкую эфектывнасць адзысквання дакументаў. Калі працюеце над раздзелам 5. Апутнік і архітэктурныя выводы, спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя аберанціі. Такі спіс контроля дапамагае залічваць пазнейшыя змены коду чыста і прозрачна. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, аберанцыя должна паказваць на конкрэтную адпаведальнасць, а не на заплутаную структуру працы.

Чарт контроля эксплуатацыі

Калі працуеце з чэклістам гэтыя дзейнасці, спачатку запішыце умовы контракту: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы частковага абярэння. Такі чэкліст дапамагае заставіць пазнейшыя змены коду быць чыстымі.

Документавайце як шлях успеху, так і шлях вярнення ў нормальны стан. Практыкі перапрыбутку, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.

Перад налаштаваннем запітоў змерыце рэзультаты на фіксаванай сэтке запітаў. Змены запітоў рэдка калі выправляюць слабыя аспекты адзысквання інформацыі.

Зберагайце стан графа ў простам і тыпаваным фармаце. Вярнутыя структуры даных маскуюць інфармацыю пра тое, які вузел запісаў кожны поле, і спакшваюць продовжэнне працы пасля перарываў.

Оценяйце адпаведзі на адну запытанне і мнагаэтапныя траекторыі адпаведзення окрэма. Агрэгатаванне балоў чата маскуюць абярэння ў рамках ціклу інструментаў.

Напісце кароткі посібнік: як роцыраваць канты, як спрабаваць очысці чэргу, як анулюваць пасляпэўныя дзеянні.

Перш чым запускаць даныя стэка, заморозьце версіі, зафіксавце «золаты» транскрыпты для крытычных ліній і паказваце крокі для вярнення да пачатковага стану. У спільных серавысках неабходны ліміты швайна, пераконтроль кожнага корыстувальця і чысткі власнік для змены секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя експерыментальныя дэманстрацыі.

Прыметка для 331adf7ac401: не кладзіце ключы прадастчыка ў рэпазітарый, задаце ліміт токену на кожную сесію і зберагачыце транскрыпты разам з фіксатрамі для ацэнкі, каб пазнейшыя замены мадэляў заставаліся порównанневымі.