🧠

Google ADKのWeb UIでアップロードしたテキストファイルを生成AIモデルに渡す

に公開

はじめに

Google ADKのWeb UIを使用して、テキストファイルをアップロードし、その内容を生成AIモデルに渡す方法について説明する。

ADKの環境構築

公式ドキュメントAgent Development Kitに沿ってインストールを行う。

python -m venv .venv
source .venv/bin/activate
pip install google-adk==1.6.1

※Docker Composeを使用する場合は、以下のdocker-compose.yamlを作成する。

services:
  adk:
    build:
      context: .
    dockerfile_inline: |
        FROM python:3.13.5-slim
        WORKDIR /work
        RUN python -m venv .venv
        RUN source .venv/bin/activate
        RUN pip install google-adk==1.6.1
        CMD ["adk", "web", "--host", "0.0.0.0", "--port", "8080"]
    ports:
      - "{ポート番号}:8080"
    # 適宜volumeを設定

エージェントのプロジェクトを作成する。

parent_folder/
    uploaded_file_agent/
        __init__.py
        agent.py
        .env
        custom_lite_llm.py ☆ 後で追加

以下のコマンドを実行してエージェントを起動すると、ブラウザでWeb UIが表示される。

adk web

※Docker Composeを使用する場合は、以下のコマンドで起動する。

docker compose up -d

アップロードしたファイルを生成AIモデルに渡す

google.adk.models.lite_llm.LiteLlmで生成AIモデルを定義し、アップロードしたファイルの内容をモデルに渡そうとすると、以下のエラーが発生する。

raise ValueError("LiteLlm(BaseLlm) does not support this content part.")  # https://github.com/google/adk-python/blob/main/src/google/adk/models/lite_llm.py#L266

この処理がある_get_content関数に、テキストファイルを読み込んで文字列として生成AIに渡すように処理を追加する。
lite_llm.pyの中身をコピーして、custom_lite_llm.pyに貼り付けし、以下のように修正する。

- from .base_llm import BaseLlm
- from .llm_request import LlmRequest
- from .llm_response import LlmResponse

+ from google.adk.models.base_llm import BaseLlm
+ from google.adk.models.llm_request import LlmRequest
+ from google.adk.models.llm_response import LlmResponse
content_objects.append(
    ChatCompletionTextObject(
        type="text",
        text=part.inline_data.data.decode("utf-8"),
    )
)
- class LiteLlm(BaseLlm):

+ class CustomLiteLlm(BaseLlm):

このCustomLiteLlmを使用するために、agent.pyを以下のように修正する。

from .custom_lite_llm import CustomLiteLlm


model = CustomLiteLlm(
    model_name=<モデル名>,
    api_base=<APIのベースURL>,
)

root_agent = LlmAgent(
    name=<エージェント名>,
    model=model,
    description=<エージェントの説明>,
)

おわりに

このようにして、Google ADKのWeb UIでアップロードしたテキストファイルを生成AIモデルに渡すことができる。
テキストファイルだけでなく、PDFなどの他のファイル形式も同様に処理を追加することで、生成AIモデルに渡すことが可能になる。

関数ではなくてクラスメソッドであれば丸ごとコピペしなくてよいのにと思う。

Discussion