GCP News - 2026-09-09

2026-09-09
最終更新: 2026-09-10 05:27:14 JST

AI による概要

9 記事

この日は 9 件で、エージェント基盤のガバナンス強化とセキュリティ関連の解説が中心でした。リリースノートでは、Gemini Enterprise Agent Platform の Agent Gateway が VPC Service Controls に対応し、VPC 接続を構成するとエージェントのトラフィックがプライベート VPC 経由でルーティングされ、組織の VPC-SC 境界ルールがエージェント通信にも適用されます。対応は 2026 年 9 月 8 日以降に作成し、接続テンプレートを ALL_TRAFFIC の egress モードで構成したデプロイに限られます。NetApp Volumes は Flex Unified サービスレベルを asia-east1 (台湾)、australia-southeast2 (メルボルン)、europe-southwest1 (マドリード) で提供開始しました。Google Cloud ブログでは、Antigravity 2.0 や Antigravity CLI と同じランタイムエンジンを自前のアプリケーションへ組み込める Antigravity SDK が取り上げられ、宣言的な安全ポリシー、リアルタイムのテレメトリ、ステートフルなマルチターンの永続化を備え、コアランタイムの更新が SDK エージェントへ自動的に反映されます。Data Agent Kit を使ったエージェント分析の解説も出て、データウェアハウス・本番 PostgreSQL・オブジェクトストアの JSON といった異なる場所に散らばる答えを、IDE から MCP サーバーとエージェントスキルで横断的に扱えるようにします。AI/ML ブログでは、日本の通信事業者 KDDI が消費者向け RAG アプリ Buffmee を、100 を超える情報源 (書籍・雑誌・Web メディア) に基づいて回答するよう構築し、レイテンシ目標の達成とハルシネーション対策のために自動評価フレームワークと性能最適化を適用した事例が紹介されました。日本語ブログ (抄訳) では、Cloud SQL のフェイルオーバーや L7 ロードバランサ経由のトラフィック劣化を注入できる Fault Injection Testing のプレビュー、ソフトウェア鍵を対象とした Cloud KMS の耐量子鍵インポートのプレビュー、脆弱性の発見・トリアージ・再現・パッチ適用を自動化するオープンソースの AI ハーネス Mantis、Cloud Interconnect 上の Application Awareness で重要トラフィックを優先し移行を妨げずにネットワーク信頼性を高めた Uber の事例が公開されています。

主要トピック
  • エージェント基盤: Agent Gateway が VPC Service Controls に対応、エージェント通信に VPC-SC 境界ルールを適用 (2026-09-08 以降のデプロイが対象)

  • ストレージ: NetApp Volumes の Flex Unified が台湾・メルボルン・マドリードで提供開始

  • 開発ツール: Antigravity SDK が Antigravity 2.0 / CLI と同じランタイムを提供、安全ポリシー・テレメトリ・マルチターン永続化を内蔵

  • 分析: Data Agent Kit で、データウェアハウス・PostgreSQL・オブジェクトストアを IDE から横断するエージェント分析

  • 事例: KDDI が 100 以上の情報源に基づく消費者向け RAG アプリ Buffmee を、自動評価と性能最適化で構築

  • レジリエンス: Fault Injection Testing のプレビュー、Cloud SQL フェイルオーバーや L7 トラフィック劣化を注入

  • セキュリティ: ソフトウェア鍵向けの Cloud KMS 耐量子鍵インポートのプレビュー、SNDL 攻撃を緩和

  • セキュリティ: 脆弱性の発見・再現・パッチを自動化するオープンソースの AI ハーネス Mantis のスタートガイド

AI (Claude Opus 5) が生成 · 2026-09-11 07:54:56 JST

Google Cloud Release Notes

September 09, 2026

Gemini Enterprise Agent Platform

Feature

Agent Gateway supports VPC Service Controls

Agent Gateway now enforces VPC Service Controls perimeter rules for agent communications. When you configure Agent Gateway with VPC connectivity, agent traffic is routed through your private VPC network, ensuring that your organization's VPC-SC perimeter rules are applied to all agent traffic as well.

Note that setting up VPC connectivity is required to enable VPC Service Controls perimeter enforcement for Agent Gateway deployments. The connectivity template must be configured in ALL_TRAFFIC egress mode.

NetApp Volumes

Announcement

Google Cloud NetApp Volumes now supports the Flex Unified service level in the following regions:

  • asia-east1 (Taiwan)

  • australia-southeast2 (Melbourne)

  • europe-southwest1 (Madrid)

For more information about available regions, see Supported regions.

Google Cloud Blog

Power agent hubs or custom harnesses with the Antigravity SDK in one toolkit

詳細を表示

Enterprise agent adoption isn’t one-size-fits-all. While many teams will opt for managed commercial platforms, such as Gemini Enterprise Agent Platform for turnkey agent deployment and governance, developers with bespoke workflows or custom execution engines often choose to build their own lightweight agent hubs.

If you are building a centralized agent hub from the ground up, you need tools that run predictably, log everything, and stay in their sandbox. The Antigravity SDK gives you the exact runtime engine used in Antigravity 2.0 and the Antigravity CLI, adding declarative safety policies, real-time telemetry, and stateful multi-turn persistence straight into your application. When the core runtime updates, your SDK agents get those optimizations automatically. That's why today, we're breaking down how the Antigravity SDK powers a complete multi-agent control plane.

How Antigravity comes together

<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 alt="01-agy-harness" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/01-agy-harness.max-1000x1000.png" />
    
    </a>
  
</figure>


  </div>
</div>

A multi-agent control plane monitors and manages LLM workloads. It shows you exactly what the agent is thinking, which tools it calls, and how it stores state.

<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 alt="02-agents-dashboard" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/02-agents-dashboard.max-1000x1000.png" />
    
    </a>
  
</figure>


  </div>
</div>

It consists of two critical components:

1. Antigravity SDK agent core: The runtime that manages model interactions (like Gemini 3.1 Pro and Gemini 3.8 Flash), runs tools, generates thinking traces, and executes skills.

2. Observability and telemetry middleware: An event-driven layer powered by Antigravity SDK Lifecycle Hooks. It intercepts agent actions like step starts, thinking updates, and tool calls, and streams telemetry over WebSockets to your dashboard.

Use case: Multi-agent monitoring and interactive control

