使用 Gemini 建構 AI 資料探索代理程式

為貴公司打造採用人工智慧 (AI) 技術的即時通訊介面 系統程式設計介面,並讓同事向您的同事 業務資料。如何分析及報告機構資料? 讓業績更上一層樓發現問題、發現 這些資料都能生成正確的趨勢,並使您自然而然 協助您的非程式設計同事發掘正確資料 挑戰性很高

SQL Talk 是一項開放原始碼應用程式,採用生成式 AI 技術 回答業務資料相關問題。專案使用 Gemini API 函式呼叫功能 將業務資料問題轉換為 SQL 查詢和 API 呼叫,然後 並將結果轉換回純文字本專案可以做為 開始為自家企業建構資料代理程式 同事都能輕鬆獲得答案,您完全不必編寫任何一次性的程式碼。

觀看專案簡介影片、專案應用方式和深入分析資訊 製作團隊的意見 AI 資料代理 |運用 Google AI 建構內容。 或者,您可以使用下列函式開始擴充專案 操作說明。

SQL Talk 專案應用程式使用者介面

圖 1. SQL Talk 專案應用程式使用者介面。

專案設定

這些操作說明會引導您設定 SQL Talk 專案 一般而言,就是建立 SQL Talk 專案,設定 Google Cloud Shell 編輯器 取得 Google Cloud 專案 ID 即可設定專案設定以下說明設定方法 使用 Cloud Shell 編輯器設定專案 並更新專案,既快速又方便

為專案建立 Cloud Shell 執行個體

您可以將專案存放區複製到 Cloud Shell 執行個體這項程序會設定虛擬開發環境 執行個體,並複製 複製到該虛擬環境

如要建立 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 連線至 Google Cloud 包括 Gemini 模型在內專案 ID 是在 Cloud Shell 編輯器,允許應用程式連線至這些服務。

如何將 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 專案會使用 Google Cloud 服務執行專案,包括 BigQuery 資料庫服務,以及 可連結至 Gemini 模型的 Vertex AI API。 SQL Talk 專案包含用來設定專案的 setup.sh 指令碼 所需的 Google Cloud 服務,並啟動預設版本 專案。

如要設定並執行專案 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 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

修改應用程式

您可以變更行為及新增功能至 SQL Talk 應用程式 修改應用程式的 Python 程式碼本節將說明如何 將函式呼叫新增至 SQL Talk 應用程式。

Gemini API 函式呼叫 特徵會使用特定語法定義生成式模型要使用的函式 回答問題或解決問題這個語法不必 完全符合實際 API 呼叫的語法。而是改用 呼叫功能,強制生成式模型提供特定資料輸入內容 然後用這些參數 在應用程式程式碼中實際執行 API 呼叫。

本實作範例說明如何建立函式呼叫定義 ,然後將該定義對應到 進行實際的 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 程式碼檔案中,將 if 子句新增至 while function_calling_in_process:迴圈。

    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 專案,請參閱 程式碼存放區 並查看 Cloud 社群網誌文章 關於 SQL Talk 專案如果您在建構應用程式時需要協助 希望與其他開發人員合作,請參閱 Google Developers Community Discord 伺服器,以及 Google Cloud AI/機器學習論壇。 如要進一步瞭解如何透過 Google AI 建構專案,請參閱 影片播放清單