Change
5196631
5196631e703a582b64b771b329bd259a7cae9640 · commit on GitHub
gcloud-blog-feed: changed (553850 bytes, HTTP 200)
raw/gcloud-blog-feed/response.xml modified
- Source
- gcloud-blog-feed
- Lines added
- +168
- Lines removed
- -100
- Stored bytes at this commit
- 553,850
- Timestamp
- observed
- Raw artifact at this commit
- raw/gcloud-blog-feed/response.xml
Recorded headers
| observed_at | 2026-09-22T04:57:19.398Z |
|---|---|
| origin_date | null |
| status | 200 |
| final URL | https://cloudblog.withgoogle.com/products/ai-machine-learning/rss/ |
| etag | null |
| last-modified | null |
| date | Tue, 22 Sep 2026 04:57:19 GMT |
| age | null |
| cache-control | public, max-age=600, s-maxage=600 |
| cf-cache-status | null |
| content-encoding | gzip |
| content-length | 143436 |
@
@@ -163,7 +163,7 @@<p><span style="vertical-align: baseline;">Orange's numbers came out of the community work. Building that foundation is the part worth copying first. When you're ready to extend it, </span><a href="https://cloud.google.com/consulting" rel="noopener" target="_blank"><span s…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Get vital board insights with Google Cloud&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf7176850&gt;), (&#x27;btn_text&#x27;, &#x27;Visit the hub&#x27…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Get vital board insights with Google Cloud&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff250523b50&gt;), (&#x27;btn_text&#x27;, &#x27;Visit the hub&#x27…</dl></div><div class="block-paragraph"><h3 data-block-key="hswvv"><b>‘Spellcheck for cybersecurity’ and beyond: How Google monitors AI threats and advances AI defenses</b></h3><p data-block-key="61crd"><i>By Sandra Joyce, VP, Google Threat Intelligence</i></p…<div class="block-paragraph_with_image"><div class="article-module h-c-page">@
@@ -366,12 +366,12 @@<p><span style="vertical-align: baseline;">To learn more about our approach to securing the AI era, please check out our new </span><a href="https://cloud.google.com/security/resources/ai-risk-and-resilience-2026"><span style="text-decoration: underline; vertical-align: ba…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Learn something new&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf7472290&gt;), (&#x27;btn_text&#x27;, &#x27;Watch now&#x27;), (&#x27;href&#x2…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Learn something new&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff250952790&gt;), (&#x27;btn_text&#x27;, &#x27;Watch now&#x27;), (&#x27;href&#x2…</dl></div><div class="block-paragraph"><h3 data-block-key="4bd61"><b>In case you missed it</b></h3><p data-block-key="cvt34">Here are the latest updates, products, services, and resources from our security teams so far this month:</p><ul><li data-block-key="7…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Join the Google Cloud CISO Community&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf7470790&gt;), (&#x27;btn_text&#x27;, &#x27;Learn more&#x27;), (&…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Join the Google Cloud CISO Community&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff2509530d0&gt;), (&#x27;btn_text&#x27;, &#x27;Learn more&#x27;), (&…</dl></div><div class="block-paragraph"><h3 data-block-key="29tyz"><b>Threat Intelligence news</b></h3><ul><li data-block-key="2prfo"><b>AI Threat Tracker: From prompting to autonomy</b>: In the newest Google Threat Intelligence Group (GTIG) report on the a…<div class="block-paragraph"><h3 data-block-key="rcfc5"><b>Now hear this: Podcasts from Google Cloud</b></h3><ul><li data-block-key="d67qn"><b>Cloud Security Podcast: Patching browsers with AI, agents, Rust, and your tabs</b>: Jasika Bawa and Dou…@
@@ -468,82 +468,7 @@<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"><p role="presentation"><strong style="vertical-align: baseline;">Explore Gemini Enterprise: </strong><span style="vertical-align: baseline;">Discover how your organization can deploy governed, connected agents across every team at</span><a href="https://cloud.google.…</li>-
</ul></div></description><pubDate>Wed, 09 Sep 2026 18:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/google-is-a-leader-in-2026-gartner-magic-quadrant-for-enterprise-ai-assistants/</guid><category>AI & Machine Learning</category><og xmlns:og="ht…-
<p><span style="vertical-align: baseline;">During the IPL 2026 season, Airtel partnered with Google Cloud to manage this digital delivery. Across 74 matches, the streaming infrastructure delivered several hundred petabytes of egress data. The final match alone processed tens of billions …-
<p><span style="vertical-align: baseline;">Delivering video under these concurrency spikes requires an edge architecture designed strictly around localization, paired with proactive operational monitoring. </span></p>-
<p><span style="vertical-align: baseline;">Our goal for IPL 2026 was to deliver an uninterrupted, stadium-grade viewing experience to cricket fans across India, regardless of concurrency surges or network conditions. Partnering with Google Cloud and using Media CDN gave us deep local edg…-
<h3><strong style="vertical-align: baseline;">Architecting for concurrency and edge efficiency</strong></h3></div>-
<div class="block-image_full_width">-
-
-
-
-
-
-
-
<div class="article-module h-c-page">-
<div class="h-c-grid">-
-
-
<figure class="article-image--large-
-
-
h-c-grid__col-
h-c-grid__col--6 h-c-grid__col--offset-3-
-
-
"-
>-
-
-
-
-
<img-
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IPL-BLog-Architecture.max-1000x1000.png"-
-
alt="IPL-BLog-Architecture">-
-
</a>-
-
</figure>-
-
-
</div>-
</div>-
-
-
-
-
-
</div>-
<div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">One of the primary challenges in live sports broadcasting is seamlessly handling large traffic spikes and never degrading stream performance or overwhelming backend origins. That’s especially important…-
<p><span style="vertical-align: baseline;">To accelerate content delivery across India’s diverse ISP landscape, Airtel leveraged Google Cloud’s </span><a href="https://docs.cloud.google.com/media-cdn/docs/overview"><span style="text-decoration: underline; vertical-align: b…-
<p><span style="vertical-align: baseline;">This efficient architecture minimized network hops and reduced transit congestion, translating into remarkable infrastructure and viewer experience metrics throughout the 74 matches:</span></p>-
<ul>-
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">-
<p role="presentation"><strong style="vertical-align: baseline;">Superior caching efficiency:</strong><span style="vertical-align: baseline;"> Airtel saw an overall cache hit ratio exceeding 98%. By effectively absorbing massive viewer traffic load at the edge, origin server/…-
</li>-
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">-
<p role="presentation"><strong style="vertical-align: baseline;">Consistent ultra-low latency:</strong><span style="vertical-align: baseline;"> Airtel maintained a p99 latency of &lt; 300 ms during the tournament, which supported fast stream start times and minimized buff…-
</li>-
</ul>-
<h3><span style="vertical-align: baseline;">Proactive strategies for operational readiness</span></h3>-
<p><span style="vertical-align: baseline;">While maintaining an intelligent backend architecture was vital to Airtel’s IPL streaming strategy, it was only half the equation. Executing high-stakes live broadcasts across 74 consecutive matches also demanded meticulous operational preparat…-
<p><span style="vertical-align: baseline;">Because Airtel and Google Cloud recognized that potential bottlenecks had to be identified long before the first ball, they established a deeply integrated operational support model:</span></p>-
<ol>-
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">-
<p role="presentation"><strong style="vertical-align: baseline;">Pre-tournament support readiness reviews:</strong><span style="vertical-align: baseline;"> Well ahead of the opening match, joint engineering teams conducted comprehensive support readiness reviews. By auditing …-
</li>-
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">-
<p role="presentation"><a href="https://cloud.google.com/monitoring"><strong style="text-decoration: underline; vertical-align: baseline;">Monitoring as a service</strong></a><strong style="vertical-align: baseline;"> (MaaS):</strong><span style="vertical…-
</li>-
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">-
<p role="presentation"><strong style="vertical-align: baseline;">Dedicated match-day and weekend support:</strong><span style="vertical-align: baseline;"> Live sports don't play by the rules of standard business hours, so Airtel established comprehensive monitoring protocols…-
</li>-
</ol>-
<h3><strong style="vertical-align: baseline;">A blueprint for live broadcast excellence</strong></h3>-
<p><span style="vertical-align: baseline;">Airtel’s successful streaming of IPL 2026 demonstrates that handling extreme concurrency is only possible with an integrated strategy across architecture, edge localization, and operational governance. By combining a 98%+ cache hit ratio with 99…-
<p><span style="vertical-align: baseline;">This deployment provides an overview of the technical architecture and operational strategies involved in scaling live media delivery for high-concurrency events. To learn more about optimizing live broadcasts and edge delivery, review the </…+
</ul></div></description><pubDate>Wed, 09 Sep 2026 18:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/google-is-a-leader-in-2026-gartner-magic-quadrant-for-enterprise-ai-assistants/</guid><category>AI & Machine Learning</category><og xmlns:og="ht…<p><span><span style="vertical-align: baseline;">Buffmee is an interactive AI service built on the concept of 'AI that helps you grow.' By grounding responses in over 100 sources — including books, magazines, and web media — it helps users search for information, summarize key poin…<p><span style="vertical-align: baseline;">As part of their app launch, the engineer team needed to ground a massive variety of proprietary content, including books and magazines. However, they struggled with latency issues that prevented them from meeting their target response times, an…<div class="block-image_full_width">@
@@ -752,7 +677,7 @@<p><span style="vertical-align: baseline;">Instead of embedding raw Spanner table names and column assignments directly inside core DAO business logic, we isolate Spanner schema translation into dedicated converter units:</span></p></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;// Example of the standardized pattern generated by our pipeline\r\n\r\ntype BpcTransferAmountsMutationConverter interface {\r\n ToInsertMutation(entity *model.BpcTransferAmount) (*spanner.Mutation, error)\r\n …+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;// Example of the standardized pattern generated by our pipeline\r\n\r\ntype BpcTransferAmountsMutationConverter interface {\r\n ToInsertMutation(entity *model.BpcTransferAmount) (*spanner.Mutation, error)\r\n …</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">By establishing a rigid, deterministic contract between the DAO and the Spanner SDK (</span><span style="vertical-align: baseline;">spanner.Mutation</span><span style="vertical-ali…<h3><span style="vertical-align: baseline;">Why use Antigravity</span><span style="vertical-align: baseline;"> </span><span style="vertical-align: baseline;">CLI in headless mode?</span></h3>@
@@ -817,7 +742,7 @@</ul></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;git clone https://github.com/google/mantis.git&#x27;), (&#x27;language&#x27;, &#x27;&#x27;), (&#x27;caption&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf7437250&gt;)])]&a…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;git clone https://github.com/google/mantis.git&#x27;), (&#x27;language&#x27;, &#x27;&#x27;), (&#x27;caption&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff250235450&gt;)])]&a…</dl></div><div class="block-paragraph_advanced"><ul><li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">@
@@ -877,7 +802,7 @@<p><span style="vertical-align: baseline;">Stay tuned for monthly updates on Google Cloud’s AI announcements, news, and best practices. For a deeper dive into the latest from Google Cloud customers, read our monthly recap, </span><a href="https://cloud.google.com/blog/topics/cus…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;$300 in free credit to try Google Cloud AI and ML&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf70634d0&gt;), (&#x27;btn_text&#x27;, &#x27;Start building …+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;$300 in free credit to try Google Cloud AI and ML&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff25104b690&gt;), (&#x27;btn_text&#x27;, &#x27;Start building …</dl></div><div class="block-paragraph_advanced"><hr/><h2 style="text-align: center;"><span style="vertical-align: baseline;">July</span></h2>@
@@ -2420,7 +2345,7 @@<p><span style="vertical-align: baseline;"><a href="https://cloud.google.com/ai/financial-services"><span style="text-decoration: underline; vertical-align: baseline;">Gemini Enterprise for Financial Services</span></a><span style="vertical-align: baseline;">…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Get vital board insights with Google Cloud&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf6e7a350&gt;), (&#x27;btn_text&#x27;, &#x27;Visit the hub&#x27…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Get vital board insights with Google Cloud&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff24bc6b3d0&gt;), (&#x27;btn_text&#x27;, &#x27;Visit the hub&#x27…</dl></div><div class="block-paragraph"><h3 data-block-key="hswvv"><b>How to stay strong with security fundamentals in the AI era</b></h3><p data-block-key="eoh1k"><i>By Chris Betz, CISO, Google Cloud</i></p></div><div class="block-paragraph_with_image"><div class="article-module h-c-page">@
@@ -2501,12 +2426,12 @@<p><span style="vertical-align: baseline;">To learn more about building and maintaining strong security foundations in the AI era, read our newest </span><a href="https://cloud.google.com/security/resources/cyber-snapshot-reports"><span style="text-decoration: underline; v…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Learn something new&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf6f2a450&gt;), (&#x27;btn_text&#x27;, &#x27;Watch now&#x27;), (&#x27;href&#x2…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Learn something new&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff250c98ed0&gt;), (&#x27;btn_text&#x27;, &#x27;Watch now&#x27;), (&#x27;href&#x2…</dl></div><div class="block-paragraph"><h3 data-block-key="4bd61"><b>In case you missed it</b></h3><p data-block-key="5tvtn">Here are the latest updates, products, services, and resources from our security teams so far this month:</p><ul><li data-block-key="4…<div class="block-aside"><dl> <dt>aside_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Join the Google Cloud CISO Community&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7f3cf6db5f90&gt;), (&#x27;btn_text&#x27;, &#x27;Learn more&#x27;), (&…+
<dd>&lt;ListValue: [StructValue([(&#x27;title&#x27;, &#x27;Join the Google Cloud CISO Community&#x27;), (&#x27;body&#x27;, &lt;wagtail.rich_text.RichText object at 0x7ff24ba9a590&gt;), (&#x27;btn_text&#x27;, &#x27;Learn more&#x27;), (&…</dl></div><div class="block-paragraph"><h3 data-block-key="29tyz"><b>Threat Intelligence news</b></h3><ul><li data-block-key="cm2sc"><b>Staying ahead of adversarial AI through agentic source code review</b>: To help defenders implement agentic approaches s…<div class="block-paragraph"><h3 data-block-key="rcfc5"><b>Now hear this: Podcasts from Google Cloud</b></h3><ul><li data-block-key="drbpp"><b>Cloud Security Podcast: All about Project Atlas, Wiz's AI vulnerability research</b>: Near Orfeld, head…@
@@ -2909,7 +2834,7 @@<p><span style="vertical-align: baseline;">The unified </span><a href="https://github.com/googleapis/python-genai" rel="noopener" target="_blank"><span style="text-decoration: underline; vertical-align: baseline;">google-genai</span></a><span style="verti…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Prototype: Google AI Studio, raw API key\r\nfrom google import genai\r\nclient = genai.Client(api_key=&quot;YOUR_AI_STUDIO_KEY&quot;)\r\n\r\n# Production: GEAP, no key — uses Application Default Credentials…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Prototype: Google AI Studio, raw API key\r\nfrom google import genai\r\nclient = genai.Client(api_key=&quot;YOUR_AI_STUDIO_KEY&quot;)\r\n\r\n# Production: GEAP, no key — uses Application Default Credentials…</dl></div><div class="block-paragraph_advanced"><h3><span style="vertical-align: baseline;">#2 How do I set up a Google Cloud project without becoming an IAM expert?</span></h3><p><span style="vertical-align: baseline;">The biggest reason startups stall on the migration to Agent Platform isn't the code, it's the operational leap from "here's an API key" to a cloud project with folders, service accounts, org policies, logging, and IAM bindings. If your team does…@
@@ -2927,7 +2852,7 @@</ol></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# One-shot: create a Vertex-ready project and turn on the services a\r\n# typical AI startup uses.\r\ngcloud projects create my-startup-prod --name=&quot;My Startup (prod)&quot;\r\ngcloud config set project m…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# One-shot: create a Vertex-ready project and turn on the services a\r\n# typical AI startup uses.\r\ngcloud projects create my-startup-prod --name=&quot;My Startup (prod)&quot;\r\ngcloud config set project m…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Sources: </span><a href="https://cloud.google.com/sdk/gcloud/reference/services/enable"><span style="text-decoration: underline; vertical-align: baseline;">gcloud services enable refe…<p><span style="vertical-align: baseline;">If you're a solo founder, resist the urge to build in your personal GCP account. Create a proper organization or self-owned org first, then create the project </span><span style="font-style: italic; vertical-align: baseline;">inside&…@
@@ -2947,11 +2872,11 @@<p><span style="vertical-align: baseline;">The pattern you're aiming for is one where your </span><span style="font-style: italic; vertical-align: baseline;">code never sees a key at all</span><span style="vertical-align: baseline;">. It just calls the </span&g…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# On a developer laptop\r\ngcloud auth application-default login\r\n\r\n# On a server (Cloud Run, GKE, etc.) — no login, no key file.\r\n# Attach a service account with just the roles the app needs.\r\ngcloud run dep…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# On a developer laptop\r\ngcloud auth application-default login\r\n\r\n# On a server (Cloud Run, GKE, etc.) — no login, no key file.\r\n# Attach a service account with just the roles the app needs.\r\ngcloud run dep…</dl></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Application code — notice: no keys, no secrets.\r\nfrom google import genai\r\n\r\nclient = genai.Client(\r\n vertexai=True,\r\n project=&quot;my-startup-prod&quot;,\r\n location=&quot;us-centr…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Application code — notice: no keys, no secrets.\r\nfrom google import genai\r\n\r\nclient = genai.Client(\r\n vertexai=True,\r\n project=&quot;my-startup-prod&quot;,\r\n location=&quot;us-centr…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Do one last favor to your future self: give that service account the </span><span style="font-style: italic; vertical-align: baseline;">minimum</span><span style="vertical-align: b…<h3><span style="vertical-align: baseline;">#4 When should I actually stop procrastinating and migrate from AI Studio's API key to Agent Platform's IAM model?</span></h3>@
@@ -2975,7 +2900,7 @@<p><span style="vertical-align: baseline;">Practical checklist for cutover day:</span></p></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# 1. Revoke every existing AI Studio key that has ever left a laptop.\r\n# (Go to https://aistudio.google.com/apikey and delete them.)\r\n\r\n# 2. Confirm your production code has no api_key= arguments.\r\ngrep -r…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# 1. Revoke every existing AI Studio key that has ever left a laptop.\r\n# (Go to https://aistudio.google.com/apikey and delete them.)\r\n\r\n# 2. Confirm your production code has no api_key= arguments.\r\ngrep -r…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">If step 3 prints a response, you're on Agent Platform.</span></p><h3><span style="vertical-align: baseline;"><span style="vertical-align: baseline;">Scale: get more capacity without paying a premium.</span></span></h3>@
@@ -2993,19 +2918,19 @@<p><strong style="vertical-align: baseline;">Pin to a regional endpoint.</strong><span style="vertical-align: baseline;"> Over half of startup traffic on Agent Platform defaults to global routing. Pinning to a specific region (say </span><strong style="vertical-align…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;from google import genai\r\n\r\n# Global (default): competes against worldwide demand.\r\n# Regional: routes only to the regional cluster, less contention.\r\nclient = genai.Client(\r\n vertexai=True,\r\n proje…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;from google import genai\r\n\r\n# Global (default): competes against worldwide demand.\r\n# Regional: routes only to the regional cluster, less contention.\r\nclient = genai.Client(\r\n vertexai=True,\r\n proje…</dl></div><div class="block-paragraph_advanced"><p><strong style="vertical-align: baseline;">Add real retry and backoff.</strong><span style="vertical-align: baseline;"> A 429 is a retryable signal, not a fatal error. Any production client should have exponential backoff with jit…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;from google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(\r\n vertexai=True, project=&quot;my-startup-prod&quot;, location=&quot;us-central1&quot;,\r\n http_option…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;from google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(\r\n vertexai=True, project=&quot;my-startup-prod&quot;, location=&quot;us-central1&quot;,\r\n http_option…</dl></div><div class="block-paragraph_advanced"><p><strong style="vertical-align: baseline;">How do you see this coming? </strong><span style="vertical-align: baseline;">Preferably not from a user telling you. Agent Platform publishes serving metrics to Cloud Monitoring, and the…<p><span style="vertical-align: baseline;">The metric to actually alert on is </span><code style="vertical-align: baseline;">aiplatform.googleapis.com/publisher/online_serving/model_invocation_count</code><span style="vertical-align: baseline;">. It carries an <…<p><span style="vertical-align: baseline;">One thing worth internalizing, because it trips people up: you cannot build a "warn me at 80% of my quota" alert for Standard PayGo. Under Dynamic Shared Quota there is no fixed per-project number to be at 80% of. A 429 means transient contentio…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;gcloud monitoring policies create --policy-from-file=capacity-alert.yaml&#x27;), (&#x27;language&#x27;, &#x27;&#x27;), (&#x27;caption&#x27;, &lt;wagtail.rich_text.RichText object at 0x…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;gcloud monitoring policies create --policy-from-file=capacity-alert.yaml&#x27;), (&#x27;language&#x27;, &#x27;&#x27;), (&#x27;caption&#x27;, &lt;wagtail.rich_text.RichText object at 0x…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Sources: </span><a href="https://cloud.google.com/monitoring/api/metrics_gcp_a_b"><span style="text-decoration: underline; vertical-align: baseline;">Agent Platform metrics list</s…<p><span style="vertical-align: baseline;">Follow the </span><a href="https://cloud.google.com/vertex-ai/generative-ai/docs/quotas"><span style="text-decoration: underline; vertical-align: baseline;">Agent Platform rate limits documentation</span></a><spa…@
@@ -3094,7 +3019,7 @@</ol></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Priority PayGo request: use the global endpoint + two extra headers.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(vertexai=True, project=&quot;my-startup-prod&q…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Priority PayGo request: use the global endpoint + two extra headers.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(vertexai=True, project=&quot;my-startup-prod&q…</dl></div><div class="block-paragraph_advanced"><p role="presentation"><span style="vertical-align: baseline;">3. </span><strong style="vertical-align: baseline;">Once you can predict your baseline TPM,</strong><span style="vertical-align: baseline;"> buy PT to cover …<p><span style="vertical-align: baseline;"> Sources: </span><a href="https://cloud.google.com/vertex-ai/generative-ai/docs/priority-paygo"><span style="text-decoration: underline; vertical-align: baseline;">Priority PayGo docs</span></a><span style="verti…@
@@ -3115,7 +3040,7 @@<p><span style="vertical-align: baseline;">Batch prediction on Agent Platform runs in a completely separate queue, does not consume your interactive DSQ, and is typically about half the price of on-demand inference. That's a rare double win: faster live traffic </span><span styl…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Kick off a batch prediction job from a JSONL file in Cloud Storage.\r\n# Each line is one prompt; results land in another Cloud Storage prefix.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nc…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Kick off a batch prediction job from a JSONL file in Cloud Storage.\r\n# Each line is one prompt; results land in another Cloud Storage prefix.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nc…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Common candidates: nightly document summarization, background classification of new signups, bulk translation, embedding backfills, evaluation runs against your test set. If any of those are on your li…<h3><span style="vertical-align: baseline;">Govern: Keep costs, keys, and agents under control.</span></h3>@
@@ -3145,7 +3070,7 @@<p role="presentation"><span style="vertical-align: baseline;">2. </span><strong style="vertical-align: baseline;">A billing budget with a Pub/Sub trigger that disables billing</strong><span style="vertical-align: baseline;">. Still the right tool when you need bl…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Sketch: create a budget SCOPED TO ONE PROJECT that publishes to Pub/Sub at 50%, 90%, 100%.\r\ngcloud billing budgets create \\\r\n --billing-account=012345-6789AB-CDEF01 \\\r\n --display-name=&quot;my-startup…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Sketch: create a budget SCOPED TO ONE PROJECT that publishes to Pub/Sub at 50%, 90%, 100%.\r\ngcloud billing budgets create \\\r\n --billing-account=012345-6789AB-CDEF01 \\\r\n --display-name=&quot;my-startup…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Sources: </span><span style="vertical-align: baseline;"> </span><a href="https://cloud.google.com/billing/docs/how-to/budgets-spend-caps"><span style="text-decoration: underl…<p><span style="vertical-align: baseline;">Two things to get ahead of for, as the defaults can cause unexpected issues: </span></p>@
@@ -3163,11 +3088,11 @@<p><span style="vertical-align: baseline;">The short answer is: </span><a href="https://cloud.google.com/secret-manager"><span style="text-decoration: underline; vertical-align: baseline;">Secret Manager</span></a><span style="vertical-align: baseline;"&g…<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Store a third-party API key (Stripe, OpenAI, whatever).\r\necho -n &quot;sk_live_xxx&quot; | gcloud secrets create stripe-live-key --data-file=-\r\n\r\n# Grant only the runtime service account access to rea…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Store a third-party API key (Stripe, OpenAI, whatever).\r\necho -n &quot;sk_live_xxx&quot; | gcloud secrets create stripe-live-key --data-file=-\r\n\r\n# Grant only the runtime service account access to rea…</dl></div><div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Application code fetches it at startup; nothing lives on disk.\r\nfrom google.cloud import secretmanager\r\nsm = secretmanager.SecretManagerServiceClient()\r\nresp = sm.access_secret_version(\r\n name=&quot;…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Application code fetches it at startup; nothing lives on disk.\r\nfrom google.cloud import secretmanager\r\nsm = secretmanager.SecretManagerServiceClient()\r\nresp = sm.access_secret_version(\r\n name=&quot;…</dl></div><div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">Then two little disciplines that pay for themselves the first time you need them:</span></p><ul>@
@@ -3186,7 +3111,7 @@<p><strong style="vertical-align: baseline;">2. Sandboxed code execution.</strong><span style="vertical-align: baseline;"> If your agent runs generated code, a common pattern for data-analysis or "run this Python for me" flows, do not run it in your application process. Use …<div class="block-code"><dl> <dt>code_block</dt>-
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Enable server-side code execution inside a sandbox for a request.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(vertexai=True, project=&quot;my-startup-prod&quot…+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;# Enable server-side code execution inside a sandbox for a request.\r\nfrom google import genai\r\nfrom google.genai import types\r\n\r\nclient = genai.Client(vertexai=True, project=&quot;my-startup-prod&quot…</dl></div><div class="block-paragraph_advanced"><p><strong style="vertical-align: baseline;">3. Prompt and response filtering.</strong><span style="vertical-align: baseline;"> </span><a href="https://cloud.google.com/security-command-center/docs/model-armor-overview">…<p><strong style="vertical-align: baseline;">4. Behavioral monitoring.</strong><span style="vertical-align: baseline;"> </span><a href="https://cloud.google.com/security-command-center"><span style="text-decoration: underline; vertical-align: baseline;">Secu…@
@@ -3461,4 +3386,147 @@<p><span style="vertical-align: baseline;">Powered by multimodal embeddings and a suite of native AI agents spanning search, metadata extraction, research, analysis, and composition, Box enables organizations to proactively surface insights such as flagging stale pricing data, expiring c…<p><span style="vertical-align: baseline;">Designed to interoperate with the broader enterprise AI ecosystem, Box serves as the single governed content foundation that ensures every AI-driven workflow is grounded in authorized, auditable enterprise data.</span></p><p><span style="vertical-align: baseline;">When you think about it, the enterprise data landscape was always multimodal. Now we have the technology to make the most of it. By integrating gemini-embeddings-2, Box helps its users unlock unprecedented value from unstructured enterprise cont…-
<p><span style="font-style: italic; vertical-align: baseline;">The team would like to thank Ken Ikeda, Afshaan Mazagonwalla, and Samip Thakkar for their work on this project.</span></p></div></description><pubDate>Tue, 18 Aug 2026 16:00:00 +0000</pubDate><guid>https://c…+
<p><span style="font-style: italic; vertical-align: baseline;">The team would like to thank Ken Ikeda, Afshaan Mazagonwalla, and Samip Thakkar for their work on this project.</span></p></div></description><pubDate>Tue, 18 Aug 2026 16:00:00 +0000</pubDate><guid>https://c…+
<p><span style="vertical-align: baseline;">For example, when a customer sends an angry message about a damaged order, a pipeline shouldn't just log the error or flag a dashboard. It should look up the order in the database that holds customer order and inventory records, decide on a reme…+
<p><span style="vertical-align: baseline;">However, streaming systems face a fundamental engineering hurdle when executing gen AI workflows: scale, latency, and cost. Sending every raw event directly to a heavyweight model or multi-step agent equipped with external database and email too…+
<p><span style="vertical-align: baseline;">This pattern addresses the scale and complexity challenge by combining </span><a href="https://cloud.google.com/products/dataflow"><span style="text-decoration: underline; vertical-align: baseline;">Google Dataflow</span>…+
<h3><strong style="vertical-align: baseline;">A universal blueprint for high-volume streams</strong></h3>+
<p><span style="vertical-align: baseline;">While we use a customer support triage scenario below, this pre-filter + agentic action pattern is a universal paradigm. It applies to any stream where a high volume (&gt;9X%) of events are routine, and only a small number require complex, c…+
<ul>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><span style="vertical-align: baseline;">IT Operations &amp; DevOps: Filtering millions of routine system logs on CPU, and triggering an agent to run diagnostics and open bug tickets only when a critical anomaly is flagged.</span></p>+
</li>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><span style="vertical-align: baseline;">Financial Fraud Triaging: Passing millions of transactions through lightweight, local rules, and calling an agent to execute multi-database lookup tools only for highly suspicious patterns.</span></p>+
</li>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><span style="vertical-align: baseline;">Industrial IoT: Monitoring normal telemetry on the edge, and routing erratic spikes to an agent to coordinate equipment shutdowns and email field engineers.</span></p>+
</li>+
</ul>+
<h2><strong style="vertical-align: baseline;">The architecture: Why pre-filter streaming events?</strong></h2>+
<p><span style="vertical-align: baseline;">In a high-throughput stream, the vast majority of messages do not require complex reasoning or remediation. They might be positive feedback, neutral inquiries, or simple queries.</span></p>+
<p><span style="vertical-align: baseline;">Routing every single event to a heavyweight LLM workflow creates three primary bottlenecks:</span></p>+
<ol>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">API cost:</strong><span style="vertical-align: baseline;"> Frontier models charge per token. Under high throughput, cost scales linearly with stream volume.</span></p>+
</li>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Latency:</strong><span style="vertical-align: baseline;"> Multi-step workflows (which involve database lookups and external API calls) take seconds, creating a bottleneck in streaming DAGs.</span></p>…+
</li>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Quotas:</strong><span style="vertical-align: baseline;"> External APIs have strict rate limits that streaming workers can easily exhaust.</span></p>+
</li>+
</ol>+
<p><span style="vertical-align: baseline;">To prevent this, we build a pre-filtered pipeline in Apache Beam/Dataflow:</span></p></div>+
<div class="block-image_full_width">+
+
+
+
+
+
+
+
<div class="article-module h-c-page">+
<div class="h-c-grid">+
+
+
<figure class="article-image--large+
+
+
h-c-grid__col+
h-c-grid__col--6 h-c-grid__col--offset-3+
+
+
"+
>+
+
+
+
+
<img+
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_XYX8VCT.max-1000x1000.jpg"+
+
alt="image1">+
+
</a>+
+
</figure>+
+
+
</div>+
</div>+
+
+
+
+
+
</div>+
<div class="block-paragraph_advanced"><h3><span style="vertical-align: baseline;">Pipeline flow</span></h3>+
<ol>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Ingestion:</strong><span style="vertical-align: baseline;"> Read raw customer messages from </span><a href="https://cloud.google.com/pubsub"><span style="text-decoration: underline; vertical-align…+
</li>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Lightweight sentiment classifier (CPU):</strong><span style="vertical-align: baseline;"> Run all messages through a lightweight, CPU-based Hugging Face model (</span><code style="vertical-align: baselin…+
</li>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Pre-qualification Gate:</strong><span style="vertical-align: baseline;"> A simple </span><code style="vertical-align: baseline;">DoFn</code><span style="vertical-align: baseline;"> filter…+
</li>+
<li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;">+
<p role="presentation"><strong style="vertical-align: baseline;">Automated Remediation (ADK):</strong><span style="vertical-align: baseline;"> If and only if a message is classified as </span><code style="vertical-align: baseline;">NEGATIVE</code><span st…+
</li>+
</ol>+
<h2><strong style="vertical-align: baseline;">Adaptive execution: Making the Beam DAG dynamic</strong></h2>+
<p><span style="vertical-align: baseline;">In traditional streaming architectures, the pipeline's Directed Acyclic Graph (DAG) is rigid. Once deployed to Dataflow, the sequence of transforms is set. If you need to handle new types of alerts or change how specific events are routed, you h…+
<p><span style="vertical-align: baseline;">By placing a gen AI agent downstream of our sentiment pre-filter, we introduce a dynamic, adaptive node inside the static DAG.</span></p>+
<p><span style="vertical-align: baseline;">For the 95% of records that are positive or neutral, the pipeline runs along a fast, static path. But when the filter gates a negative record, the agent evaluates the payload and dynamically selects the correct sequence of API tools (e.g., datab…+
<h2><strong style="vertical-align: baseline;">Implementing the pipeline</strong></h2>+
<p><span style="vertical-align: baseline;">Here is an example implementation in Apache Beam using the Google Agent Development Kit (ADK) and the </span><code style="vertical-align: baseline;">RunInference</code><span style="vertical-align: baseline;"> framework.&l…+
<h3><span style="vertical-align: baseline;">1. Defining the lightweight sentiment model</span></h3>+
<p><span style="vertical-align: baseline;">We define the upstream CPU model using </span><code style="vertical-align: baseline;">HuggingFacePipelineModelHandler</code><span style="vertical-align: baseline;">. This model classifies sentiment into </span><c…+
<div class="block-code"><dl>+
<dt>code_block</dt>+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;model_handler = HuggingFacePipelineModelHandler(\r\n task=&quot;sentiment-analysis&quot;,\r\n model=&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;\r\n)&#x27;), (&#x27;langua…+
</dl></div>+
<div class="block-paragraph_advanced"><h3><span style="vertical-align: baseline;">2. Building the heavyweight ADK agent</span></h3>+
<p><span style="vertical-align: baseline;">The ADK agent acts as our remediation assistant. We equip it with three tools:</span></p>+
<ul>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><code style="vertical-align: baseline;">lookup_user</code><span style="vertical-align: baseline;">: Queries BigQuery for the customer's email.</span></p>+
</li>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><code style="vertical-align: baseline;">lookup_orders</code><span style="vertical-align: baseline;">: Queries BigQuery for the customer's orders and current product inventory.</span></p>+
</li>+
<li aria-level="1" style="list-style-type: disc; vertical-align: baseline;">+
<p role="presentation"><code style="vertical-align: baseline;">send_email</code><span style="vertical-align: baseline;">: Sends a remediation email to the customer using the </span><a href="https://developers.google.com/workspace/gmail/api/guides" rel="noopener" targ…+
</li>+
</ul></div>+
<div class="block-code"><dl>+
<dt>code_block</dt>+
<dd>&lt;ListValue: [StructValue([(&#x27;code&#x27;, &#x27;def make_adk_tools(project: str, dataset: str = &quot;sentiment_demo&quot;):\r\n def lookup_user(user_id: int) -&gt; dict:\r\n &quot;&quot;&quot;Look up user information (email addre…+
</dl></div>+
<div class="block-paragraph_advanced"><p><span style="vertical-align: baseline;">We configure the </span><code style="vertical-align: baseline;">LlmAgent</code><span style="vertical-align: baseline;"> and package it in the </span><code style="vertic…+
<div class="block-code"><dl>+
<dt>code_block</dt>Diff display stops at 400 lines. The line counts above are from the whole diff. 120 lines shown here cut at 300 characters. The raw artifact at this commit is linked above.