Let's explore a scenario where an organization is building or maintains a custom agent hub and wants to integrate Antigravity SDK-powered agents. 

The problem: An operations engineer needs to monitor multiple active agents (e.g., gemini-pro-agent, github-agent, email-agent) performing background research, document summarization, and task scheduling. Traditionally, observing agent progress requires:

  • Tailing fragmented console logs across multiple terminal windows

  • Manually inspecting JSON transcripts to diagnose stuck or failing tool calls

  • Lack of visibility into which Skills or MCP connectors are loaded for a given agent session

  • Difficulty tracking cumulative token usage and execution latency

The solution: This post walks through each one: the streaming API for real-time observation, lifecycle hooks for telemetry and interception, the policy engine for steering, skills for capability management, and session state for persistence. With an SDK-powered dashboard, operators get a single view into what every agent is doing.

<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 alt="03-agy-bespoke-agent-hub" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/03-agy-bespoke-agent-hub.max-1000x1000.jpg" />
    
    </a>
  
</figure>


  </div>
</div>

What happens behind the scenes?
When an operator or dashboard interacts with an Antigravity agent, the runtime coordinates execution through five core mechanisms:

  1. Session initialization and state attachment (save_dir & conversation_id):The runtime initializes or reattaches to a session, binding execution to a root save_dir. Multi-turn trajectory logs, tool receipts, and artifacts are preserved under traj-<conversation_id> for persistent auditability.

  2. Skill resolution (skills_paths):Domain-specific capabilities and instructions are resolved directly from filesystem paths pointing to SKILL.md bundles, dynamically augmenting the agent's system prompt without an external registry.

  3. Concurrent stream generation (ChatResponse):The runtime exposes three concurrent async iterators over the single model response:

    • response (yields visible text tokens)

    • response.thoughts (yields internal chain-of-thought reasoning deltas)

    • response.tool_calls (yields typed ToolCall events containing .name and .args)

  4. Declarative sandboxing and built-in tool execution:When the agent performs workspace operations, built-in tools (list_directory, find_file, search_directory, view_file, create_file, edit_file) execute strictly within configured workspaces directories governed by safety policies (such as policy.workspace_only()).

  5. Telemetry interception via lifecycle hooks:Decorated async hook functions (@hooks.on_session_start, @hooks.pre_tool_call_decide, @hooks.post_tool_call, @hooks.on_session_end) intercept agent transitions in real time, validating or modifying tool calls and broadcasting telemetry payloads over WebSockets to the live dashboard.

The Antigravity SDK organizes these responsibilities into four core building blocks:

1. Modular capabilities with Skills

Skills provide reusable, domain-specific instruction bundles and reference assets that agents load dynamically. Rather than managing an in-memory registry, skills are resolved directly from filesystem directories containing a SKILL.md file:

code_block
<ListValue: [StructValue([('code', 'from google.antigravity import Agent, LocalAgentConfig\r\n\r\n# Pass directory paths containing SKILL.md bundles directly to config.\r\n# The runtime dynamically resolves and injects them into the prompt.\r\nconfig = LocalAgentConfig(\r\n model="gemini-3.8-flash",\r\n system_instructions=(\r\n "You are an enterprise operations assistant equipped with "\r\n "specialized operational skills."\r\n ),\r\n skills_paths=["./skills/research", "./skills/code_review"],\r\n)\r\n\r\nasync with Agent(config) as agent:\r\n response = await agent.chat("Analyze the deployment logs.")'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66658f6460>)])]>

2. Sandboxed built-in tools and workspace scoping

The SDK provides production-ready file and workspace tools out of the box, which removes the need to write custom filesystem wrappers. When paired with workspaces and declarative safety policies, tools are strictly confined to authorized directories:

code_block
<ListValue: [StructValue([('code', 'from google.antigravity import Agent, LocalAgentConfig, types\r\nfrom google.antigravity.policies import policy\r\n\r\nconfig = LocalAgentConfig(\r\n model="gemini-3.8-flash",\r\n # Selectively enable built-in tools via CapabilitiesConfig\r\n capabilities=types.CapabilitiesConfig(\r\n enabled_tools=[\r\n types.BuiltinTools.LIST_DIR, # "list_directory"\r\n types.BuiltinTools.FIND_FILE, # "find_file"\r\n types.BuiltinTools.SEARCH_DIR, # "search_directory"\r\n types.BuiltinTools.VIEW_FILE, # "view_file"\r\n types.BuiltinTools.CREATE_FILE, # "create_file"\r\n types.BuiltinTools.EDIT_FILE, # "edit_file"\r\n ]\r\n ),\r\n # Enforce filesystem isolation: operations outside these paths are blocked\r\n workspaces=["./workspace"],\r\n policies=[policy.workspace_only()],\r\n)'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66658f65b0>)])]>

3. Session isolation and trajectory persistence (save_dir & conversation_id)

State persistence in the Antigravity SDK is managed through declarative configuration rather than an external database. Specifying a save_dir establishes a root directory where full turn trajectories, tool receipts, and artifacts are preserved under traj-<conversation_id>:

code_block
<ListValue: [StructValue([('code', 'from google.antigravity import Agent, LocalAgentConfig\r\n\r\nconfig = LocalAgentConfig(\r\n model="gemini-3.8-flash",\r\n # Root directory storing all conversation trajectories\r\n save_dir="./storage/sessions",\r\n # Supply conversation_id to reattach to an existing trajectory;\r\n # omit it to let the SDK mint a new ID on the first turn.\r\n conversation_id="ops-session-20260820-001",\r\n)\r\n\r\nasync with Agent(config) as agent:\r\n # Resumes prior context and continues the multi-turn session seamlessly\r\n response = await agent.chat("Summarize the issues identified in the last turn.")'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66658f6730>)])]>

4. Real-time telemetry and interception with lifecycle hooks

Lifecycle hooks allow dashboards and monitoring engines to observe and steer every stage of execution. Using decorated async functions, you can stream status updates over WebSockets, inspect tool parameters, and enforce human-in-the-loop approvals before tools run:

