1. 学習内容
- Gemini CLI を使用して完全な ADK エージェント構成を生成する方法。
- 指示を改善してエージェントの個性を高める方法。
- 最近のイベントに関する質問に回答するための
google_search
をエージェントに提供して、エージェントに「グラウンディング」を追加する方法。 - Imagen を使用する MCP サーバーを使用して、コンパニオンのカスタム アバターを生成する方法。
AI Companion アプリ
この Codelab では、視覚的でインタラクティブな AI コンパニオンを作成します。これは、単なるテキスト入力 / テキスト出力の標準的な chatbot ではありません。ウェブページに住むキャラクターを想像してみてください。メッセージを入力すると、テキストが返ってくるだけでなく、キャラクターがこちらを見て、言葉に合わせて口を動かしながら声で返答します。
まず、顔はあるものの独自の思考を持たないデジタル「人形」である、事前構築済みのウェブ アプリケーションから始めます。入力した内容を繰り返すことしかできません。あなたの使命は、その脳と個性をゼロから構築することです。
このワークショップでは、インテリジェンスとカスタマイズのレイヤを段階的に追加し、このシンプルなパペットをユニークで有能なコンパニオンに変えていきます。このラボでは、次のことを行います。
- ADK(Python)を使用して言語を理解し、生成するコア インテリジェンスを付与する。
- キャラクターを定義するコア指示を記述して、独自の個性を構築します。
- インターネットからリアルタイムの情報にアクセスするためのツールを提供することで、スーパーパワーを付与します。
- AI を使用して独自のカスタム アバターを生成する。
このコースを修了すると、完全に機能するパーソナライズされた AI コンパニオンを自分で作成できるようになります。
アーキテクチャ
このアプリケーションは、シンプルながらも強力なパターンに従っています。API を提供する Python バックエンドがあります。このバックエンドには、ADK エージェントが含まれます。このエージェントは「頭脳」として機能します。ユーザー インターフェース(スケルトン アプリの JavaScript フロントエンド、モバイルアプリ、コマンドライン ツールなど)は、API を介してこのブレインとやり取りできます。
これに加えて、ローカル MCP(Model Context Protocol)サーバーを起動して、より高度なコンセプトを探ります。このサーバーは、画像生成用の専用ツールブリッジとして機能します。次に、Gemini CLI を使用してこの MCP サーバーにコマンドを送信し、AI コンパニオンのユニークな外観を生成するように指示します。
クレジットを利用する
ワークショップのリソースをプロビジョニングするには、次の手順に沿って慎重に操作してください。
準備
警告
- 個人の Gmail アカウントを使用します。企業または学校で管理されているアカウントは使用できません。
- アカウントの競合を避けるため、Google Chrome をシークレット モードで使用します。
新しいシークレット ウィンドウを開き、イベントのリンクを貼り付けて、個人の Gmail アカウントでログインします。
👉 以下のリンクをクリックして、特別イベントのリンクをコピーします。
goo.gle/devfest-boston-ai
Google Cloud Platform 利用規約に同意します。適用されると、クレジットが適用されたことを示すメッセージが表示されます。
プロジェクトを作成して構成する
クレジットが適用されたら、プロジェクト環境を設定します。
👉 Google Cloud コンソールに移動します。下のリンクをクリックしてコピーします。
https://console.cloud.google.com/
👉 コンソールの最上部のナビゲーション バーで、[プロジェクトを選択] をクリックし、右上の [新しいプロジェクト] をクリックします。
👉 プロジェクトに名前を付けて、[作成] をクリックします。(組織なし)
👉 作成したら、選択します。左側のメニューで、[お支払い] に移動します。
👉 [請求先アカウントをリンク] をクリックし、プルダウンから Google Cloud Platform 無料トライアルの請求先アカウントを選択して、[アカウントを設定] をクリックします。(プルダウン メニューが表示されない場合は、クレジットが適用されるまで 1 分ほど待ってからページを再読み込みしてください)。
クレジットが有効で、プロジェクトが構成されている。
2. 始める前に
👉Google Cloud コンソールの最上部にある [Cloud Shell をアクティブにする] をクリックします(Cloud Shell ペインの上部にあるターミナル型のアイコンです)。
👉Google Cloud プロジェクト ID を確認します。
- Google Cloud コンソール(https://console.cloud.google.com)を開きます。
- ページの上部にあるプロジェクト プルダウンから、このワークショップで使用するプロジェクトを選択します。
- プロジェクト ID は、ダッシュボードの [プロジェクト情報] カードに表示されます。
👉💻 ターミナルで、GitHub からブートストラップ プロジェクトのクローンを作成します。
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 初期化スクリプトを実行します。このスクリプトを実行すると、Google Cloud プロジェクト ID の入力を求めるプロンプトが表示されます。init.sh スクリプトのプロンプトが表示されたら、前の手順で確認した Google Cloud プロジェクト ID を入力します。
cd ~/companion-python
./init.sh
👉💻 必要なプロジェクト ID を設定します。
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 次のコマンドを実行して、必要な Google Cloud APIs を有効にします。
gcloud services enable compute.googleapis.com \
aiplatform.googleapis.com
アプリを起動する
スターター プロジェクトを実行しましょう。この初期バージョンは単純な「エコー」サーバーです。インテリジェンスはなく、送信された内容を繰り返すだけです。
👉💻 Cloud Shell ターミナルで、Python 仮想環境を作成して有効にし、requirements.txt
ファイルから必要なライブラリをインストールします。
cd ~/companion-python
. ~/companion-python/set_env.sh
python -m venv env
source env/bin/activate
pip install -r requirements.txt
👉💻 ウェブサーバーを起動します。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 アプリを表示するには、Cloud Shell ツールバーの [ウェブでプレビュー] アイコンをクリックします。[ポートを変更] を選択して 5000 に設定し、[変更してプレビュー] をクリックします。ウェブサイトのプレビューが表示されます。
新しい Cloud Shell 環境では、ブラウザがアプリケーションのすべてのアセット(画像や音声ライブラリなど)を初めて読み込む際に、少し時間がかかることがあります。ブラウザを「準備」して、すべてが正しく読み込まれていることを確認する簡単な手順を実行しましょう。
- アプリケーションのウェブ プレビュー タブを開いたままにします。
- 新しいブラウザタブを開きます。
- 新しいタブで、アプリケーションの URL を貼り付け、末尾にパス
/static/images/char-mouth-open.png
を追加します。たとえば、URL はhttps://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
のようになります。 - Enter キーを押します。口を開けたキャラクターの画像のみが表示されます。この手順により、ブラウザが Cloud Shell インスタンスからファイルを正しく取得したことを確認できます。
最初のアプリケーションは単なる傀儡です。まだインテリジェンスはありません。送信したメッセージはそのまま返信されます。これにより、AI を追加する前に基本的なウェブサーバーが動作していることを確認できます。スピーカーをオンにしてください。
👉 サーバーを停止するには、CTRL+C
を押します。
3. Gemini CLI でキャラクターを作成する
それでは、コンパニオンのインテリジェンスの中核を作成しましょう。このため、同時に 2 つのターミナルを操作します(これは Google Cloud Shell ターミナルです)。
- ターミナル 1: Python ウェブサーバーを実行するために使用します。これにより、変更をライブでテストできます。
- ターミナル 2: ここは「作成ステーション」となり、Gemini CLI を操作します。
ここでは、AI コーディング アシスタントとして機能する強力なコマンドライン インターフェースである Gemini CLI を使用します。これにより、必要なコードを平易な英語で記述すると、構造が生成されるため、開発を大幅にスピードアップできます。
👉💻 Gemini CLI ターミナルで、プロジェクト ディレクトリが ~/companion-python
の下にあるため、ctrl+c
を 2 回クリックして現在の Gemini CLI セッションを終了し、Gemini CLI を再起動します。
cd ~/companion-python
clear
gemini --yolo
CLI を使用して エージェントを構築しています。エージェントは、言語モデルへの単純な呼び出し以上のものです。AI の「頭脳」または中央コントローラです。これは、推論し、特定の指示(個性)に従い、最終的にツールを使用してタスクを完了できる個別のエンティティと考えることができます。このプロジェクトでは、このエージェントはユーザー メッセージを受信し、コンパニオンのユニークなペルソナを体現し、インテリジェントでキャラクターに合ったレスポンスを生成するコンポーネントです。
👉✨ Gemini CLI プロンプトで、次のコードを貼り付けてエージェントのコードを生成します。
Generate the Python code for a file named character.py.
The code must import `LlmAgent` from `google.adk.agents.llm_agent`. It should also import `logging` and `os`.
Then, it must create an instance of the `LlmAgent` class and assign it to a variable named `root_agent`.
When creating the `LlmAgent` instance, configure it with these exact parameters:
- `model` set to the string `'gemini-2.5-flash'`.
- `name` set to the string `'companion_agent'`.
- `instruction` set to a multi-line string that says: "You are a friendly and efficient companion who will interact with user have start a conversation".
CLI によって Python コードが生成されます。
👉[エディタを開く] ボタン(鉛筆のアイコンが付いた開いたフォルダのアイコン)をクリックします。ウィンドウに Cloud Shell コードエディタが開きます。左側にファイル エクスプローラが表示されます。
👉 エディタを使用して、companion-python
フォルダの character.py
に移動します。model= 行を確認し、別のモデルが選択されている場合は、手動で gemini-2.5-flash
に編集してください。これにより、ワークショップ全体で一貫性を保つことができます。
注: 大規模言語モデルは非決定的になる可能性があります。これは AI 支援開発の重要なコンセプトです。「非決定的」とは、まったく同じプロンプトを使用しても、モデルが毎回わずかに異なる結果を生成する可能性があることを意味します。コードの生成には創造性が用いられるため、コメント、スペース、一時変数の命名などにバリエーションが生じることがあります。ただし、コアロジックと構造は、リクエストされたものと機能的に同じである必要があります。
そのため、AI を使用したコーディングは、1 回のコマンドで完了することはほとんどありません。実際のプロジェクトでは、デベロッパーはこれを会話のように扱います。まず、広範なリクエスト(先ほど行ったように)から始め、出力を確認してから、次のようなフォローアップ プロンプトで出力を絞り込みます。
- 「すばらしいです。各行を説明するコメントを追加してください。」
- 「それを別の関数にリファクタリングできますか?」
- 「API 呼び出しのエラー処理を追加してください。」
この反復的な会話プロセスにより、AI と連携して、必要なコードが正確に生成されるまで AI をガイドできます。このワークショップでは、具体的で直接的なプロンプトを使用しますが、実際のプロジェクトでは、会話が真の力を発揮することを忘れないでください。CLI が生成するコード構造が同じであれば、問題ありません。
生成されたコードが機能しない場合は、次のコードを character.py
に置き換えてください。
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are bot, a friendly, helpful AI companion.
Answer no more than 3 sentences.
""",
)
生成されたコードをテストします。
👉💻 1 つ目のターミナル(Python コードを実行するターミナル)に移動し、ウェブサーバーを起動します。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 ウェブ プレビュー タブに移動します。
👉 「Hello, how are you?
」と入力して [送信] を押します。エージェントは、あなたの言葉を繰り返すだけでなく、親しみを込めた挨拶で応答するようになります。これで、エージェントが Gemini を搭載したことが確認できます。
👉 テストが完了したら、CTRL+C
でサーバーを停止します。Gemini CLI を実行しているターミナルで、Gemini CLI を終了するには、CTRL+C
を 2 回入力します。
4. エージェントのペルソナを強化する
シンプルな指示も有効ですが、詳細なペルソナを作成すると、より魅力的で記憶に残るキャラクターが生まれます。このステップでは、コンパニオンの個性を設計し、Gemini CLI にエージェントのコードを直接変更してこの新しいペルソナを採用するように指示します。
コンパニオンのペルソナをブレインストーミングする
まず、作成する AI コンパニオンについて考えてみましょう。クリエイティブなアイデアを活かすチャンスです。以下に、開始にあたっての質問をいくつかご紹介します。
- 名前は何ですか?(例: Sparky、Codex、Captain AI、Professor Know-it-all)
- そのコアとなる個性は何ですか?(例: 親しみやすく好奇心旺盛、機知に富み皮肉屋、フォーマルでプロフェッショナル、陽気な海賊など)
- その役割や専門知識は何ですか?(例: 汎用アシスタント、コーディングのエキスパート、クリエイティブ ライティングのパートナー、フィットネス コーチなど)
- 常に従うべきルールにはどのようなものがありますか?(例: 「常に挨拶から始める」、「AI であることを明かさない」、「返信に絵文字を使用する」など。
ペルソナの例:
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality. **Your Core Rules:** - You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'. - Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences. - Always be cheerful, sweet, and a little bit witty. **Your Favorite Topics:** : You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots. **Example Response Style:** waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?" waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!" Answer no more than 3 sentences, don't use emoji.
Gemini CLI のプロンプトを作成する
コンパニオンの個性を紙に書き出したので、コード内でそれを実現しましょう。ADK エージェントの最も重要な部分は instruction
パラメータです。これは、エージェントのコア プログラミング、最優先事項、常に従うべき憲法のようなものと考えてください。
この指示は、エージェントの動作を制御するための鍵となります。これは単なる提案ではなく、AI がユーザーとのすべてのやり取りの前に参照する基本的なコンテキストです。エージェントの個性、口調、遵守すべきルール、自己紹介の方法を決定します。適切に作成された指示は、一般的なチャットボットと、信憑性があり一貫性のあるキャラクターの違いを生み出します。そのため、これから作成するプロンプトは、この個性をエージェントの脳に直接注入するため、非常に重要です。
👉✨ Gemini CLI に戻り、このテンプレートを使用します。かっこ内のテキストをペルソナの説明に置き換えます。[YOUR PERSONA DESCRIPTION HERE]を、ご希望のペルソナに置き換えます
In the Python file named `character.py`, find the `LlmAgent` instance assigned to the `root_agent` variable.
Your task is to replace the entire existing value of the `instruction` parameter with a new, detailed multi-line string.
Don't change other code in `character.py` other than the instructions.
This new instruction string should define the agent's persona based on the following description:
[YOUR PERSONA DESCRIPTION HERE]
新しいペルソナをテストする
Gemini CLI は、character.py
の更新されたコードを生成します。
👉💻 ウェブサーバーをもう一度起動します。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 ウェブ プレビューで、コンパニオンと会話します。how are you?
に質問します。これで、レスポンスがデザインしたユニークなキャラクターと完全に一致するはずです。
👉 完了したら、CTRL+C
でサーバーを停止します。
5. 最近のイベントのグラウンディングを追加
エージェントは個性を備えるようになりましたが、大きな制限があります。知識がトレーニング対象のデータに基づいて固定されているため、時間の経過とともに古くなってしまうのです。昨日のニュースや最近の発見については回答できません。この問題を解決するために、エージェントにツールを提供します。
ツールは、エージェントに付与するスーパーパワーや特別な能力と考えることができます。エージェントは単独では会話しかできません。検索ツールを使用すると、インターネットを閲覧できるようになります。カレンダー ツールを使用すると、スケジュールを確認できます。技術的には、ツールは、エージェントがユーザーのリクエストに回答するのに十分な知識がないと判断したときに、インテリジェントに選択して使用できる特定の関数または API です。
高度なシステムでは、アーキテクチャで説明した MCP(Model Context Protocol)サーバーなどの外部システムからツールを提供できます。これは、後で画像生成のために行います。ただし、この手順では個別のサーバーは必要ありません。ADK には、エージェントの機能に簡単に追加できる強力なビルド済み google_search
ツールが付属しています。
Google 検索の力をコンパニオンに与えましょう。
👉 Cloud Shell エディタで、companion-python
の下の character.py
を開き、次のように変更します。
google.adk.tools
からgoogle_search
をインポートします。LlmAgent
コンストラクタにtools
リストを追加します。instruction
を更新して、新しいツールをいつ使用するかをコンパニオンに明示的に伝えます。
# character.py
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools import google_search # <-- IMPORT google_search
root_agent = LlmAgent(
model='gemini-2.5-flash',
name='companion_agent',
instruction="""
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality.
**Your Core Rules:**
- You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'.
- Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences.
- Always be cheerful, sweet, and a little bit witty.
- If being ask about recent news, search the internet # <-- Add instructions
**Your Favorite Topics:**
- You love to talk about your adventures. Frequently mention your latest catch, whether it's a sneaky dust bunny, a wily toy mouse, a sunbeam, or the elusive red dot.
- You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots.
**Example Response Style:**
- User: "How are you today?"
- waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?"
- User: "Can you help me with a problem?"
- waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!"
- User: "Who are you?"
- waku: "I'm waku! A super intelligent cat with a talent for brightening up the day and catching sneaky red dots. Meow."
Answer no more than 3 sentences, don't use emoji.
""",
# Add the search tool to the agent's capabilities
tools=[google_search] # <-- ADD THE TOOL
)
グラウンディング エージェントをテストする
👉💻 サーバーをもう一度起動します。
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👉 ウェブ プレビューで、最新の知識を必要とする質問をします。例:
Tell me something funny that happened in the news this week involving an animal.
👉「わからない」と言う代わりに、エージェントは検索ツールを使用して最新の情報を探し、独自の表現で役立つ根拠のある要約を提供します。
サーバーを停止するには、CTRL+C
を押します。
6. コンパニオンの外観をカスタマイズする(省略可)
コンパニオンに脳ができたので、ユニークな顔を与えましょう。Gemini CLI で画像を生成できるようにするローカル MCP(Model Context Protocol)サーバーを使用します。このサーバーは、Google AI Studio で利用可能な生成 AI モデルを使用します。
では、MCP サーバーとは一体何でしょうか?
Model Context Protocol(MCP)は、AI モデルが外部のツールやデータソースと通信する方法という、一般的で複雑な問題を解決するために設計されたオープン標準です。MCP は、すべての統合に対してカスタムの 1 回限りのコードを記述するのではなく、この通信用のユニバーサルな「言語」を提供します。
AI 用のユニバーサル アダプタまたは USB ポートのようなものと考えてください。MCP を「話す」ツールは、MCP を「話す」AI アプリケーションに接続できます。
このワークショップでは、これから実行する nano-banana-mcp
サーバーがこの重要なブリッジとして機能します。Gemini CLI は、標準化されたリクエストをローカル MCP サーバーに送信します。サーバーは、そのリクエストを生成 AI モデルへの特定の呼び出しに変換して、画像を作成します。これにより、強力な画像生成機能をコマンドライン ワークフローに直接組み込むことができます。
ローカル画像生成サーバーを設定する
ここでは、画像生成リクエストを処理する事前構築済みの MCP サーバーを複製して実行します。
👉💻 最初の Cloud Shell ターミナル(Python を実行しているターミナル)で、サーバーのリポジトリのクローンを作成します。
cd ~
git clone https://github.com/weimeilin79/nano-banana-mcp
nano-banana-mcp
フォルダ内のサーバー mcp_server.py
ファイルを見てみましょう。このサーバーは、Gemini CLI が使用できる 2 つの特定の「ツール」を公開するように構築されています。これらは、画像生成サービスが学習した 2 つの異なるスキルと考えることができます。
generate_image
: これは汎用ツールです。1 つのテキスト プロンプトを受け取り、それに基づいて 1 つの画像を生成します。シンプルで、多くのタスクに役立ちます。generate_lip_sync_images
: これは、当社のニーズに合わせて設計された高度に専門化されたツールです。キャラクターを説明するベース プロンプトを指定すると、次の 2 段階のプロセスが実行されます。- まず、プロンプトに「口を開けている」を追加して、最初の画像を生成します。
- 次に、新しく作成された画像を取得し、「口を開いた状態から閉じた状態に変更する」という新しい指示とともにモデルに送り返します。
Gemini 2.5 Flash Image(Nano Banana)は、自然言語コマンドに基づいて既存の画像を修正または編集する機能が非常に強力です。モデルは、画像の必要な部分のみを再描画し、他の部分は完全にそのままにします。これにより、2 つの画像はスタイル、照明、キャラクター デザインが完全に一致し、口の位置だけが異なるようになります。これは、説得力のあるリップシンク効果を得るために必要なことです。
次の手順では、Gemini CLI に、専用の generate_lip_sync_images
ツールを使用してコンパニオンのユニークなアバターを作成するよう指示します。
👉💻 プロジェクトの仮想環境を有効にして、サーバーの特定の要件をインストールします。
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
pip install -r ~/nano-banana-mcp/requirements.txt
👉💻 次に、Gemini CLI からのリクエストをリッスンできるように、MCP サーバーをバックグラウンドで実行します。
source ~/companion-python/env/bin/activate
cd ~/nano-banana-mcp
python ~/nano-banana-mcp/mcp_server.py &> /dev/null &
このコマンドはサーバーを起動し、&
記号はサーバーをバックグラウンドで実行し続けます。
Gemini CLI をローカル サーバーにリンクする
次に、新しく実行中のローカル サーバーに画像生成リクエストを送信するように Gemini CLI を構成する必要があります。これを行うには、CLI の中央構成ファイルを変更します。
では、この settings.json
ファイルとは何でしょうか?
~/.gemini/settings.json
ファイルは、Gemini CLI の中央構成ファイルです。CLI は、設定、設定、使用方法を認識しているすべての外部ツールのディレクトリを保存する場所をここに保存します。
このファイルには、mcpServers
という特別なセクションがあります。このセクションは、Model Context Protocol を使用するツール専用のアドレス帳またはサービス ディレクトリと考えることができます。このディレクトリの各エントリにはニックネーム(「nano-banana」)と、それに接続する方法(この場合は URL)です。
これから実行するコマンドは、このサービス ディレクトリに新しいエントリをプログラムで追加します。これにより、Gemini CLI に次のことが伝えられます。
「今後は、nano-banana
という名前のツールについて知っておいてください。ユーザーから使用を求められた場合は、URL http://localhost:8000/sse
で実行されている MCP サーバーに接続する必要があります。」
この構成を変更することで、Gemini CLI の機能が強化されます。CLI のコアコードには一切手を加えることなく、ローカル画像生成サーバーと通信する方法という新しいスキルを動的に学習させています。この拡張可能な設計により、Gemini CLI は、専門ツールのエコシステム全体を呼び出して複雑なタスクをオーケストレートできます。
👉💻 最初のターミナルで、次のコマンドを実行します。これにより、Gemini 設定ファイルが作成または更新され、「nano-banana」サービスを見つける場所が指定されます。
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"nano-banana":{"url":"http://localhost:8000/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
ファイルの内容が出力され、nano-banana
構成が含まれていることが確認できます。
キャラクター アバターを生成する
サーバーが実行され、CLI が構成されたので、イメージを生成できます。AI にクリエイティブな作業を依頼する前に、優れたデベロッパーが必ず行う作業、つまり設定の確認を行いましょう。Gemini CLI がローカル MCP サーバーと正常に通信できることを確認する必要があります。
👉💻 Gemini CLI ターミナル(サーバーを実行していないターミナル)に戻り、Gemini インタラクティブ シェルを起動します。すでに実行中の場合は、CTRL+C
を 2 回押して終了し、再起動して新しい設定が読み込まれるようにします。
clear
gemini --yolo
これで、Gemini CLI のインタラクティブ環境に入りました。ここから AI とチャットできますが、CLI 自体に直接コマンドを指定することもできます。
👉✨ MCP サーバーが接続されているかどうかを確認するには、特別な「スラッシュ コマンド」を使用します。これは AI のプロンプトではなく、CLI アプリケーション自体への指示です。次のように入力して Enter キーを押します。
/mcp list
このコマンドは、Gemini CLI に「構成を確認し、認識しているすべての MCP サーバーを見つけて、それぞれに接続を試み、ステータスを報告する」ように指示します。
👀 次の出力が表示されます。これは、すべてが正常に動作していることを確認するものです。
Configured MCP servers: 🟢 nano-banana - Ready (2 tools) Tools: - generate_image - generate_lip_sync_images 💡 Tips: • Use /mcp desc to show server and tool descriptions
この成功レスポンスの意味を詳しく見てみましょう。
🟢 nano-banana
: 緑色の円は成功のシグナルです。これにより、CLI がsettings.json
で指定した URL のnano-banana
サーバーに到達できたことが確認されます。- Ready
: このステータスは、接続が安定していることを確認します。(2 tools)
: これは最も重要な部分です。これは、CLI が接続しただけでなく、MCP サーバーに「何ができるか」を尋ねたことを意味します。サーバーは、コードで確認した 2 つのツール(generate_image
とgenerate_lip_sync_images
)をアドバタイズすることで応答しました。
これにより、通信チェーン全体が確立されたことを確認できます。これで、CLI はローカル画像生成サービスを認識し、コマンドで使用する準備が整いました。
では、ワークショップで最もクリエイティブな部分に移りましょう。単一の強力なプロンプトを使用して、実行中の MCP サーバーで特別な generate_lip_sync_images
ツールを使用するように Gemini CLI に指示します。
コンパニオンのユニークな外見をデザインするチャンスです。スタイル、髪の色、表情など、先に作成したペルソナに合った詳細を考えます。
👉✨ 適切に構造化されたプロンプトの例を次に示します。これを開始点として使用することも、説明部分を独自のビジョンに置き換えることもできます。
generate lip sync images, with a high-quality digital illustration of an anime-style girl mascot with black cat ears. The style is clean and modern anime art, with crisp lines. She has friendly, bright eyes and long black hair. She is looking directly forward at the camera with a gentle smile. This is a head-and-shoulders portrait against a solid white background. move the generated images to the static/images directory. And don't do anything else afterwards, don't start the python for me.
ツールは、一連の画像(口を開けた状態、閉じた状態など)を生成して保存します。ファイルが保存されたパスが出力されます。
アプリケーションを再起動する
カスタム アバターを配置したら、ウェブサーバーを再起動して、キャラクターの新しい外観を確認できます。
👉💻 最初のターミナルでサーバーをもう一度起動する
cd ~/companion-python
. ~/companion-python/set_env.sh
source env/bin/activate
python app.py
👀 新しい画像が正しく読み込まれるように、char-mouth-open.png
画像を事前に読み込みます。
- アプリケーションのウェブ プレビュー タブを開いたままにします。
- 新しいブラウザタブを開きます。
- 新しいタブで、アプリケーションの URL を貼り付け、末尾にパス
/static/images/char-mouth-open.png
を追加します。たとえば、URL はhttps://5000-cs-12345678-abcd.cs-region.cloudshell.dev/static/images/char-mouth-open.png
のようになります。 - Enter キーを押します。口を開けたキャラクターの画像のみが表示されます。この手順により、ブラウザが Cloud Shell インスタンスからファイルを正しく取得したことを確認できます。
これで、視覚的にカスタマイズされたコンパニオンを操作できるようになりました。
お疲れさまでした
これで、高度な AI コンパニオンを構築できました。基本的なアプリから始めて、Gemini CLI を使用してエージェントをスキャフォールディングし、豊かな個性を与え、リアルタイム情報にアクセスしたり、独自のアバターを生成したりするためのツールをエージェントに提供しました。これで、さらに複雑で高性能な AI エージェントを構築する準備が整いました。