在文中將會使用 BigQuery 的 hosted remote functions 和 Vertex AI 的大型語言模型(LLM)進行文本生成(text-bison) 來分析並生成 GitHub 程式碼公開資料庫的摘要和程式語言識別。
資料庫來自 GitHub Archive Project,該項目包含超過 280 萬個開源 GitHub 存儲庫的完整快照,存儲在 Google BigQuery 公共數據集中。
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-connection`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
這會創建一個名稱為 llm_model 的模型在。該模型利用 Vertex AI 的 CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 作為遠程函數。完成後,您會在剛剛建立的dataset (bq_llm)看到該模型。
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes'] AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content) AS prompt
FROM
`bigquery-public-data.github_repos.sample_contents`
LIMIT 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
ml_generate_text_result
是從 text generation model 獲取的回應( JSON 格式),包含生成的文本和安全屬性:ML.GENERATE_TEXT
是 BigQuery 中用於訪問 Vertex AI LLM 以執行文本生成任務的函數。CONCAT
函數將提供的提示詞附加到數據庫記錄中。github_repos
是公共數據集的名稱,而 sample_contents
是使用的 Table 名稱。temperature
是控制回應隨機性的提詞參數—數值越小,相關性越高。max_output_tokens
是您希望回應中包含的詞數。Tutorial: Analyze an object table by using a remote function | Bigquery
Generate text by using the ML.GENERATE_TEXT function | Bigquery
The ML.GENERATE_TEXT function | Bigquery
Model versions and lifecycle | Generative AI on Vertex AI
Text | Generative AI on Vertex AI
https://www.cloudskillsboost.google/focuses/74646?parent=catalog