code_block
<ListValue: [StructValue([('code', 'from google.antigravity import Agent, LocalAgentConfig, types\r\nfrom google.antigravity.hooks import hooks\r\n\r\n# 1. Session start & end telemetry\r\n@hooks.on_session_start\r\nasync def on_session_start():\r\n broadcast_to_dashboard({"type": "STATUS", "status": "RUNNING"})\r\n\r\n@hooks.on_session_end\r\nasync def on_session_end():\r\n broadcast_to_dashboard({"type": "STATUS", "status": "IDLE"})\r\n\r\n# 2. Intercept tool calls before execution (human-in-the-loop / audit gate)\r\n@hooks.pre_tool_call_decide\r\nasync def intercept_tool(tool_call: types.ToolCall) -> types.HookResult:\r\n broadcast_to_dashboard({\r\n "type": "TOOL_CALL",\r\n "tool": tool_call.name,\r\n "args": tool_call.args,\r\n })\r\n # Return HookResult to approve or block execution\r\n return types.HookResult(allow=True)\r\n\r\n# 3. Post-execution tool receipts\r\n@hooks.post_tool_call\r\nasync def record_tool_result(result):\r\n broadcast_to_dashboard({\r\n "type": "TOOL_RESULT",\r\n "tool": result.name,\r\n "error": getattr(result, "error", None),\r\n })\r\n\r\nconfig = LocalAgentConfig(\r\n model="gemini-3.8-flash",\r\n hooks=[on_session_start, on_session_end, intercept_tool, record_tool_result],\r\n)'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66658f6ee0>)])]>

Get started

Get started with your own enterprise agent control plane using the following resources:

Agentic analytics with the Data Agent Kit

詳細を表示

Imagine your director sends you a chat message Monday morning: Our average order value dropped 7% in January, but total revenue stayed flat. Why?

If you’re a data practitioner, you know why these types of questions can be tough. They’re totally open ended. There’s not a single root cause dashboard you can open. Was there an error in the web logs? Was a promo code misconfigured? You won’t know until you start digging, and you rarely find the answer in just one place.

Each piece of the answer lives somewhere different in your environment:

  • Sales history (orders and line items) sits in a data warehouse

  • Live customer records are in a production PostgreSQL instance

  • Marketing campaign rules are raw JSON files in an object store

Writing any one of these queries is easy. You’ll write the same one a dozen times, tweaking WHERE clauses or adding subqueries to find the answer. Then you’ll bounce to the next system and start again with a different dialect. Before you know it, you have ten browser tabs open and a whole afternoon gone, all to answer one question.

Data Agent Kit

The Data Agent Kit is built to solve this issue. It is a set of MCP servers and agent skills that helps data developers run data workflows from their IDEs. It’s available both as an extension for VS Code forks (Antigravity IDE, Cursor) and as a plugin for other tools (Antigravity 2.0, Antigravity CLI, Claude Code, Codex), so you don’t need to leave your IDE to get answers.

The Data Agent Kit relies on two core mechanisms:

  • Model Context Protocol (MCP): an open standard that connects your agent to tools, databases, and remote cloud infrastructure.

  • Skills: markdown files that augment your agent’s knowledge, teaching it how to interact with your specific stack.

Instead of generating SQL snippets and copy-pasting them into a console, Data Agent Kit lets agents run the queries and read the results on your behalf.

Let’s see what this looks like in practice applied to the average order value scenario. In this setup, the data warehouse is BigQuery, the Postgres instance is Cloud SQL, and the campaign rules sit in Cloud Storage.

<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 alt="1_dak_architecture" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_dak_architecture.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Data Agent Kit sample architecture</p></figcaption>
  
</figure>


  </div>
</div>

Finding out what happened

The investigation begins in the IDE’s chat pane with the following natural language prompt to confirm the baseline numbers:

code_block
<ListValue: [StructValue([('code', 'Calculate our monthly average order value from August 2025 through January 2026 using the orders and order items tables in BigQuery.'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66665de700>)])]>

Checking its work

The agent processes your prompt, invokes relevant skills, and prepares to start querying your data. But before it can execute anything, the IDE  pauses to ask for permissions to use the necessary MCP tools (e.g. execute_sql_readonly). You can allow it once for auditing, or select “always allow” to keep the workflow moving. Once approved, the agent sends off the queries.

<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 alt="2_skill_tool_use" src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/2_skill_tool_use.gif" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Invoking skills and BigQuery MCP from chat</p></figcaption>
  
</figure>


  </div>
</div>

Agentic IDEs allow you to inspect the execution trail, which reveals items like each MCP tool call or the raw SQL sent to BigQuery. It’s important to keep an eye on generated code, though reading a query can take much less time than writing one against schemas you’re unfamiliar with.

Breaking down the numbers

The numbers showed that average order value remained around $110 from August to December, but dropped to $103 in January. To find out why, ask the agent to drill down:

code_block
<ListValue: [StructValue([('code', "Break down January's AOV by order type to see what's going on"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66665def70>)])]>

The results point to a skewed average instead of a business decline. Online and Offline orders stayed healthy (~$110). A new channel called B2B-Wholesale appeared in January with an AOV of just ~$75. Nothing declined, but the product mix changed.

Crossing into Cloud SQL

You know what led to lower AOV. Next, you need to figure out who the wholesale buyers are. The customer records are stored in a Cloud SQL Postgres operational database, and you can continue in the same chat thread:

code_block
<ListValue: [StructValue([('code', 'Who are these B2B customers? Check our Cloud SQL database for their account details and creation dates.'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66665de3d0>)])]>

The agent switches to the Cloud SQL MCP and inspects the customers table for you. All 100 wholesale accounts are brand-new business entities created within the last 30 days. None of them existed in December.

<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 alt="3_b2b_customers" src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/3_b2b_customers.gif" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Querying operational customer records in Cloud SQL</p></figcaption>
  
</figure>


  </div>
</div>

Dropping into the terminal

A quick glance at the B2B orders in BigQuery shows that 92% applied promo_code = BIGORDER25. You can then ask the agent to track that code back to the campaign files, and it will use the Google Cloud Storage MCP server to access the file.  

The marketing campaign shows a 25% discount code led to a huge number of low-priced wholesale orders, which reduced the blended AOV while total revenue remained flat.

In a single chat session, the agent queried analytical data (BigQuery), operational records (Cloud SQL), and unstructured metadata (Cloud Storage) to find the root cause.

Updating the director

Now, you can prompt the agent to return a short executive summary for your director.

<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 alt="4_executive_summary" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_executive_summary.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Agent-generated executive summary</p></figcaption>
  
</figure>


  </div>
</div>

