Gemini を使用して AI データ探索エージェントを構築する

ビジネス システム プログラミング インターフェース用の人工知能(AI)を活用したチャット インターフェースを構築し、同僚がビジネスデータについて質問できるようにします。組織のデータの分析とレポート作成は、ビジネスの改善に不可欠です。適切なデータがあれば、問題の検出、トレンドの把握、結果の調査がすべて可能ですが、デベロッパーがコーディング以外の同僚に適切なデータを見つけてもらうことは難しい場合があります。

SQL Talk プロジェクトは、生成 AI テクノロジーを使用してビジネスデータに関する質問に回答するオープンソース アプリケーションです。このプロジェクトでは、Gemini API と関数呼び出し機能を使用して、ビジネスデータの質問を SQL クエリと API 呼び出しに変換し、結果を平易な言葉に変換します。このプロジェクトは、独自のビジネス用のデータ エージェントを構築するための出発点として使用できます。また、一回限りのコードを書かなくても、同僚が回答を得られるようサポートできます。

プロジェクトの概要と拡張方法の動画(作成者からの分析情報を含む)については、AI Data Agent | Build with Google AI をご覧ください。それ以外の場合は、次の手順でプロジェクトの拡張を開始できます。

SQL Talk プロジェクト アプリケーションのユーザー インターフェース

図 1. SQL Talk プロジェクト アプリケーションのユーザー インターフェース。

プロジェクトの設定

ここでは、開発とテスト用に SQL Talk プロジェクトを設定する手順について説明します。一般的な手順は、SQL Talk プロジェクトの作成、Google Cloud Shell エディタ開発プロジェクトの設定、Google Cloud プロジェクト ID の取得、スクリプトを使用したプロジェクト設定の構成です。次の手順では、Cloud Shell エディタを使用してプロジェクトを設定する方法について説明します。これにより、プロジェクトの設定、実行、更新を迅速かつ簡単に行うことができます。

プロジェクトの Cloud Shell インスタンスを作成する

SQL Talk プロジェクトを設定するには、プロジェクト リポジトリを Cloud Shell インスタンスにクローンを作成します。このプロセスでは、プロジェクトの Google Cloud インフラストラクチャ内に仮想開発環境インスタンスを設定し、コード リポジトリをその仮想環境にクローンを作成します。

SQL Talk 用の Cloud Shell インスタンスを作成するには:

このリンクをクリックすると、Google Cloud Shell エディタ インスタンスがセットアップされ、SQL Talk のリポジトリがインスタンスにクローンされます。

SQL Talk プロジェクト コードが表示された Google Cloud Shell エディタ

図 2. Google Cloud Shell エディタ開発環境にクローンを作成した SQL Talk プロジェクト。

Cloud プロジェクト ID を取得する

SQL Talk プロジェクトは、Google Cloud プロジェクト ID を使用して、Gemini モデルなどの Google Cloud サービスに接続します。アプリケーションがこれらのサービスに接続できるように、Cloud Shell エディタでプロジェクト ID を構成します。

Cloud Shell エディタをプロジェクト ID に接続するには:

  1. Google Cloud コンソールに移動し、必要に応じてログインします。
  2. 既存の Cloud プロジェクトを選択するか、新規に作成します。
  3. プロジェクトの Cloud プロジェクト ID をメモします。
  4. エディタ インスタンスをプロジェクトに接続し、プロジェクトを構成します。Cloud Shell エディタ ウィンドウのターミナル パネルで、次のコマンドを入力します。

    gcloud config set project YOUR_PROJECT_ID
    

SQL Talk プロジェクトを構成する

SQL Talk プロジェクトは、BigQuery データベース サービスや、Gemini モデルに接続する Vertex AI API など、Google Cloud サービスを使用します。SQL Talk プロジェクトには、必要な Google Cloud サービスを使用してプロジェクトを構成し、プロジェクトのデフォルト バージョンを起動する setup.sh スクリプトが含まれています。

