為貴公司的系統程式設計介面建構人工智慧 (AI) 聊天介面,讓同事可以詢問有關業務資料的問題。針對貴機構的資料進行分析和製作報表,是改善業務運作方式的必要之舉。只要有正確的資料,就能找出問題、發現趨勢和調查結果,但身為開發人員,要協助非程式設計同事找出正確的資料,可能會相當困難。
SQL Talk 專案是開放原始碼應用程式,可利用生成式 AI 技術回答有關業務資料的問題。這個專案會使用 Gemini API 和函式呼叫功能,將業務資料問題轉換為 SQL 查詢和 API 呼叫,然後將結果轉換回平實的文字。您可以使用這個專案,為自己的業務建構資料代理程式,並協助同事取得答案,而無須編寫大量一次性程式碼。
如要觀看有關此專案的簡介影片,以及如何擴充此專案的影片,包括開發人員提供的洞察資料,請參閱 AI 資料代理程式 | 運用 Google AI 建構內容。否則,您可以按照下列操作說明開始擴充專案。
圖 1. SQL Talk 專案應用程式使用者介面。
專案設定
本操作說明會逐步引導您設定 SQL Talk 專案,以便進行開發和測試。一般步驟包括建立 SQL Talk 專案、設定 Google Cloud Shell 編輯器開發專案、取得 Google Cloud 專案 ID,以及使用指令碼設定專案設定。本操作說明說明如何使用 Cloud Shell 編輯器設定專案,讓您能快速方便地設定、執行及更新專案。
為專案建立 Cloud Shell 執行個體
您可以將專案存放區複製到 Cloud Shell 執行個體,藉此設定 SQL Talk 專案。這個程序會在專案的 Google Cloud 基礎架構中設定虛擬開發環境執行個體,並將程式碼存放區複製到該虛擬環境中。
如要為 SQL Talk 建立 Cloud Shell 執行個體,請按照下列步驟操作:
- 按一下下列連結,建立 SQL Talk 的 Cloud Shell 執行個體。
這個連結會設定 Google Cloud Shell 編輯器執行個體,並將 SQL Talk 的存放區複製到該執行個體中。
圖 2. 在 Google Cloud Shell 編輯器開發環境中複製的 SQL Talk 專案。
取得 Cloud 專案 ID
SQL Talk 專案會使用 Google Cloud 專案 ID 連線至 Google Cloud 服務,包括 Gemini 模型。您可以在 Cloud Shell 編輯器中設定專案 ID,讓應用程式連線至這些服務。
如要將 Cloud Shell 編輯器連結至專案 ID,請按照下列步驟操作:
- 前往 Google Cloud 控制台,並視需要登入。
- 選取現有的 Cloud 專案,或建立新專案。
- 記下專案的 Cloud 專案 ID。
將編輯器執行個體連結至專案,並設定專案。在 Cloud Shell 編輯器視窗的終端機面板中,輸入下列指令:
gcloud config set project YOUR_PROJECT_ID
設定 SQL Talk 專案
SQL Talk 專案會使用 Google Cloud 服務執行專案,包括 BigQuery 資料庫服務和 Vertex AI API,以連線至 Gemini 模型。SQL Talk 專案包含 setup.sh
指令碼,可使用必要的 Google Cloud 服務設定專案,並啟動專案的預設版本。
如要設定及執行專案 Cloud Shell 編輯器執行個體,請按照下列步驟操作:
在 Cloud Shell 編輯器視窗的終端機面板中,前往 Cloud Shell SQL Talk (
/sql-talk-app
) 專案目錄:cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
在終端機面板中輸入下列指令:
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 應用程式,請按照下列步驟操作:
如果 Cloud Shell 編輯器處於閒置狀態且已中斷連線,您可能需要重新連線至 Cloud 專案 ID。
gcloud config set project YOUR_PROJECT_ID
在 Cloud Shell 編輯器視窗的終端機面板中,前往 Cloud Shell SQL Talk 專案目錄。
cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
在終端機面板中輸入下列指令。
~/miniforge/bin/streamlit run app.py --server.enableCORS=false \ --server.enableXsrfProtection=false --server.port 8080
查看 SQL Talk 應用程式。在 Cloud Shell 編輯器視窗的右上方,依序選取「網頁預覽」按鈕和「透過以下通訊埠預覽:8080」。
如要查看 SQL Talk 應用程式的更新內容,請按照下列步驟操作:
- 在 SQL Talk 網頁應用程式的網頁預覽畫面中,重新載入瀏覽器或瀏覽器分頁。
如要停止 SQL Talk 應用程式,請按照下列步驟操作:
- 在 Cloud Shell 編輯器視窗的終端機面板中,輸入 Ctrl-C。
修改應用程式
您可以修改應用程式的 Python 程式碼,為 SQL Talk 應用程式變更行為並新增功能。本節說明如何在 SQL Talk 應用程式中新增函式呼叫。
Gemini API 的函式呼叫功能會使用特定語法定義函式,供生成式模型用來回答問題或解決問題。這個語法不必與實際 API 呼叫的語法完全一致。而是使用「函式呼叫」功能,強制產生模型提供符合 API 呼叫語法的特定資料輸入或參數,然後使用這些參數在應用程式程式碼中執行實際的 API 呼叫。
這個實作範例會說明如何建立函式呼叫定義,以列出最近的資料庫查詢或工作,然後將該定義對應至 SQL Talk 應用程式程式碼中的實際 API 呼叫。
新增函式呼叫定義
新增函式呼叫,用於列出近期的資料庫查詢或工作。這個定義會由生成式模型使用,以瞭解 API 呼叫的功能和所需的輸入參數。此函式定義範例不含任何參數。
如要為應用程式新增函式呼叫,請按照下列步驟操作:
- 在 Cloud Shell 編輯器視窗中,開啟
sql-talk-app/app.py
程式碼檔案。 在
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": { }, }, )
將新函式新增至
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 查詢專案,請參閱 程式碼存放區,並查看 Cloud 社群部落格文章,瞭解 SQL Talk 專案。如果您需要建構應用程式的協助,或是想與其他開發人員合作,請造訪 Google 開發人員社群 Discord 伺服器和 Google Cloud AI/ML 論壇。如要進一步瞭解更多「Build with Google AI」專案,請參閱影片播放清單。