And voilà! With a few natural language prompts straight from your IDE, you've answered the director's open ended question.

Root cause analysis is only part of the job. The next time this issue occurs, you won't want to run through the same situation. Instead, you can turn this investigation into a reproducible data model.

Build a reproducible pipeline

Ask the agent to turn your ad-hoc analysis into a persistent dbt project:

code_block
<ListValue: [StructValue([('code', 'Build a dbt project that joins our BigQuery staging models with our Cloud SQL customer and pet profile attributes. Add a uniqueness test on order_id and run dbt build.'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f66665deaf0>)])]>

From a single prompt, the agent creates a virtual Python environment with dbt-bigquery and writes project models and tests. But then dbt build fails. The uniqueness test catches duplicates on order_id.

Customers can own more than one pet. The first version of the model attached those profiles directly to each order, so an order from a three-pet household became three rows (not unique).

The agent reads its own terminal output and catches the failure. It then rewrites the dbt logic and reruns it until the build passes.

This introduces an important note about agentic workflows. Agents are capable of writing mountains of code - but you'll still need to apply data quality checks to your pipeline (fortunately, an agent can write those too).

The next time leadership asks why average order value moved, you'll have a dbt model ready to answer it.

Wrap up

An agentic IDE keeps you from bouncing between your warehouse, your databases, your object store, and your terminal.

By pairing open standards like MCP and modular (and editable!) agent skills, the Data Agent Kit removes the friction between question and answer. Combing through unfamiliar schemas, translating between dialects, writing the joins you’ve written a hundred times: that becomes the agent’s job. You’re in charge of directing the investigation.

Try it yourself

The Data Agent Kit is in preview and works natively in Antigravity (2.0, CLI, IDE), Claude Code, Codex, Cursor, and other popular tools.

How KDDI built Buffmee, a faster, reliable consumer RAG app

詳細を表示

When building consumer-facing generative AI applications,  balancing high generation quality with fast response times across diverse media types, can be challenging. KDDI, a major telecommunications carrier in Japan, tackled this challenge head-on when they developed Buffmee, their consumer Retrieval-Augmented Generation (RAG) app.  

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 points, and explore personalized learning and hobby interests. By citing sources, Buffmee alleviates concerns about information reliability, allowing users to safely deepen their knowledge.

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, and they needed a reliable way to ensure hallucination-free results.

<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 alt="image1" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_9ZYjQgt.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Buffmee App Description and Images</p></figcaption>
  
</figure>


  </div>
</div>

To meet these performance targets, organizations need a systematic approach to AI evaluation and real-time bottleneck identification. That is why we are sharing the automated evaluation framework and performance optimization techniques that helped KDDI successfully launch their application. 

The results were inspiring: KDDI reduced total application response latency by 38%, successfully hitting their target response performance. They also achieved a nearly 18% improvement in TTFT.

"Our vision hinged on a platform where content, once ingested, would instantly function as a working RAG system. Google's careful, hands-on guidance made that a reality — we're sincerely grateful for their support." — Shunya Onoda, AI Product Department, KDDI.

With these performance and accuracy improvements, Buffmee now empowers users to safely explore their favorite media through interactive Q&A and deep-dive analysis, delivering a highly personalized experience while maintaining strict trust and compliance for content providers.

Let’s deep dive into how they achieved these results. 

Establish automated evaluation for diverse content

Traditional manual testing requires immense effort and cannot scale to accommodate a large content library. To solve this, the development team designed a systematic AI evaluation process using Gemini Enterprise Agent Platform Evaluation Service.

By implementing automated evaluation frameworks like LLM-as-a-Judge and the Rule of Hundreds, the team replaced labor-intensive manual testing with a data-driven process. They ingested their extensive document corpus, constructed hundreds of automated evaluation tests, and built a comprehensive benchmark dataset to measure the reliability of answers for each use case. As a result, the team improved their groundedness scores by 25%, helping deliver highly accurate and reliable outputs.

<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 alt="image2" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_R5gWUyX.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>KDDI's automated evaluation loop: AI generates questions and scores answers, while humans calibrate thresholds and analyze edge-case failures.</p></figcaption>
  
</figure>


  </div>
</div>

Identify bottlenecks and optimize performance with an agentic loop

To improve response speeds, the team implemented BigQuery Agent Analytics and the Agent Development Kit (ADK) log analysis agent. By analyzing actual production logs, they visualized how skill division and prompt bloat—especially with highly complex, multi-page system prompts — impacted the Time To First Token (TTFT).

The team optimized the system prompt, including the inline integration of skills, and reviewed the sub-agent routing. This allowed them to identify and resolve deep-stack bottlenecks in real time without sacrificing response accuracy.

Four core principles for reliable evaluation 

To achieve these results, the team implemented four core technical practices:

  1. Transitioning to binary evaluation: By selectively moving away from ambiguous 1–5 ratings to a binary "pass (1) / fail (0)" system for critical metrics, the team minimized variance and noise, helping improve automation accuracy.

  2. Strategic content sampling: Rather than attempting to evaluate every single document, the team classified their entire corpus along a two-dimensional grid: File Format (Web articles, EPUBs, PDFs, structured data) and Media Composition (Text-heavy, image-heavy, or mixed). By selecting representative samples from each cell of this difficulty grid, they reduced the evaluation workload by 75% while maintaining comprehensive test coverage.

  3. Thresholds grounded in product judgment: Instead of relying solely on default tool parameters, the product owner reviewed randomly sampled answers alongside their automated scores to calibrate and establish what "good enough to ship" actually meant for the user experience.

  4. Modular splitting of massive prompts into ADK Skills: Because massive system prompts exceeding 800 lines can cause LLM attention drift and latency degradation, the team split prompts by function into Agent Development Kit (ADK) Skills, dynamically loading only the required logic to optimize response times.

Get started

Building scalable, reliable generative AI applications requires both automated evaluation and deep performance analytics. To apply these techniques to your own applications:

Google Cloud Japan Blog

Fault Injection Testing で復元力テスト戦略を簡素化

詳細を表示

※この投稿は米国時間 2026 年 8 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。

データベースの障害やネットワーク パスの不調が発生しても、ミッション クリティカルなクラウド サービスはオンラインの状態を維持し続けなければなりません。しかし、現代の分散システムは複雑化しており、高可用性の確保はますます困難になっています。

