Google ADKで独自AIエージェントを作って、ローカル環境で動かしてみる

# はじめに

[３大クラウドAIエージェント勉強会](https://cloudtech.connpass.com/event/351040/)に参加して、「マルチAIエージェントを作るハードルは、私自身が思っているよりもはるかに低いのでは？」と感じて手を動かしてみたところ、その手前にある「独自のAIエージェントを作る」部分で何度もつまずくポイントがあったので、その作成手順をまとめました。

# 前提

* Pythonがインストール済みであること
* pipがインストール済みであること

# 独自AIエージェント実装

Google-ADKをpipでインストールします。

```shell
pip install google-adk
```

以下の階層構造で、フォルダと空ファイルを配置します。

```plaintext
agent/
├── book_concierge/
│   ├── __init__.py
│   ├── agent.py
│   └── prompt.py
└── .env
```

:::note warn
フォルダ名は自由につけても問題ありませんが、この階層構造になっていないとエラーの原因になりますので、注意しましょう。
また、<font color="red">**main.pyは不要**</font>です。
:::

各Pythonファイルを以下のように実装します。

```Python:__init__.py
from . import agent
```

```Python:agent.py
from google.adk.agents import Agent
import book_concierge.prompt as prompt

root_agent = Agent(
    name="book_concierge_agent",
    description="書籍提案エージェント",
    model="gemini-2.0-flash",
    instruction=prompt.ROOT_AGENT_INSTR,
)
```

:::note warn
Agentの`name`に設定する値は、半角英字とアンダースコアのみを許容しているため、半角スペースなどが混入しないように注意しましょう。
:::

```Python:prompt.py
ROOT_AGENT_INSTR="""
    あなたは書籍のコンシェルジュです。読者が興味を持つ書籍を推薦するために、以下の情報を提供してください。
    1. 書籍のタイトル
    2. 著者名
    3. ジャンル
    4. 書籍の概要
    5. 推薦理由
"""
```

[Google AI Studio](https://aistudio.google.com/apikey)からAPIキーを取得します。リンク先の「APIキーを作成」ボタンをクリックすると、キーが払い出されますので、コピーしておきます。

次に `.env` ファイルを以下のように更新します。

```plaintext:.env
GOOGLE_GENAI_USE_VERTEXAI="FALSE"
GOOGLE_API_KEY="コピーしたAPIキー"
```

:::note warn
私は.envに設定するパラメータ<font color="red">**名**</font>のTypoでつまずきました。APIキーも手入力は誤りの元なので、必ずコピペで作りましょう。
:::

これで実装は完了です。

# 独自AIエージェントをローカルで起動する

`book_concierge`フォルダの<font color="red">**親**</font>の階層、本例では`agent`フォルダで、以下のコマンドを実行します。

```shell
adk web
```

起動に成功すると、以下のようなメッセージがコンソールに表示されます。

```
INFO:     Started server process [20051]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```

コンソールに表示されたアドレス `http://127.0.0.1:8000` をブラウザで開きます。下図画面が表示されるので「Select an agent」のプルダウンから、「book_concierge」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/a6e9edf4-e28f-4227-9b4f-620d14a352a6.png)

プルダウンを選択すると画面右側にユーザプロンプトが表示されるので、質問を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/d176bd88-4951-4ed0-bb1d-ffaf5de966db.png)

:::note
今回はテキストを入力していますが、ADKはマルチモーダルに対応しています。
:::

エンターキーを押すと、以下のように回答が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3551450/8952644b-9698-4407-ae4d-649c38fc4a62.png)

# 終わりに

AIエージェント周りは進化も早く、情報の陳腐化もその分早く進むため、この記事の手順ももしかするとすぐに使えなくなってしまうかもしれません。
ですが、今後はこの記事で作成したリソースを拡張して、マルチAIエージェントを作ったりGoogle Cloudにデプロイしてみたりもしたいと思っていますので、折を見て必要があれば、今後もメンテナンスしていく予定です。

# 参考にさせていただいた記事など

https://github.com/google/adk-samples/blob/main/python/agents/README.md

https://qiita.com/yonaka15/items/eeb50defd64f7942ca42