Question answering

語意檢索 API 提供代管的問答服務,可讓您使用 Google 的基礎架構建構檢索增強生成 (RAG) 系統。

方法:models.generateAnswer

根據輸入內容 GenerateAnswerRequest 生成有憑有據的答案。

端點

貼文 https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateAnswer

路徑參數

model string

必要欄位。用來生成有依據回覆的 Model 名稱。

格式:model=models/{model}。格式為 models/{model}

要求主體

要求主體的資料會採用以下結構:

Fields
contents[] object (Content)

必要欄位。與 Model 的當前對話內容。如果是單輪查詢,這就是需要回答的單一問題。如果是多輪查詢,這個重複欄位會包含對話記錄,以及清單中最後一個包含問題的 Content

注意:models.generateAnswer 目前僅支援英文查詢。

answerStyle enum (AnswerStyle)

必要欄位。答案的傳回樣式。

safetySettings[] object (SafetySetting)

(選用步驟) 用於封鎖不安全內容的不重複 SafetySetting 執行個體清單。

這項規定將於 GenerateAnswerRequest.contentsGenerateAnswerResponse.candidate 生效。每個 SafetyCategory 類型不得有多個設定。如果內容和回覆未達到這些設定的門檻,API 就會封鎖。這份清單會覆寫 safetySettings 中指定的每個 SafetyCategory 的預設設定。如果清單中提供的特定 SafetyCategory 沒有 SafetySetting,API 會使用該類別的預設安全設定。支援的危害類別包括 HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT。如需可用安全設定的詳細資訊,請參閱指南。此外,請參閱安全指南,瞭解如何在 AI 應用程式中納入安全考量。

grounding_source Union type
提供答案的來源。grounding_source 只能是下列其中一項:
inlinePassages object (GroundingPassages)

要求中提供的段落。

semanticRetriever object (SemanticRetrieverConfig)

從透過 Semantic Retriever API 建立的資源擷取的內容。

temperature number

(選用步驟) 控制輸出內容的隨機程度。

值可以介於 [0.0,1.0] 之間,值越接近 1.0,模型生成的回覆就越多元且有創意;值越接近 0.0,模型生成的回覆通常就越直接。對於「歸因問題回答」用途,通常建議使用低溫 (~0.2)。

回應主體

模型提供的回覆,內容有依據。

如果成功,回應主體會含有以下結構的資料:

欄位
answer object (Candidate)

模型提供的候選答案。

注意:即使給定的段落不太可能提供答案,模型一律會嘗試提供有根據的答案。在這種情況下,系統可能會提供品質不佳或沒有根據的答案,並顯示低 answerableProbability

answerableProbability number

僅供輸出。模型估算答案正確且以輸入段落為依據的機率。

如果 answerableProbability 偏低,表示答案可能並非根據來源內容生成。

如果 answerableProbability 偏低,建議採取下列做法:

  • 向使用者顯示「我們無法回答這個問題」等訊息。
  • 改用一般用途的 LLM,根據世界知識回答問題。這類備援的門檻和性質會因個別用途而異,0.5 是不錯的起始門檻。
inputFeedback object (InputFeedback)

僅供輸出。與用於回答問題的輸入資料相關的意見回饋,而非模型生成的問題回覆。

輸入資料可以是下列一或多項:

  • GenerateAnswerRequest.content 中最後一個項目指定的問題
  • GenerateAnswerRequest.content 中其他項目指定的對話記錄
  • 依據來源 (GenerateAnswerRequest.semantic_retrieverGenerateAnswerRequest.inline_passages)
JSON 表示法
{
  "answer": {
    object (Candidate)
  },
  "answerableProbability": number,
  "inputFeedback": {
    object (InputFeedback)
  }
}

GroundingPassages

重複的段落清單。

欄位
passages[] object (GroundingPassage)

段落清單。

JSON 表示法
{
  "passages": [
    {
      object (GroundingPassage)
    }
  ]
}

GroundingPassage

隨附於基礎設定的段落。

欄位
id string

段落的 ID,用於在以事實為依據的答案中歸因於這個段落。

content object (Content)

段落內容。

JSON 表示法
{
  "id": string,
  "content": {
    object (Content)
  }
}

SemanticRetrieverConfig

設定從使用 Semantic Retriever API 建立的 CorpusDocument 擷取基礎內容。

欄位
source string

必要欄位。要擷取的資源名稱。例如:corpora/123corpora/123/documents/abc

query object (Content)

必要欄位。查詢:用於根據相似度比對指定資源中的 Chunk

metadataFilters[] object (MetadataFilter)

(選用步驟) 篩選器,可從資源中選取 Document 和/或 Chunk

maxChunksCount integer

(選用步驟) 要擷取的相關 Chunk 數量上限。

minimumRelevanceScore number

(選用步驟) 擷取相關 Chunk 的最低關聯分數。

JSON 表示法
{
  "source": string,
  "query": {
    object (Content)
  },
  "metadataFilters": [
    {
      object (MetadataFilter)
    }
  ],
  "maxChunksCount": integer,
  "minimumRelevanceScore": number
}

AnswerStyle

有依據的答案的風格。

列舉
ANSWER_STYLE_UNSPECIFIED 未指定回答風格。
ABSTRACTIVE 簡潔但抽象的風格。
EXTRACTIVE 非常簡短且摘錄重點。
VERBOSE 詳細風格,包含額外詳細資料。回覆內容的格式可以是句子、段落、多個段落或項目符號等。

InputFeedback

與用於回答問題的輸入資料相關的意見回饋,而非模型生成的問題回覆。

欄位
safetyRatings[] object (SafetyRating)

輸入內容安全評分。每個類別最多只能有一個分級。

blockReason enum (BlockReason)

(選用步驟) 如果設定了這項屬性,系統會封鎖輸入內容,且不會傳回任何候選字。重新措辭。

JSON 表示法
{
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "blockReason": enum (BlockReason)
}

BlockReason

說明輸入內容遭到封鎖的原因。

列舉
BLOCK_REASON_UNSPECIFIED 預設值。這個值不會使用。
SAFETY 輸入內容基於安全原因而遭到封鎖。檢查 safetyRatings,瞭解是哪個安全類別封鎖了該內容。
OTHER 輸入內容因其他原因遭到封鎖。