障害発生時にも可用性と信頼性を維持できるよう、Fault Injection Testing のプレビュー版をリリースいたしました。Fault Injection Testing は、開発者やアーキテクトが障害テストを自動化し、サービス中断時にも予測可能な動作を確保できるように設計されています。

意図的に障害を環境に注入することで、実際のサービス停止が顧客に影響を与える前に、安全メカニズムを検証できます。

ネイティブな復元力テストが重要な理由

セルフホスト型のデータセンターとは異なり、クラウド アプリケーションでは、フェイルオーバー テストを容易にするために、基盤となるインフラストラクチャへの直接アクセスが制限されています。

アプリケーションが障害を乗り越えられることを証明するネイティブ ツールがなければ、信頼性戦略に重大なギャップが生じ、複数のリスクにさらされることになります。

  • 信頼と評判の低下: 障害が頻繁に発生したり、パフォーマンスが低下したりすると、顧客の不満を招き、ブランド イメージに長期的なダメージを与えます。

  • コンプライアンスと規制によるペナルティ: 多くの業界、特に金融機関では、障害復旧機能を証明できないと、コンプライアンス違反、監査、罰金につながる可能性があります。

  • 移行の遅延: ゾーン障害が発生しても重要なアプリケーションの安定性を維持できることを検証できない場合、大規模な移行プロジェクトは停滞してしまいがちです。

Fault Injection Testing の仕組み

Fault Injection Testing では、テスト テンプレートを作成してテストを実行できます。これらのテンプレートはブループリントとして機能し、注入する特定の障害と、テストの対象となるリソースを定義します。

この公開プレビュー版では、次の 2 つの主な障害シナリオをテストできます。

  • Cloud SQL のフェイルオーバー: この障害は、高可用性 Cloud SQL インスタンスの、プライマリ ゾーンからスタンバイ ゾーンへのフェイルオーバーをトリガーします。

  • アプリケーション トラフィックの劣化: レイヤ 7 ロードバランサを介して、レイテンシと HTTP エラーコードを選択的に追加できます。

Fault Injection Testing では、障害が注入される前に自動ドライランが実行されます。この読み取り専用のシミュレーションでは、権限がチェックされ、影響を受けるすべてのリソースの最新リストが提供されます。

スコープを確認したら、手動で注入を開始できます。テンプレートで定義した期間が経過すると、タイマーが切れて障害が元に戻ります。

テスト中に、アプリケーションが計画どおりに動作していることを確認できます。計画どおりに進まない場合は、停止と復元の機能を使用して、テストを直ちに停止し、リソースを通常の状態に復元できます。

プレビュー期間中は、ベスト プラクティスとして、本番環境以外で FIT を使用することをおすすめします。プレビュー版では、サービスが既存のテスト手法にどのように適合し、補完するのかを早期に確認できます。また、プロダクトの改善に役立つフィードバックを Google に提供することもできます。

企業向けに設計

KeyBank や Servier などのパートナーは、すでに Fault Injection Testing を使用してデプロイを検証しています。これらの組織はネイティブなフォールト インジェクションを活用することで、ゾーンの停止といった極めて過酷な障害シナリオをシミュレーションし、サービスの安定稼働を確かなものにしています。

Fault Injection Testing を使ってみる

Fault Injection Testing は、Google Cloud コンソール、gcloud CLI、REST API を介して利用できます。

  1. プレビュー版へのアクセスをリクエストする: Google Cloud アカウント チームに連絡して、プロジェクトをプレビュー版に追加します。

  2. API を有効にする: Google Cloud コンソールで「Fault Testing API」を検索し、有効にします。

  3. ロールを割り当てる: チームに roles/faulttesting.operator ロールがあり、テストを構成して実行できることを確認します。

  4. 最初のドライランを実行する: 本番環境以外で Cloud SQL またはロードバランサ リソースのテンプレートを作成し、ドライランを実行して潜在的な影響を確認します。

実装の詳細については、Google のアカウント担当者にお問い合わせいただくか、Fault Injection Testing のユーザーガイドをご覧ください。

- Google Cloud、グループ プロダクト マネージャー、Toby Owen

Cloud KMS における耐量子鍵インポートの発表

詳細を表示

※この投稿は米国時間 2026 年 8 月 21 日に、Google Cloud blog に投稿されたものの抄訳です。

企業の間でマルチクラウド アーキテクチャの採用が広がるなか、Bring Your Own Key(BYOK)は、データ主権の維持と重要なクラウド ワークロードの保護において不可欠な柱となっています。同時に、量子コンピューティングは急速に進歩しており、セキュリティ チームは、ネットワーク間で暗号鍵を安全に転送する方法を再評価する必要があります。

Cloud Key Management Service(Cloud KMS)における耐量子デジタル署名と耐量子鍵カプセル化メカニズム(KEM)の発表に続き、このたび、ソフトウェア ベースの暗号鍵を対象とした Cloud KMS における耐量子鍵インポートのプレビュー版をリリースしました。

ポスト量子暗号(PQC)移行タイムラインの次のフェーズの第一歩となる、更新された耐量子 BYOK 機能は、暗号解読が可能な量子コンピュータ(CRQC)が登場する前に、機密性の高い鍵を保護するのに役立ちます。

転送中の鍵の保護を強化するために耐量子鍵インポートを導入する際は、一般提供が開始された Cloud KMS PQC insights を活用して、ポスト量子に向けた全体的なセキュリティ ポスチャーをモニタリングすることも可能です。この概要を示すビジュアルでは、使用されているアルゴリズムの分類に基づいて非対称鍵が可視化されます。これにより、将来のモダナイゼーションに向けた計画立案や、長期的なレジリエンスの向上に役立てることができます。

脅威:「今すぐ保存、後で解読」攻撃

従来の鍵インポート方法では、転送中の鍵をラップするために、従来の非対称暗号化標準が使用されます。これらのアルゴリズムは現在の脅威に対しては有効ですが、攻撃者が傍受して保存した鍵を復号できる実用的な量子コンピュータが登場すると、根本的に安全ではなくなります。

耐量子鍵インポートは、鍵を耐量子エンベロープで最初からラップすることで、「今すぐ保存、後で解読」(SNDL)攻撃を軽減するのに役立ちます。

鍵を保護する耐量子エンベロープの構築

