2026年7月16日

「AI 塾講師システム」を                Gemini Live API × ADK で開発してみた


Content

今回、Google のリアルタイム音声 AI であるGemini Live API(モデル: gemini-3.1-flash-live-preview)を使い、生徒と音声でリアルタイムに対話しながら数学の学習を支援する「AI 塾講師システム」を開発しました。

Gemini Live API の特徴は、テキストのやり取りだけではなく、人間同士の会話のように低遅延で音声を双方向にストリーミングできる点です。言い間違いや相槌にも自然に反応し、会話の流れを途切れさせない対話を実現します。

しかし、API に直接接続するだけでは、実際の授業に必要な「画像を生成する」「接続が途切れても再開できる」「正確な回答をする」といった動作を実現できませんでした。
そこで取り入れたのが ADK(Agent Development Kit)です。ADK は AI に外部のツールを使わせるためのフレームワーク(ライブラリ)で、バックエンドに組み込むことで AI の能力を大きく拡張できます。

本記事では、開発の過程で直面した課題と、それを解決するために採った設計上の工夫を紹介します。

まず、実際に動作している様子(動画)と利用方法(画像)をご覧ください。


実際に動作している様子


利用方法


動画いかがでしたか。実際に遅延なく人間と対話できているかのような会話が実現できていたと思います。

直面した3つの課題

開発初期は、ブラウザから直接 Gemini Live API に接続し、音声で対話できる状態を構築することから始めました。この段階自体は比較的スムーズに実現できましたが、実用的なシステムを目指すにあたって 3 つの課題が浮かび上がりました。

言語だけでは表現に限界がある

音声だけでは視覚的な情報がわからず、画像を生成する手段がありませんでした。「画像を生成してください」と伝えても画像を生成することはできず、視覚的に伝わりにくい場面がありました。

Gemini 側の接続が切れると会話がリセットされる

Gemini Live API はセッションの持続時間に上限があり、長時間の会話や通信の瞬断で接続が切れることがあります。バックエンドが無く Gemini Live API に直接接続している構成では、切断と同時に会話の文脈がすべて失われ、最初からやり直しになってしまいます。

誤った情報を断言するリスク

生成 AI には「ハルシネーション」の問題があります。外部情報を参照する手段がない状態では、AI が学習データのみを根拠に誤った情報を自信を持って回答するリスクを排除できませんでした。

ADK との連携で変わったこと

これらの課題を解消したのが、 ADK との連携です。ADK とは「AI が外部ツールを呼び出すための仕組み」で、AI が外部のツールを「いつ・何を使うか」を自律的に判断して呼びだします。
ADK をバックエンドに組み込むことで、Gemini Live API は会話を行いながら、状況に応じて外部ツールを自律的に判断し、使用できます。フロントエンドと Gemini Live API の間にバックエンドを挟み、そこにADKを組み込むことで、単なる音声対話に留まらない処理を AI 自身の判断で実行できます。

画像生成モデルとの連携(課題①への対応)

「図を描いて説明してほしい」「画像を生成してほしい」というリクエストに対し、AI が Google の画像生成モデル「Imagen 4」を自律的に呼び出し、生成した図をチャット画面に表示できる仕組みを実装しました。音声による解説と画像が同期することで、対話の表現力が大幅に向上しました。

セッションの永続化(課題②への対応)

ブラウザから Gemini Live API へ直接接続する構成では、ユーザーの回線が途切れた瞬間に AI との接続も切断され、会話の文脈がすべてリセットされてしまいます。
今回はバックエンドに Cloud Run を中継として挟むことで、接続を「ブラウザ〜バックエンド」と
「バックエンド〜Gemini」の 2 段階に分離しました(次セクションにて詳しい構成図を載せております)。
これにより、ユーザー側の回線が一時的に切断されても、バックエンドと Gemini の接続は維持されます。ユーザーが再接続した際には、Gemini のセッションをそのまま引き継げるため、会話が途切れることなく続けられます。また、会話ログは Firestore にリアルタイムで保存しているため、以前の文脈から対話を再開できます。