プロジェクトの Cloud Shell エディタ インスタンスを構成して実行するには:

  1. Cloud Shell エディタ ウィンドウのターミナル パネルで、Cloud Shell SQL Talk(/sql-talk-app)プロジェクト ディレクトリに移動します。

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. ターミナル パネルで、次のコマンドを入力します。

    bash setup.sh
    

設定スクリプトが正常に完了すると、Cloud Shell エディタのターミナル ウィンドウに次のようなメッセージが表示されます。このメッセージは、セットアップ プロセスが正常に完了し、SQL Talk アプリケーションが実行されていることを示します。

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

プロジェクトをテストする

SQL Talk プロジェクトの設定が完了したら、アプリケーションをテストして、想定どおりに機能することを確認できます。設定スクリプトは、実行時にアプリケーションを自動的に起動します。アプリケーションを再起動するには、次の手順を使用します。

SQL Talk アプリケーションを実行するには:

  1. Cloud Shell エディタがアイドル状態になって接続が切断されている場合は、Cloud プロジェクト ID に再接続する必要があります。

    gcloud config set project YOUR_PROJECT_ID
    
  2. Cloud Shell エディタ ウィンドウのターミナル パネルで、Cloud Shell SQL Talk プロジェクト ディレクトリに移動します。

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. ターミナル パネルで、次のコマンドを入力します。

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. SQL Talk アプリケーションを表示します。Cloud Shell エディタ ウィンドウの右上にある [ウェブでプレビュー] ボタンを選択し、[ポート 8080 でプレビュー] を選択します。

ウェブ プレビュー ボタンがハイライト表示された Cloud Shell エディタのヘッダー

SQL Talk アプリケーションの最新情報を確認するには:

  • SQL Talk ウェブ アプリケーションのウェブ プレビューで、ブラウザまたはブラウザタブを再読み込みします。

SQL Talk アプリケーションを停止するには:

  • Cloud Shell エディタ ウィンドウのターミナル パネルで、Ctrl-C と入力します。

アプリケーションを変更する

アプリケーションの Python コードを変更することで、動作を変更したり、SQL Talk アプリケーションに機能を追加したりできます。このセクションでは、SQL Talk アプリケーションに新しい関数呼び出しを追加する方法について説明します。

Gemini API の関数呼び出し機能は、特定の構文を使用して、生成モデルが質問への回答や問題の解決に使用する関数を定義します。この構文は、実際の API 呼び出しの構文と完全に一致している必要はありません。代わりに、関数呼び出し機能を使用して、生成モデルに API 呼び出し構文に準拠する特定のデータ入力またはパラメータを強制的に提供させ、それらのパラメータを使用してアプリケーション コード内で実際の API 呼び出しを実行します。

この実装例では、最近のデータベース クエリまたはジョブを一覧表示する関数呼び出し定義を作成し、その定義を SQL Talk アプリケーション コード内の実際の API 呼び出しにマッピングする方法を示します。

関数呼び出しの定義を追加する

最近のデータベース クエリまたはジョブを一覧表示する新しい関数呼び出しを追加します。この定義は、生成モデルが API 呼び出しの機能と必要な入力パラメータを理解するために使用されます。この関数定義の例では、パラメータなしで定義しています。

アプリケーションに新しい関数呼び出しを追加するには:

  1. Cloud Shell エディタ ウィンドウで、sql-talk-app/app.py コードファイルを開きます。
  2. list_datasets_func 関数宣言の後に、新しい FunctionDeclaration を追加します。

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. 新しい関数を sql_query_tool オブジェクトに追加します。

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

新しい関数の API 呼び出しを実行するコードを追加するには:

  • sql-talk-app/app.py コードファイルで、while function_calling_in_process: ループに新しい if 句を追加します。

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

参考情報

SQL Query プロジェクトの詳細については、コード リポジトリをご覧ください。また、SQL Talk プロジェクトに関する Cloud コミュニティのブログ投稿もご覧ください。アプリケーションの構築についてサポートが必要な場合や、他のデベロッパーとコラボレーションする場合は、Google Developers コミュニティ Discord サーバーおよび Google Cloud AI/ML フォーラムをご覧ください。Google AI を活用して構築するプロジェクトについては、動画の再生リストをご覧ください。