Cloud KMS で利用可能になったポスト量子転送メカニズムは、ハイブリッド公開鍵暗号化(HPKE)を使用します。Google の新しいインポート方法では、機密性の高いソフトウェア鍵マテリアルを耐量子転送エンベロープでラップします。このプロセスは既存の Cloud KMS API ワークフローに統合されるため、導入の手間を最小限に抑えることができます。

  • ジョブの開始: クライアントは、Cloud KMS API を通じて新しいインポート ジョブを作成し、ポスト量子 HPKE インポート メソッドをリクエストします。

  • 鍵の生成: Cloud KMS サーバーは、ポスト量子 KEM 秘密鍵を生成し、対応する公開鍵をクライアントに公開します。

  • クライアントサイドのラッピング: サポートされている暗号ライブラリ(Tink や OpenSSL など)を使用して、クライアントは HPKE Seal() オペレーションを実行します。これにより、共有シークレットを確立するために公開鍵がカプセル化され、HKDF-SHA256 を使用してエフェメラル AES 鍵が導出され、ターゲット鍵マテリアルが暗号化されます。

  • 送信: クライアントは、カプセル化された暗号テキストと暗号化された鍵マテリアルを直接連結して Cloud KMS エンドポイントに送信します。このエンドポイントには、すでに耐量子な転送中データ保護機能が組み込まれています。

  • ラップ解除: Cloud KMS サーバーは、ラッピング鍵の秘密部分を使用して HPKE Open() オペレーションを実行し、Cloud KMS 境界内で鍵マテリアルを安全に復号して保護します。

KEM レイヤでは、X-Wing、ML-KEM-768、ML-KEM-1024 のいずれかを選択できます。鍵導出レイヤは HKDF-SHA-256 を利用し、最終的な対称ラッパーは、標準の 12 バイトのノンスを備えた AES-256-GCM を採用しています。

インポート ジョブの設定、外部暗号ライブラリを使用したローカル鍵マテリアルの準備、耐量子ソリューションの管理の詳細については、Cloud KMS の耐量子鍵インポートに関するドキュメントをご覧ください。

Google Cloud の PQC への取り組みにおける重要なマイルストーン

ポスト量子暗号へのグローバルな移行は、マイルストーンを 1 つずつ達成していくマラソンのようなものです。今すぐ最初の耐量子鍵インポート ジョブを作成して、アプリケーションの耐量子化のプロセスを開始できます。

皆様からのフィードバックをお待ちしております。また、貴組織のポスト量子戦略を Google がどのようにサポートできるかについて、ぜひお問い合わせください。

- Cloud KMS、シニア ソフトウェア エンジニア、Alessio Buraggina

- Google Cloud、シニア プロダクト マネージャー、Erlander Lo

バグの発見と修正を支援するオープンソースの AI ハーネス、Mantis のスタートガイド

詳細を表示

※この投稿は米国時間 2026 年 9 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。

AI モデルは、人間の手をほとんど、あるいはまったく介さずに脆弱性を発見して悪用する能力を持っていることが判明しています。防御側が AI を活用して優位性を確保できるよう、Google はソフトウェアの脆弱性の発見、トリアージ、再現、パッチ適用を自動化する Mantis ハーネスを構築しました。

誰でも利用可能なオープンソース フレームワークである Mantis は、マシンスピードでの脆弱性の発見と修正を実現するための Google の社内アプローチの一環として誕生しました。Mantis により、より効果的でスケーラブルかつコンテキストを考慮したリポジトリ分析が可能になります。

AI コードスキャンは精度が低く、ハルシネーションを起こすことが多いため、真陽性率は 7% を下回ります。Mantis は、批評エージェントやレビュー エージェントなどの業界標準のエージェント手法とサンドボックス環境での脆弱性の再現を組み合わせてグラウンディングを行うことで、実効性を持たせた設計になっています。

6 月に公開した記事で詳しく解説したとおり、Mantis はリポジトリの履歴を調べて過去のセキュリティに関する修正から学習し、アーキテクチャと脅威モデルのドキュメントが提供されていない場合でも、それらのドキュメントを自動的に作成します。

階層型のセキュリティ サマリー ツリーを構築し、個々のファイルをディレクトリ レベルとルートレベルのサマリーに集約します。この手法により、大規模なリポジトリ全体で重要な構造コンテキストを維持しながら、トークンのオーバーヘッドを 85% 以上削減することに成功しました。

Google が数十年の期間をかけて幅広いコードベースにわたって蓄積してきたサイバーセキュリティの専門知識の結晶である Mantis は、GitHub で入手可能です。Mantis の使用を開始する方法は次のとおりです。

  • まず、次のコマンドを使用して Mantis リポジトリのクローンをローカルに作成します。

code_block
<ListValue: [StructValue([('code', 'git clone https://github.com/google/mantis.git'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd4cad80fa0>)])]>
  • 次に、任意のコーディング エージェントを開き、「path/to/mantis にある Mantis フレームワークを使用して、path/to/your/code にあるコードをレビューしたいのですが、やり方を教えてください」というプロンプトを入力します。

Google 社内では、このプロンプトを使用して、多くのコード リポジトリで実際の脆弱性を発見しています。GitHub の Mantis リポジトリには、サンドボックス化のサンプル オプションが含まれています。自社のワークフローに合わせて独自のサンドボックスを実装することもできます。

Mantis は、脆弱性の検出、真陽性のフィルタリング、パッチ適用を簡単に開始できるようにすることを目的としています。AI が検出した脆弱性を把握したら、新しい mantis-advise スキルを使用して、蓄積された知識を活用し、コーディング エージェントに最初から安全なコードを記述させることができます。

AI を活用した脆弱性検出を最大限に活用して開発手法をモダナイズするにあたって、以下に示す 2 つの重要事項の実行を推奨します。

  1. ツールに適切なコンテキストを提供する。Mantis はコミット履歴とコードを自動的に分析してドキュメントを独自に作成することができますが、人間によってキュレートされた知識を得ることで、結果の品質が大幅に向上することがよくあります。たとえば、プログラムをクラッシュさせるようなバグの修正に時間を取られないようにするには、スキャン パイプラインでそうしたバグを確実に検出できるよう、人間によってキュレートされた知識を提供することが非常に重要になります。

  2. 脆弱性受け入れ基準を使用してサイバー サンドボックスを構築する。明確な脆弱性再現基準に基づいて脆弱性を再現できる安全なサンドボックス環境を使用すると、知るべきことのみを明らかにし、修正が正しいことを確認することが容易になります。

