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

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

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

3958 слоў

Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі «Тры рангі 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анневымі.