🤖

Agent Engineの build options(installation_scripts) を利用してffmpegをインストールする

に公開

こんにちはサントリーこと大橋です。

最近、Vertex AI の Agent Engine に、リリースノートには記載されていないアップデートがありました。Agent Engine のデプロイ時(コンテナイメージ作成時)に、ユーザーが作成した install.sh を呼び出せる仕組みが追加されたのです。

https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/deploy?hl=en#build-options

この仕組みがあれば、以前の記事で書いたffmpegなどのライブラリをAgent Engineにインストールできることを期待して色々試したのですが、一度はパーミッションエラーが発生して、インストールすることができませんでした。

https://github.com/googleapis/python-aiplatform/issues/5548

Githubのissueでやり取りして、今日修正されたので、今回はこのinstallation_scripts の利用方法を解説したいと思います。

Agent Engineの build options

今までのAgent Engineの課題

これまで Agent Engine は、専用のコンテナイメージ内で Agent が実行される仕組みでした。そのため、pip 以外の方法で新たなライブラリやツールをインストールすることは困難でした。

例えば 以前記事にした作曲エージェントでは、pydubffmpegなどに依存していたため、自前でwgetなどでバイナリをインストールして、展開してからpackageに含めてデプロイする...の様な少し煩雑な方法が必要でした。

build optionsinstallation_scripts

今回Agent Engineに追加された build optionsinstallation_scripts はこの課題をまさに解決する機能で、Agent Engineのデプロイ時(コンテナイメージ作成時)に、ユーザーが作成した、任意のシェルを呼び出せる仕組みです。

https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/deploy?hl=en#build-options

実装方法

Agent Engineへのデプロイ時に以下の様に実行するシェルスクリプトファイルを指定すると、デプロイ後のイメージビルド時に、指定したファイルが実行されます。

install.sh
echo "install ffmpeg"

apt-get update
apt-get install -y ffmpeg
apt clean
deploy.py
    agent_engine = agent_engines.create(
        agent_engine=adk_app,
        display_name=display_name,
        requirements=requirements,
        extra_packages=[
                    "mypackage",
                    "installation_scripts/install.sh"
                ],
        build_options={"installation_scripts": ["installation_scripts/install.sh"]},
    )

以下の2点に注意が必要です。

  1. installation_scripts というディレクトリ名は固定
    • ファイル名はどうやら修正可能ですが、ディレクトリ名はチェック処理が走り異なる名称にしているとエラーになる
  2. extra_packagesにもスクリプトのパスを指定する
    • 指定しないとファイルがアップロードされません。こちらもチェック処理でチェックされます。

使い所

今回のように、ffmpegの様なライブラリをインストールするにも使えますが、個人的にはnodenpmをインストールして、stdio経由のmcpサーバを実行できるようになったはず(多分)
より柔軟なAgentが作れるようになりましたね。

まとめ

短い内容でしたが、 Agent Engineの新しい機能 build optionsについて説明しました。
Agent EngineはCloud Runにデプロイすればよくね感があるプロダクトですが、様々な機能が追加されて来て、自由度も上がりだんだん洗練されてきた印象です。
これからもウォッチしていきたいと思います。

Discussion