Mantis について詳しくは、こちらをご覧ください。

- Google、スタッフ セキュリティ エンジニア、Nick Galloway

- Google、シニア スタッフ セキュリティ エンジニア、Yulong Zhang

Uber がクラウド移行を妨げることなくネットワークの信頼性を向上させた方法

詳細を表示

※この投稿は米国時間 2026 年 8 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。

Uber には、サービスを展開している都市との共通点が数多くあります。どちらも常に変化と成長を続けており、混雑や無秩序な拡大を防ぐために、それに伴うトラフィックを慎重に管理する必要があります。

Uber は、拡大するネットワークを管理するために技術戦略を絶えず進化させてきました。こうした綿密な計画と継続的な進化が、プラットフォーム全体のアプリケーション トラフィックの円滑な運用を支えています。最終的には、いつでもシームレスに動作する信頼性の高い大規模なプラットフォームを維持することが、ユーザーの信頼を維持する鍵となります。

この取り組みにおける重要なソリューションの一つが、Cloud Interconnect 上の Application Awareness です。ハイブリッド ネットワーク全体でアプリケーションの優先順位付けを行う業界初のツールである Cloud Interconnect 上の Application Awareness は、Uber が重要なトラフィックを優先し、ネットワークの輻輳が発生した場合でもビジネスの継続性を確保するのに役立っています。

Uber は、Cloud Interconnect 上の Application Awareness の初期設計パートナーとして、この機能が Uber のグローバル規模の運用ニーズを満たすものとなるよう貢献しました。これにより、Uber の日々の業務が改善されただけでなく、切り替え時のサービス中断のリスクを抑えられるという確信を得たことで、Google Cloud への移行を自信を持って進められるようになりました。

この投稿では、Uber が最も求めていた機能とその理由、Cloud Interconnect 上の Application Awareness の内部の仕組み、そしてそれが他の組織にもどのように役立つかについて説明します。

重要なトラフィックの優先順位付け

分散型、ハイブリッド、またはマルチクラウドのアプリケーションをグローバル規模で移行する場合、ネットワークの信頼性が最大の懸念事項となります。どんなに意義のある移行であっても、稼働中のサービスを中断させてしまうようでは、その価値は損なわれてしまいます。Uber のような組織にとって、台頭する AI ユースケースを含む大規模なデータ分析ワークロードを支えるための膨大なデータ転送は、ネットワーク リンクを飽和状態にし、重要なアプリケーション トラフィックの信頼性を損なうリスクを招きかねません。

標準的なクラウド接続手法では、企業は通常、膨大なインフラストラクチャのニーズを満たすために、単純に帯域幅をオーバープロビジョニングするという方法をとります。しかし、昨今のハイブリッド クラウドの需要と、Uber のような組織の規模を考えると、ピーク時の使用量に合わせてネットワーク容量をオーバープロビジョニングすることは、費用がかかりすぎるうえ、信頼性も低い場合があります。

最先端の AI イノベーションを統合すると、オーバープロビジョニングの欠点がさらに拡大します。Uber は、ネットワークを混雑させることなく、ビジネス クリティカルなアプリケーションのパフォーマンスを保護しながら、大量のデータ転送に対応できるシステムを必要としています。

Cloud Interconnect の Application Awareness が備える 4 つの主要機能(トラフィック処理、輻輳対応、レイテンシ管理、コスト効率)を活用することで、Uber は最新の技術スタックに不可欠なネットワークの最適化を実現しました。

<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 alt="aai concept value prop with_without picture" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/aai_concept_value_prop_with_without_pictur.max-1000x1000.jpg" />
    
    </a>
  
</figure>


  </div>
</div>

Uber は限定公開プレビューの段階からこの機能の導入を開始しました。まずはアリゾナ州フェニックスとバージニア州アッシュバーンの Google Cloud Interconnect から着手し、その後インフラ全体へと展開を広げました。Cloud Interconnect 上の Application Awareness により、Uber は DSCP マーキングや構成済みのキューイング プロファイルを活用して、エンドユーザーのアプリケーション トラフィックを分類し、緊急性の低いデータよりも優先的に処理できるようになります。

次の表では、Cloud Interconnect 上の Application Awareness の 4 つの主な機能、従来の方式との違い、そして Uber のような組織の運用継続性の向上にどのように役立つかについて説明しています。

機能

標準的な接続ソリューション

Cloud Interconnect 上の Application Awareness

トラフィックの処理

すべてのトラフィックが平等に扱われる(先入れ先出し)

トラフィックを 6 つの異なるトラフィック クラスに分類

輻輳対応

バースト時に優先度の高いアプリケーション トラフィックがドロップされる可能性がある

ビジネス クリティカルなトラフィックは、厳密な優先度ポリシーまたは帯域幅共有ポリシーによって保護される

レイテンシ管理

優先度の高いアプリケーションのレイテンシが予測不能

時間的制約のあるワークロードに対して、予測可能かつ一貫した低レイテンシを実現

コスト効率

ピークを吸収するために高額なオーバープロビジョニングが必要

効率的な帯域幅利用と TCO の削減

Uber の事例の要点

Uber にとって、Cloud Interconnect 上の Application Awareness を導入し、ネットワーク上のビジネス クリティカルなトラフィックに優先順位を付けられることの価値は、すぐに目に見える形で現れました。この取り組みを通じて、Uber は、同様のハイブリッド クラウドの課題を抱える他の企業が再現できるブループリントも作成しました。このブループリントの主要な要素は次のとおりです。

  • ビジネス継続性の確保: Uber は、トラフィック量の多い大規模なイベントが発生した際に、優先すべきアプリケーション トラフィックをリアルタイムに決定できます。これにより、計画的か不測の事態かを問わず、極端な負荷が発生するような状況下でも、ミッション クリティカルなアプリケーションの稼働を維持できます。Uber の経営陣は、Cloud Interconnect 上の Application Awareness はグローバルな事業運営に重要であると述べています。

  • 帯域幅の効率的な利用: 輻輳を防ぐために帯域幅を盲目的にオーバープロビジョニングするのではなく、Application Awareness により、Uber は予想されるネットワーク帯域幅のニーズに合わせて、既存の Cloud Interconnect 容量をより有効に活用できるようになりました。その結果、ネットワーク インフラストラクチャの総所有コストが削減されています。

  • ワークロード移行の障害を排除: 重要なアプリケーションをネットワークの輻輳から保護することで、Uber は重要なワークロードを Google Cloud に移行し、その過程で運用上のオーバーヘッドを大幅に削減できました。