Google 検索による情報精度の担保(課題③への対応)

Google Search API を利用し Google 検索ツールを ADK 経由で組み込むことで、AI が「自身の学習データで回答できるか、外部情報を参照すべきか」を自律的に判断できるようになりました。不確かな情報については検索を実行することで、ハルシネーションのリスクを大幅に低減できました。

システムの全体像

システムは大きく①~④の層で構成されています。

ユーザーが操作する画面(App Engine)

React で構築したフロントエンドを Google App Engine 上に配置しています。ユーザーの音声・テキストの送受信と、AI からの返答表示を担います。

システムの中核となる中継サーバー(Cloud Run)

Python / FastAPI で構築したバックエンドを Cloud Run 上で動かしています。このバックエンドの中に ADK を組み込み、AI の動きを制御するための処理をここで一括して担っています。
フロントエンドと Gemini Live API の間に立って以下を担います

  • 会話の文脈に応じて Google Search API・Imagen 4 などの外部ツールをAIが使えるよう ADK 経由で管理
  • ネットワーク瞬断時の自動再接続処理

フロントエンドとバックエンドは WebSocket で常時接続しており、音声・テキスト・ツール実行結果がリアルタイムで行き来します。

AIの音声対話エンジン(Gemini Live API)

Google の最新モデル「Gemini 3.1 Flash Live Preview」をリアルタイム音声対話用に呼び出しています。通常のテキスト API(質問して回答を受け取る一往復のやり取り)と異なり、ストリーミングで音声を送受信できるのが特徴で、人間と話しているような低遅延の対話を実現します。
ADK を介してツールの呼び出しを管理することで、AI が会話の流れを判断しながら外部ツールを自律的に使い分けられるようになっています。

会話履歴の保存(Firestore)

対話の内容は Firestore にリアルタイムで保存されます。接続が切れた場合や次回起動時にも、以前の会話の文脈からそのまま再開できます。

開発で工夫した2つのポイント

開発で特に試行錯誤が多かった工夫を 2 点紹介します。

工夫①

接続エラー時の自動復旧設計

Gemini Live API との接続でエラーが発生した際、初期の設計ではユーザーとの接続ごと切断していました。これを改善し、ユーザーとの接続を維持したまま、バックエンド側だけで自動的に再接続する設計に変更しました。ユーザーが接続の切断を意識することなく、対話を継続できるようになっています。

工夫②

文字起こしの品質向上:言い淀みの除去と AI による清書

音声対話の文字起こしをそのまま表示すると、「えーと」「あのー」といった言い淀みが大量に含まれ、チャット画面が読みにくい状態でした。
そこでフロントエンドではリアルタイムに言い淀みを除去しつつ、Gemini が回答を返している間に、バックエンドが非同期でユーザーの発言内容を推測・清書したテキストを生成し、画面上の表示を自動的に上書きするようにしました。会話の流れを止めることなく、整理された文字起こしを表示できるようになっています。

まとめ

本システムの開発を通じて、Gemini Live API と ADK を組み合わせることで、AI を単純な会話ツールから実用的なエージェントへと引き上げられることが確認できました。
今回は「AI 塾講師」というかたちで実装しましたが、「音声で話しながら外部ツールを呼び出す」というこの構成自体は、用途を問わず応用できるものです。
Gemini Live API と ADK の組み合わせが、AI を実用的なシステムとして展開したいと考えている方の参考になれば幸いです。

システムサポートでは、Google Cloudの導入や活用を支援しております。

Google Cloudを導入したい・導入したけど使いこなせていない…という方は、お気軽にご相談ください!

Google Cloud 導入・活動支援に関するご相談はこちら

2026年7月16日 「AI 塾講師システム」を                Gemini Live API × ADK で開発してみた

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら