在 AI 應用程式中使用檢索增強生成 (RAG) 技術時,您可以根據下列基礎來源,生成有根據的提示回覆:
- Google 搜尋:如果您想將模型連結至網路中的世界知識、各種主題或最新資訊,建議利用 Google 搜尋建立基準。Grounding with Google Search 支援動態擷取,可讓您選擇僅在必要時,透過 Google 搜尋生成以 Google 搜尋結果為依據的內容。因此,動態擷取設定會評估提示是否需要近期事件的相關知識,並啟用「以 Google 搜尋建立基準」。詳情請參閱「動態擷取」。
- 內嵌文字:使用內嵌文字建立基準,根據要求中提供的文字片段 (稱為「事實文字」) 建立答案基準。事實文字是使用者提供的陳述,且系統認為與特定要求相關。模型不會檢查事實文字的真實性。
- Vertex AI Search 資料儲存庫:如要將模型連結至 Vertex AI Search 資料儲存庫中的企業文件,請使用 Vertex AI Search 建立基準。
本頁面說明如何使用下列方法,根據這些基礎來源生成有根據的答案:
此外,您也可以選擇串流模型回覆。透過串流生成基準化回覆是實驗功能。
您可以視應用程式需求,使用其他方法生成有依據的答案。詳情請參閱「Vertex AI API,用於建構搜尋和 RAG 體驗」。
術語
使用有根據的答案生成方法前,建議先瞭解輸入內容和輸出內容、如何建構要求,以及 RAG 相關術語。
RAG 條款
檢索增強生成 (RAG) 是一種方法,可讓大型語言模型 (LLM) 根據您選擇的資料來源生成回覆。RAG 分為兩個階段:
- 擷取:快速取得最相關的事實是常見的搜尋問題。有了 RAG,您就能快速擷取重要事實,生成回覆。
- 生成:LLM 會使用檢索到的事實,生成有依據的回覆。
因此,有依據的答案生成方法會從依據來源擷取事實,並生成有依據的答案。
輸入資料
以資料為依據的答案生成方法需要在要求中提供下列輸入內容:
角色:指定文字的傳送者,可以是使用者 (
user
) 或模型 (model
)。文字:如果角色是
user
,文字就是提示;如果角色是model
,文字就是根據脈絡資訊生成的答案。在要求中指定角色和文字的方式如下:- 如要生成單輪對話的答案,使用者會在要求中傳送提示文字,模型則會在回覆中傳送答案文字。
- 如果是多輪對話的答案生成作業,要求會包含所有前幾輪對話的提示詞/答案配對,以及使用者在當輪對話中輸入的提示詞文字。因此,在這種要求中,提示文字的角色是
user
,答案文字的角色是model
。
系統指令:提示的前言,可控管模型行為,並據此修改輸出內容。舉例來說,您可以在生成的回覆中加入角色,或是指示模型以特定方式設定輸出文字格式。如要生成多輪對話的答案,您必須為每一輪對話提供系統指令。詳情請參閱「使用系統指令」。
依據來源:答案的依據來源,可以是下列一或多項:
Google 搜尋:根據 Google 搜尋結果生成回覆。如果建立基準的來源是 Google 搜尋,您可以指定動態擷取設定和動態擷取門檻。詳情請參閱「動態擷取」。
內文:根據要求中提供的事實文字,提供答案。事實文字是使用者提供的陳述,且系統認為與特定要求相關。模型不會檢查事實文字的真實性。每個內嵌文字來源最多可提供 100 個事實文字。事實文字可使用中繼屬性支援,例如標題、作者和 URI。引用支援答案的區塊時,這些中繼屬性會以回應形式傳回。
Vertex AI Search 資料儲存庫:以 Vertex AI Search 資料儲存庫中的文件做為回覆基準。您無法指定網站搜尋資料儲存庫做為基礎來源。
在特定要求中,您可以同時提供內嵌文字來源和 Vertex AI Search 資料儲存庫來源。你無法將 Google 搜尋與這兩個來源的任一者合併。因此,如要根據 Google 搜尋結果提供答案,請務必傳送個別要求,並指定 Google 搜尋做為唯一基礎來源。
最多可依任意順序提供 10 個基礎來源。舉例來說,假設您依下列順序提供基礎來源,並取得總共 10 個基礎來源:
- 三個內嵌文字來源,每個來源最多可包含 100 個事實文字
- 六個 Vertex AI Search 資料儲存庫
- 一個內嵌文字來源,最多可包含 100 個事實文字
系統會按照要求中指定的順序,為每個來源指派索引。舉例來說,如果您在要求中指定來源組合,系統會按照下表指派來源索引:
依據來源 索引 內嵌文字 #1 0 內嵌文字 #2 1 Vertex AI Search 資料儲存庫 #1 2 內嵌文字 #3 3 Vertex AI Search 資料儲存庫 #2 4 這項索引會顯示在回覆中,有助於追蹤出處。
生成規格:模型設定的規格,包含下列資訊:
模型 ID:指定用於生成答案的 Vertex AI Gemini 模型。如需可用於生成有根據答案的模型清單,請參閱「支援的型號」。
模型參數:指定可為所選模型設定的參數。這些參數包括:語言、溫度、Top-P 和 Top-K。如要進一步瞭解這些參數,請參閱「Gemini 模型參數」。
語言代碼:生成答案的語言通常會與提示的語言相符。如果提示中沒有單一語言 (例如提示很短,且適用於多種語言),則語言代碼欄位會決定答案的語言。
如需語言代碼清單,請參閱「語言」。
經緯度:指定使用者的經緯度。如果查詢內容包含特定地點的問題,例如「尋找我附近的咖啡店」,系統就會使用這些欄位。如果系統無法判斷查詢語言,且未設定語言代碼,系統就會使用經緯度判斷答案語言。
輸出資料
模型生成的回覆稱為「候選答案」,其中包含下列資料:輸出內容可能不會顯示所有欄位。
角色:已建立基準答案的傳送者。回覆一律包含根據事實的答案文字。因此,回覆中的角色一律為模型。
文字:已建立基準的答案。
基礎分數:介於 [0, 1] 之間的浮點值,表示答案與指定來源的關聯程度。
建立基準中繼資料:建立基準來源的中繼資料。基礎中繼資料包含下列資訊:
支援的區塊:支援答案的區塊清單。每個支援區塊都會指派支援區塊索引,有助於追蹤出處。每個支援區塊都包含下列內容:
- 文字塊:從來源逐字引用的一段文字,答案或部分答案 (稱為「主張文字」) 即是從這段文字擷取而來。回覆中不一定會顯示這項資訊。
- 來源:指派給要求中來源的索引。
來源中繼資料:區塊的中繼資料。視來源而定,來源中繼資料可以是下列任一項:
- 如果是內嵌來源,中繼資料可以是要求中指定的其他詳細資料,例如標題、作者或 URI。
- 如果是 Vertex AI Search 資料儲存庫,中繼資料可以是文件 ID、文件標題、URI (Cloud Storage 位置) 或頁碼。
- 如果使用「以 Google 搜尋建立基準」功能生成結果,中繼資料會包含 URI,重新導向至用於生成結果的內容發布者。中繼資料也包含發布者的網域。生成基礎結果後,您最多可在 30 天內存取提供的 URI。
基礎支援:答案中聲明的基礎資訊。 基礎支援包含下列資訊:
- 主張文字:以支援區塊文字佐證的答案或答案的一部分。
- 支援區塊索引:指派給支援區塊的索引,順序是區塊在支援區塊清單中出現的順序。
- 網路搜尋查詢:Google 搜尋建議的建議搜尋查詢。
- 搜尋建議:如果回覆內容包含 Google 搜尋建議,則該回覆為「建立基準的結果」,須遵守「利用 Google 搜尋建立基準」的服務條款。詳情請參閱服務條款。
searchEntryPoint
欄位中的renderedContent
欄位是導入 Google 搜尋建議的程式碼。如要使用 Google 搜尋建議,請參閱「使用 Google 搜尋建議」。
在單一回合中生成有憑有據的答案
本節說明如何根據下列來源生成答案:
以內嵌文字和 Vertex AI Search 資料儲存庫做為回覆基準
下列範例說明如何指定內嵌文字和 Vertex AI Search 資料儲存庫做為基準來源,藉此傳送提示文字。您無法將網站搜尋資料儲存庫指定為基礎來源。
這個範例使用 generateGroundedContent
方法。
REST
在下列 curl 要求中傳送提示。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_1", "attributes": { "title": "TITLE_1", "uri": "URI_1", "author": "AUTHOR_1" } } ] } }, { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_2", "attributes": { "title": "TITLE_2", "uri": "URI_2" } }, { "factText": "FACT_TEXT_3", "attributes": { "title": "TITLE_3", "uri": "URI_3" } } ] } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search" } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
更改下列內容:
PROJECT_NUMBER
:您的 Google Cloud 專案編號。PROMPT_TEXT
:使用者提供的提示。SYSTEM_INSTRUCTION
: 選填欄位,可提供前言或其他背景資訊。FACT_TEXT_N
: 用來提供答案的內嵌文字。最多可提供 100 則事實文字。TITLE_N
: 這個選用欄位可為內嵌文字設定標題中繼屬性。URI_N
: 這個選填欄位可為內嵌文字設定 URI 中繼屬性。AUTHOR_N
: 選用欄位,可為內嵌文字設定作者中繼屬性。APP_ID_N
:Vertex AI Search 應用程式的 ID。MODEL_ID
: 這個選填欄位可設定要用來生成基礎答案的 Gemini 模型 ID。如需可用模型 ID 清單,請參閱「支援的型號」。TEMPERATURE
: 選填欄位,用於設定取樣時使用的溫度。Google 建議將溫度設為 0.0。詳情請參閱「Gemini 模型參數」。TOP_P
: 選用欄位,可為模型設定 top-P 值。詳情請參閱「Gemini 模型參數」。TOP_K
: 選用欄位,可為模型設定前 K 個值。詳情請參閱「Gemini 模型參數」。LANGUAGE_CODE
: 這個選用欄位可用於設定生成答案和傳回的區塊文字語言。如果系統無法從查詢判斷語言,就會使用這個欄位。預設值為en
。如需語言代碼清單,請參閱「語言」。LATITUDE
: 選填欄位,用於設定緯度。輸入十進位度數值,例如-25.34
。LONGITUDE
: 設定經度的選填欄位。輸入十進位度數值,例如131.04
。
根據內嵌文字和 Vertex AI Search 生成單輪回覆的範例
在下列範例中,要求指定了以下基礎來源:一個內嵌文字事實和一個 Vertex AI Search 資料儲存庫。這個範例使用 generateGroundedContent
方法。這個範例也使用系統指令,在答案結尾加上笑臉表情符號。
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "How did Google do in 2020? Where can I find BigQuery docs?" } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction", "attributes": { "title": "BigQuery Overview", "uri": "https://cloud.google.com/bigquery/docs/introduction" } } ] } }, { "searchSource": { "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" }, "user_context": { "languageCode: "en", "latLng": { "latitude": 37.422131, "longitude": -122.084801 } } }'
透過 Google 搜尋生成有憑有據的答案
您可以根據公開網路資料,生成有憑有據的回覆。
動態擷取
您可以在要求中使用動態擷取功能,選擇何時關閉 Grounding with Google Search。如果提示的回覆不需要使用 Google 搜尋做為基準,且支援的模型可根據自身具備的知識做出回覆,不必建立基準,就很適合使用這項功能。這有助於更有效地管理延遲時間、品質和成本。
動態擷取預測分數和門檻
當您傳送要求生成有根據的答案時,AI Applications 會為提示指派預測分數。預測分數是介於 0 到 1 之間的浮點值。這個值取決於提示是否能從 Google 搜尋的最新資訊中獲益。因此,如果提示要求根據網路上最新的事實提供答案,預測分數就會較高;如果提示只需要模型生成答案,預測分數就會較低。
以下列舉幾個提示及其預測分數。
提示 | 預測分數 | 註解 |
---|---|---|
「寫一首關於牡丹的詩」 | 0.13 | 模型可根據自身具備的知識做出回覆,不必建立基準 |
「Suggest a toy for a 2yo child」(為 2 歲兒童推薦玩具) | 0.36 | 模型可根據自身具備的知識做出回覆,不必建立基準 |
「可以提供亞洲風味酪梨醬的食譜嗎?」 | 0.55 | Google 搜尋可以提供以基準為依據的回覆,但並非必要;模型知識可能就已足夠 |
「什麼是 AI 應用程式?在 AI 應用程式中,如何計算基礎功能的費用? | 0.72 | 需要 Google 搜尋生成有根據的答案 |
「最近一次的 F1 大獎賽是誰贏得冠軍?」 | 0.97 | 需要 Google 搜尋生成有根據的答案 |
在生成以基礎事實為依據的答案要求中,您可以指定具有門檻的動態擷取設定。閾值是範圍 [0,1] 內的浮點值,預設值為 0.7。如果閾值為零,回覆一律以 Google 搜尋為基準。如為其他門檻值,則適用下列情況:
- 如果預測分數大於或等於門檻,系統會根據 Google 搜尋結果提供答案。門檻越低,表示有更多提示詞的回覆是使用 Google 搜尋建立基準。
- 如果預測分數低於門檻,模型可能仍會生成答案,但不會以 Google 搜尋為基準。
如要找出符合業務需求的合適門檻,您可以建立預期會遇到的代表性查詢組合。然後,您可以根據回應中的預測分數排序查詢,並為您的用途選取合適的門檻。
利用 Google 搜尋建立回覆基準
以下範例說明如何指定 Google 搜尋做為基礎來源,根據提示生成有根據的答案。這個範例使用 generateGroundedContent
方法。
REST
在下列 curl 要求中傳送提示。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": DYNAMIC_RETRIEVAL_THRESHOLD } } } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
更改下列內容:
PROJECT_NUMBER
:您的 Google Cloud 專案編號。PROMPT_TEXT
:使用者提供的提示。SYSTEM_INSTRUCTION
: 選填欄位,可提供前言或其他背景資訊。DYNAMIC_RETRIEVAL_THRESHOLD
:選用欄位,可設定叫用動態擷取設定的門檻。這是介於 0 到 1 之間的浮點值。如果您新增dynamicRetrievalConfig
欄位,但未設定predictor
或threshold
欄位,閾值會預設為 0.7。如果未設定dynamicRetrievalConfig
欄位,系統一律會以基礎知識為依據提供答案。MODEL_ID
: 這個選填欄位可設定要用來生成基礎答案的 Gemini 模型 ID。如需可用模型 ID 清單,請參閱「支援的型號」。TEMPERATURE
: 選填欄位,用於設定取樣時使用的溫度。Google 建議將溫度設為 0.0。詳情請參閱「Gemini 模型參數」。TOP_P
: 選用欄位,可為模型設定 top-P 值。詳情請參閱「Gemini 模型參數」。TOP_K
: 選用欄位,可為模型設定前 K 個值。詳情請參閱「Gemini 模型參數」。LANGUAGE_CODE
: 這個選用欄位可用於設定生成答案和傳回的區塊文字語言。如果系統無法從查詢判斷語言,就會使用這個欄位。預設值為en
。如需語言代碼清單,請參閱「語言」。LATITUDE
: 選填欄位,用於設定緯度。輸入十進位度數值,例如-25.34
。LONGITUDE
: 設定經度的選填欄位。輸入十進位度數值,例如131.04
。
利用 Google 搜尋建立基準,生成單輪對話回覆的範例
在下列範例中,要求會將 Google 搜尋指定為基礎來源。這個範例使用 generateGroundedContent
方法。這個範例也使用系統指令,在答案結尾加上笑臉表情符號。
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [{ "role": "user", "parts": [{ "text": "What is ai applications?" }] }], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": 0.6 } } } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } '
在多輪對話中生成基準化回覆
在多輪對話的答案生成過程中,您必須在每個要求中,傳送使用者和模型在先前所有輪次中交換的所有文字。這可確保連續性並保留脈絡,以便為最新的提示生成答案。
如要透過多輪對話生成有根據的回覆,請按照下列步驟操作:
REST
下列範例說明如何透過多個回合傳送後續提示文字。這些範例使用 generateGroundedContent
方法,並以 Google 搜尋為答案建立基準。您可以使用類似的步驟,透過其他依據來源生成有依據的回覆。
在下列 curl 要求中傳送第一個提示。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_1" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
更改下列內容:
PROJECT_NUMBER
:您的 Google Cloud 專案編號。PROMPT_TEXT_TURN_1
:使用者在第一輪提供的提示文字。SYSTEM_INSTRUCTION_TURN_1
: 選填欄位,可提供前言或其他背景資訊。 如要生成多輪對話的答案,您必須在每一輪提供系統指示。MODEL_ID
: 這個選填欄位可設定要用來生成基礎答案的 Gemini 模型 ID。如需可用模型 ID 清單,請參閱「支援的型號」。TEMPERATURE
: 選填欄位,用於設定取樣時使用的溫度。Google 建議將溫度設為 0.0。詳情請參閱「Gemini 模型參數」。TOP_P
: 選用欄位,可為模型設定 top-P 值。詳情請參閱「Gemini 模型參數」。TOP_K
: 選用欄位,可為模型設定前 K 個值。詳情請參閱「Gemini 模型參數」。LANGUAGE_CODE
: 這個選用欄位可用於設定生成答案和傳回的區塊文字語言。如果系統無法從查詢判斷語言,就會使用這個欄位。預設值為en
。如需語言代碼清單,請參閱「語言」。LATITUDE
: 選填欄位,用於設定緯度。輸入十進位度數值,例如-25.34
。LONGITUDE
: 設定經度的選填欄位。輸入十進位度數值,例如131.04
。
接著傳送第二個提示詞做為後續提示。加入使用者的第一個提示,然後加入模型對應的回覆,做為情境。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] }, { "role": "model", "parts": [ { "text": "ANSWER_TEXT_TURN_1" } ] }, { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_2" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_2" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
更改下列內容:
PROJECT_NUMBER
:您的 Google Cloud 專案編號。PROMPT_TEXT_TURN_1
:使用者在第一輪提供的提示文字。ANSWER_TEXT_TURN_1
:第一輪對話中模型提供的答案文字。PROMPT_TEXT_TURN_2
:使用者在第二輪提供的提示文字。SYSTEM_INSTRUCTION_TURN_2
: 選填欄位,可提供前言或其他背景資訊。 如要生成多輪對話的答案,您必須在每一輪提供系統指示。MODEL_ID
: 這個選填欄位可設定要用來生成基礎答案的 Gemini 模型 ID。如需可用模型 ID 清單,請參閱「支援的型號」。TEMPERATURE
: 選填欄位,用於設定取樣時使用的溫度。Google 建議將溫度設為 0.0。詳情請參閱「Gemini 模型參數」。TOP_P
: 選用欄位,可為模型設定 top-P 值。詳情請參閱「Gemini 模型參數」。TOP_K
: 選用欄位,可為模型設定前 K 個值。詳情請參閱「Gemini 模型參數」。LANGUAGE_CODE
: 這個選用欄位可用於設定生成答案和傳回的區塊文字語言。如果系統無法從查詢判斷語言,就會使用這個欄位。預設值為en
。如需語言代碼清單,請參閱「語言」。LATITUDE
: 選填欄位,用於設定緯度。輸入十進位度數值,例如-25.34
。LONGITUDE
: 設定經度的選填欄位。輸入十進位度數值,例如131.04
。
重複這個程序,即可取得後續追問的答案。在每個回合中,加入使用者先前提供的所有提示,以及模型相應的回覆。
多輪對話的答案生成範例
在下列範例中,要求會指定三個內嵌事實文字做為依據來源,在兩個回合中生成答案。本範例使用 generateGroundedContent
方法。這個範例也使用系統指令,在第一輪對話中以笑臉表情符號結束回覆。
REST
在下列 curl 要求中傳送第一個提示。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
接著傳送第二個提示詞做為後續提示。加入使用者的第一個提示,然後加入模型對應的回覆,做為情境。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] }, { "role": "model", "parts": [ { "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion. 😊 \n" } ] }, { "role": "user", "parts": [ { "text": "Rephrase the answer in an abstracted list." } ] } ], "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
逐句顯示已建立基準的答案
您可以選擇串流模型回覆的答案。如果答案特別長,一次傳送整個回覆會造成嚴重延遲,這時這項功能就非常實用。串流傳輸答案時,回應會分解為多個候選項目陣列,其中包含答案文字的連續部分。
如要取得串流式有根據的回覆,請按照下列步驟操作:
REST
以下範例說明如何串流傳輸有根據的答案。這個範例會使用 streamGenerateGroundedContent
方法,並以 Google 搜尋做為回覆的依據,不必進行動態擷取設定。您可以使用類似的步驟,透過其他依據來源生成有依據的回覆。
在下列 curl 要求中傳送提示。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } } ]'
更改下列內容:
PROJECT_NUMBER
:您的 Google Cloud 專案編號。PROMPT_TEXT
:使用者提供的提示。SYSTEM_INSTRUCTION
: 選填欄位,可提供前言或其他背景資訊。MODEL_ID
: 這個選填欄位可設定要用來生成基礎答案的 Gemini 模型 ID。如需可用模型 ID 清單,請參閱「支援的型號」。TEMPERATURE
: 選填欄位,用於設定取樣時使用的溫度。Google 建議將溫度設為 0.0。詳情請參閱「Gemini 模型參數」。TOP_P
: 選用欄位,可為模型設定 top-P 值。詳情請參閱「Gemini 模型參數」。TOP_K
: 選用欄位,可為模型設定前 K 個值。詳情請參閱「Gemini 模型參數」。LANGUAGE_CODE
: 這個選用欄位可用於設定生成答案和傳回的區塊文字語言。如果系統無法從查詢判斷語言,就會使用這個欄位。預設值為en
。如需語言代碼清單,請參閱「語言」。LATITUDE
: 選填欄位,用於設定緯度。輸入十進位度數值,例如-25.34
。LONGITUDE
: 設定經度的選填欄位。輸入十進位度數值,例如131.04
。
串流傳輸有依據的答案範例
在下列範例中,要求會將 Google 搜尋指定為基礎來源,以便串流傳輸答案,而不使用動態擷取設定。串流答案會分散在多個候選回應中。這個範例使用 streamGenerateGroundedContent
方法。
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "Summarize How to delete a data store in AI Applications?" } ] } ], "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } ]'
支援的模型
下列模型支援基礎:
- 僅支援文字輸入的 Gemini 1.5 Pro
- 僅支援文字輸入的 Gemini 1.5 Flash
如要進一步瞭解這些 Gemini 模型,請參閱「Gemini 模型版本和生命週期」。
呼叫 generateGroundedContent
方法時,可以使用下列模型 ID:
模型 ID | 自動更新 |
---|---|
default |
是 |
gemini-1.5-flash |
是 |
gemini-1.5-flash-001 |
否 |
gemini-1.5-flash-002 |
否 |
gemini-1.5-pro |
是 |
gemini-1.5-pro-001 |
否 |
gemini-1.5-pro-002 |
否 |
後續步驟
瞭解如何搭配其他 RAG API 使用基礎生成方法,從非結構化資料生成基礎答案。