「Cloud Interconnect 上の Application Awareness は、より戦略的なワークロードの Google Cloud 移行を実現する鍵となりました。世界規模で需要が急増する際にも、サービスの信頼性を維持するうえで不可欠な役割を果たしています。トラフィックにインテリジェントに優先順位を付けることで、優先度の高いサービスを保護し、インフラストラクチャの効率を高め、総所有コストを削減できます。これは単なる機能の導入にとどまりません。当社のビジネスに不可欠なソリューションを共に創り上げた、両社の深いエンジニアリング パートナーシップの賜物です。」– Uber、エンジニアリング ディレクター、Harry Liu 氏

AI とそれ以外のネットワークの信頼性を確保

クラウドベースの AI モデル、分散アプリケーション、データ分析を統合する企業が増えるにつれ、それに伴う大量のデータ転送に対応する準備を整えることが、ビジネス上の必須事項となっています。しかし、その一方で、重要なアプリケーションの信頼性を決して損なわないようにする必要もあります。

Uber は、Cloud Interconnect 上の Application Awareness を使用することで、ビジネス クリティカルなトラフィックを保護するために単に帯域幅をオーバープロビジョニングするのではなく、最新のハイブリッド クラウド戦略やマルチクラウド戦略を採用するために必要な安定性を構築することが不可欠なステップであることを実証しました。

Cloud Interconnect が組織にもたらすメリットについて詳しくは、さまざまな業界における Cloud Interconnect の可能性に関するブログをご覧ください。さらに詳しく知りたい場合は、Google のネットワーキングと業界のエキスパートがサポートいたします。

- Uber、上級エンジニア、Jean He 氏

- Google Cloud、プリンシパル アーキテクト、Gopinath Balakrishnan

Google Cloud Blog (AI & ML)

How KDDI built Buffmee, a faster, reliable consumer RAG app

詳細を表示

When building consumer-facing generative AI applications,  balancing high generation quality with fast response times across diverse media types, can be challenging. KDDI, a major telecommunications carrier in Japan, tackled this challenge head-on when they developed Buffmee, their consumer Retrieval-Augmented Generation (RAG) app.  

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 points, and explore personalized learning and hobby interests. By citing sources, Buffmee alleviates concerns about information reliability, allowing users to safely deepen their knowledge.

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, and they needed a reliable way to ensure hallucination-free results.

<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 alt="image1" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_9ZYjQgt.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>Buffmee App Description and Images</p></figcaption>
  
</figure>


  </div>
</div>

To meet these performance targets, organizations need a systematic approach to AI evaluation and real-time bottleneck identification. That is why we are sharing the automated evaluation framework and performance optimization techniques that helped KDDI successfully launch their application. 

The results were inspiring: KDDI reduced total application response latency by 38%, successfully hitting their target response performance. They also achieved a nearly 18% improvement in TTFT.

"Our vision hinged on a platform where content, once ingested, would instantly function as a working RAG system. Google's careful, hands-on guidance made that a reality — we're sincerely grateful for their support." — Shunya Onoda, AI Product Department, KDDI.

With these performance and accuracy improvements, Buffmee now empowers users to safely explore their favorite media through interactive Q&A and deep-dive analysis, delivering a highly personalized experience while maintaining strict trust and compliance for content providers.

Let’s deep dive into how they achieved these results. 

Establish automated evaluation for diverse content

Traditional manual testing requires immense effort and cannot scale to accommodate a large content library. To solve this, the development team designed a systematic AI evaluation process using Gemini Enterprise Agent Platform Evaluation Service.

By implementing automated evaluation frameworks like LLM-as-a-Judge and the Rule of Hundreds, the team replaced labor-intensive manual testing with a data-driven process. They ingested their extensive document corpus, constructed hundreds of automated evaluation tests, and built a comprehensive benchmark dataset to measure the reliability of answers for each use case. As a result, the team improved their groundedness scores by 25%, helping deliver highly accurate and reliable outputs.

<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 alt="image2" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_R5gWUyX.max-1000x1000.png" />
    
    </a>
  
    <figcaption class="article-image__caption "><p>KDDI's automated evaluation loop: AI generates questions and scores answers, while humans calibrate thresholds and analyze edge-case failures.</p></figcaption>
  
</figure>


  </div>
</div>

Identify bottlenecks and optimize performance with an agentic loop

To improve response speeds, the team implemented BigQuery Agent Analytics and the Agent Development Kit (ADK) log analysis agent. By analyzing actual production logs, they visualized how skill division and prompt bloat—especially with highly complex, multi-page system prompts — impacted the Time To First Token (TTFT).

The team optimized the system prompt, including the inline integration of skills, and reviewed the sub-agent routing. This allowed them to identify and resolve deep-stack bottlenecks in real time without sacrificing response accuracy.

Four core principles for reliable evaluation 

To achieve these results, the team implemented four core technical practices:

  1. Transitioning to binary evaluation: By selectively moving away from ambiguous 1–5 ratings to a binary "pass (1) / fail (0)" system for critical metrics, the team minimized variance and noise, helping improve automation accuracy.

  2. Strategic content sampling: Rather than attempting to evaluate every single document, the team classified their entire corpus along a two-dimensional grid: File Format (Web articles, EPUBs, PDFs, structured data) and Media Composition (Text-heavy, image-heavy, or mixed). By selecting representative samples from each cell of this difficulty grid, they reduced the evaluation workload by 75% while maintaining comprehensive test coverage.

  3. Thresholds grounded in product judgment: Instead of relying solely on default tool parameters, the product owner reviewed randomly sampled answers alongside their automated scores to calibrate and establish what "good enough to ship" actually meant for the user experience.

  4. Modular splitting of massive prompts into ADK Skills: Because massive system prompts exceeding 800 lines can cause LLM attention drift and latency degradation, the team split prompts by function into Agent Development Kit (ADK) Skills, dynamically loading only the required logic to optimize response times.

Get started

Building scalable, reliable generative AI applications requires both automated evaluation and deep performance analytics. To apply these techniques to your own applications: