排解知識輔助功能問題

您可以查看生成式知識輔助 (GKA) 和主動式生成式知識輔助 (PGKA) 的詳細資訊,包括失敗次數、功能使用行為和延遲時間。啟用 enable_response_debug_info,即可在 knowledge_assist_debug_info 物件中查看這些疑難排解詳細資料。

設定對話設定檔以進行疑難排解

如要存取 GKA 和 PGKA 的疑難排解資訊,您必須在對話設定檔中開啟 enable_response_debug_info 欄位。如果這個欄位處於關閉狀態,當查詢沒有結果時,知識搜尋會傳回 NotFound 錯誤,knowledge assist 則會傳回空白訊息。開啟 enable_response_debug_info 即可提供 OK 回應,說明沒有結果的原因。這項修改會影響 API 和現有整合。

生成式知識輔助 (GKA)

如要取得 GKA 查詢的詳細疑難排解資訊,必須在對話設定檔中啟用這項功能。建立或更新對話設定檔時,請將 human_agent_assistant_config 中的 enable_response_debug_info 欄位設為 true,如下所示。

parent:"projects/PROJECT_ID/locations/LOCATION-ID"
conversation_profile {
  display_name: "DISPLAY-NAME"
  human_agent_assistant_config {
    human_agent_suggestion_config {
      feature_configs {
        suggestion_feature {
          type: KNOWLEDGE_SEARCH
        }
        query_config {
          dialogflow_query_source {
            human_agent_side_config {
              agent: "projects/PROJECT_ID/locations/LOCATION-NAME/agents/AGENT-ID"
            }
          }
        }
        enable_response_debug_info: true
      }
    }
  }
}

啟用 enable_response_debug_info 欄位後,生成器會傳回 knowledge_search_debug_info 物件,做為 SearchKnowledgeResponse 的一部分,以及生成的答案。這項資訊可提供知識搜尋的效能和行為相關深入分析。

排解 PGKA V2 問題

啟用 enable_response_debug_info field 後,KnowledgeAssistDebugInfo 物件會包含多個專為 PGKA V2 設計的新欄位。如要存取這些欄位,請將 baseline_model_versionenable_response_debug_info 設為 2.0。 以下是設定範例,說明如何存取 PGKA V2 中的疑難排解資訊:

  "name": "projects/PROJECT_ID/locations/LOCATION/conversationProfiles/PROFILE_ID",
  "human_agent_assistant_config": {
    "human_agent_suggestion_config": {
      "feature_configs": [
        {
          "suggestion_feature": {
            "type": "KNOWLEDGE_ASSIST"
          },
          "query_config": {
            "dialogflow_query_source": {
              "agent": "projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID"
            }
          },
          "conversation_model_config": {
            "baseline_model_version": "2.0"
          },
          "disable_query_search_context": true,
          "enable_response_debug_info": true,
            "suggestion_trigger_event": "END_OF_UTTERANCE",
        }
      ]
    }
  }

疑難排解詳細資料

search_knowledge_debug_info 物件包含多項重要資訊,有助於排解問題,並瞭解 GKA 的搜尋程序。

搜尋失敗或回答內容沒有幫助

datastore_response_reason 欄位會提供資料服務或答案品質的高階狀態,協助您快速找出搜尋失敗或答案品質下降的原因。

可能的值包括:

  • NONE:要求已處理完畢,沒有任何特定問題需要回報。
  • SEARCH_OUT_OF_QUOTA:由於超出用量配額,搜尋作業遭到封鎖。
  • SEARCH_EMPTY_RESULTS:搜尋結果未顯示 Datastore 中的任何文件。
  • ANSWER_GENERATION_GEN_AI_DISABLED:專案已停用生成式 AI 功能。
  • ANSWER_GENERATION_OUT_OF_QUOTA:由於超過用量配額,系統已封鎖答案生成功能。
  • ANSWER_GENERATION_ERROR:生成答案時發生內部錯誤。
  • ANSWER_GENERATION_NOT_ENOUGH_INFO:系統擷取的文件資訊不足,無法生成回覆。
  • ANSWER_GENERATION_RAI_FAILED:生成答案遭到負責任的 AI 技術 (RAI) 篩選器封鎖。
  • ANSWER_GENERATION_NOT_GROUNDED:建立基準的驗證步驟判定生成的答案與來源文件不符,因此已捨棄。

主動行為

search_knowledge_behavior 物件會指出 GKA 要求期間啟用的特定行為。

  • answer_generation_rewriter_ontrue 值表示系統已重新編寫使用者查詢,以便更有效地搜尋 Datastore。false 值表示產生器未重新編寫查詢。
  • end_user_metadata_includedtrue 值表示 end_user_metadata 已在呼叫資料儲存庫代理程式時一併傳遞。false 值表示 end_user_metadata 未傳遞至資料儲存庫代理程式。

從擷取的內容排解問題

ingested_context_reference_debug_info 欄位提供與擷取內容相關的疑難排解資訊,有助於搜尋。

  • project_not_allowlistedtrue 值表示專案不在許可清單中,因此無法使用擷取的內容參照功能。false 值表示專案在許可清單中。
  • context_reference_retrieved:指出是否已從資料庫成功擷取情境參照。
  • ingested_parameters_debug_info:從內容參照擷取的參數清單及其狀態。每個參數都會顯示參數名稱和下列其中一種擷取狀態。
    • INGESTION_STATUS_SUCCEEDED:參數已成功擷取。
    • INGESTION_STATUS_CONTEXT_NOT_AVAILABLE:無法擷取參數。
    • INGESTION_STATUS_PARSE_FAILED:系統無法剖析參數內容。
    • INGESTION_STATUS_INVALID_ENTRY:內容項目數量超出預期 (應只有一個)。
    • INGESTION_STATUS_INVALID_FORMAT:內容格式不符預期 (例如 JSON)。
    • INGESTION_STATUS_LANGUAGE_MISMATCH:情境參照的語言與對話語言不符。

延遲時間

  • service_latency 物件會細分各種內部服務所花費的時間,協助您找出效能瓶頸。

  • internal_service_latencies:清單,內含程序每個內部步驟的延遲詳細資料。每個項目都包含名稱 (step)、所需時間 (以毫秒為單位) (latency_ms),以及開始 (start_time) 和結束 (complete_time) 時間。內部程序步驟的可能名稱如下:

    • total_data_store_agent:測量處理整個 GKA 要求的總時間,從接收查詢到傳回最終答案。做為代理程式所有資料儲存區搜尋步驟的總計時器。
    • query_rewrite:重新撰寫使用者初始查詢所花費的時間,以便更有效地搜尋知識文件。
    • search_query:資料儲存庫代理程式使用 (可能經過重寫的) 查詢,針對您設定的資料儲存庫執行搜尋所花費的時間。
    • summarization:從 Datastore 擷取搜尋結果,並生成簡潔的自然語言答案所花費的時間 (ReAct 輪次)。
    • grounding:驗證基準程序所花費的時間。這項重要步驟會在傳回生成的答案前,檢查來源文件是否確實支援該答案。
    • query_generation:分析進行中對話並主動生成相關搜尋查詢所花費的時間。
    • generated_query_rai:對主動生成的查詢執行負責任的 AI 技術 (RAI) 安全檢查所花的時間,檢查完畢後才會將查詢用於搜尋。
    • query_categorization:使用 Agent Search 將生成的查詢分類所花費的時間 (如果已設定這項功能)。

疑難排解資訊回應範例

以下是 JSON 回應中 search_knowledge_debug_info 物件的完整範例。

{
  "search_knowledge_debug_info": {
    "datastore_response_reason": "ANSWER_GENERATION_NOT_ENOUGH_INFO",
    "search_knowledge_behavior": {
      "answer_generation_rewriter_on": true,
      "end_user_metadata_included": true
    },
    "ingested_context_reference_debug_info": {
      "project_not_allowlisted": false,
      "context_reference_retrieved": true,
      "ingested_parameters_debug_info": [
        {
          "parameter": "order_id",
          "ingestion_status": "INGESTION_STATUS_SUCCEEDED"
        },
        {
          "parameter": "user_profile",
          "ingestion_status": "INGESTION_STATUS_INVALID_FORMAT"
        },
        {
          "parameter": "product_sku",
          "ingestion_status": "INGESTION_STATUS_CONTEXT_NOT_AVAILABLE"
        }
      ]
    },
    "service_latency": {
      "internal_service_latencies": [
        {
          "step": "total_data_store_agent",
          "latency_ms": 4125.781,
          "start_time": {
            "seconds": 1750969252,
            "nanos": 550649603
          },
          "complete_time": {
            "seconds": 1750969256,
            "nanos": 676430603
          }
        },
        {
          "step": "query_rewrite",
          "latency_ms": 412.0,
          "start_time": {
            "seconds": 1750969252,
            "nanos": 780119421
          },
          "complete_time": {
            "seconds": 1750969253,
            "nanos": 192119421
          }
        },
        {
          "step": "search_query",
          "latency_ms": 950.0,
          "start_time": {
            "seconds": 1750969253,
            "nanos": 192119421
          },
          "complete_time": {
            "seconds": 1750969254,
            "nanos": 142119421
          }
        },
        {
          "step": "summarization",
          "latency_ms": 721.0,
          "start_time": {
            "seconds": 1750969254,
            "nanos": 142119421
          },
          "complete_time": {
            "seconds": 1750969254,
            "nanos": 863119421
          }
        },
        {
            "step": "grounding",
            "latency_ms": 155.0,
            "start_time": {
              "seconds": 1750969254,
              "nanos": 863119421
            },
            "complete_time": {
              "seconds": 1750969255,
              "nanos": 18119421
            }
        }
      ]
    }
  }
}

主動式生成知識輔助 (PGKA)

疑難排解功能可深入瞭解查詢產生、分類和答案擷取程序。knowledge_assist_debug_info 物件是建議結果中 knowledge_assist_answer 的一部分。

建立或更新對話設定檔時,請為 KNOWLEDGE_ASSIST 功能將 enable_response_debug_info 欄位設為 true,如下所示。

parent: "projects/PROJECT_ID/locations/LOCATION-ID"
conversation_profile {
  display_name: "DISPLAY-NAME"
  human_agent_assistant_config {
    human_agent_suggestion_config {
      feature_configs {
        suggestion_feature {
          type: KNOWLEDGE_ASSIST
        }
        query_config {
          dialogflow_query_source {
            agent: "projects/PROJECT_ID/locations/LOCATION-ID/agents/DATASTORE-AGENT-ID"
          }
        }
        enable_response_debug_info: true
      }
    }
  }
}

疑難排解詳細資料

knowledge_assist_debug_info 物件包含下列欄位,可協助您瞭解主動建議的端對端生命週期。

無法產生查詢

query_generation_failure_reason 欄位會說明對話可能未生成主動搜尋查詢的原因。

  • QUERY_GENERATION_FAILED:產生查詢時發生內部錯誤。
  • QUERY_GENERATION_NO_QUERY_GENERATED:生成器決定不產生查詢。如果對話主題沒有改變,或是最近建議了類似的查詢,通常就會發生這種情況。
  • QUERY_GENERATION_RAI_FAILED:負責任的 AI 技術 (RAI) 篩選器基於安全考量,封鎖了可能的查詢。
  • NOT_IN_ALLOWLIST:對話設定檔或代理程式層級的篩選規則封鎖了查詢生成作業。
  • QUERY_GENERATION_QUERY_REDACTED:由於生成的查詢含有遭遮蓋的私密資訊,因此生成器已封鎖該查詢。
  • QUERY_GENERATION_AGENT_LANGUAGE_MISMATCH:查詢生成失敗,因為服務專員的語言與顧客的語言不符。
  • QUERY_GENERATION_TRANSLATION_LANGUAGE_MISMATCH:翻譯後的訊息語言與對話設定檔的語言不符,因此無法生成查詢。
  • QUERY_GENERATION_TRANSLATED_MESSAGE_NOT_FOUND:生成器預期會找到用於生成查詢的翻譯訊息,但未找到。
  • QUERY_GENERATION_EMPTY_CONVERSATION:對話沒有訊息。這項功能僅適用於 PGKA V2。
  • QUERY_GENERATION_EMPTY_LAST_MESSAGE:最後一則訊息為空白或空白字元。這項功能僅適用於 PGKA V2。
  • QUERY_GENERATION_TRIGGERING_EVENT_CONDITION_NOT_MET:觸發事件設定 (例如 AGENT_MESSAGE) 與最後一則訊息的傳送者角色不符。這項功能僅適用於 PGKA V2。
  • QUERY_GENERATION_LLM_RESPONSE_PARSE_FAILED:系統無法剖析模型輸出的結構化 JSON 內容。這項功能僅適用於 PGKA V2。

無法將查詢分類

query_categorization_failure_reason 欄位會說明查詢分類可能失敗的原因。

  • QUERY_CATEGORIZATION_INVALID_CONFIG:用於分類的 Agent Search 設定無效,例如搜尋引擎為空白。
  • QUERY_CATEGORIZATION_RESULT_NOT_FOUND:Agent Search 的結果未包含分類結果。
  • QUERY_CATEGORIZATION_FAILED:呼叫 Agent Search 進行分類失敗。

Datastore 搜尋狀態

查詢產生後,datastore_response_reason 欄位會提供針對 Datastore 執行的搜尋狀態。

  • NONE:Datastore 已處理要求,沒有任何特定問題需要回報。
  • SEARCH_OUT_OF_QUOTA:由於超出使用配額,Agent Assist 封鎖了搜尋作業。
  • SEARCH_EMPTY_RESULTS:搜尋結果未顯示 Datastore 中的任何文件。
  • ANSWER_GENERATION_GEN_AI_DISABLED:專案已停用生成式 AI 功能。
  • ANSWER_GENERATION_OUT_OF_QUOTA:Agent Assist 因超出用量配額而封鎖答案生成功能。
  • ANSWER_GENERATION_ERROR:生成答案時發生內部錯誤。
  • ANSWER_GENERATION_NOT_ENOUGH_INFO:系統擷取的文件資訊不足,無法生成回覆。
  • ANSWER_GENERATION_RAI_FAILED:RAI 篩選器封鎖了生成的答案。
  • ANSWER_GENERATION_NOT_GROUNDED:基準驗證步驟判斷來源文件並未如實佐證生成的答案,因此系統捨棄了該答案。

有效設定

knowledge_assist_behavior 物件會顯示要求啟用的特定設定。

  • answer_generation_rewriter_ontrue 表示生成器已改寫查詢內容,以提供更優質的搜尋結果;false 則表示生成器未改寫查詢內容。
  • end_user_metadata_included:如果產生器將 end_user_metadata 傳遞至 Datastore,則為 true;如果沒有,則為 false
  • return_query_onlytrue 如果設定檔只會傳回產生的搜尋查詢,false 如果設定檔會傳回完整答案。
  • use_pubsub_delivery:如果產生器已設定透過 Pub/Sub 傳送結果,請選取 true,否則請選取 false
  • disable_sync_delivery:如果停用回應的同步傳送功能,則為 true;如果啟用回應的同步傳送功能,則為 false
  • previous_queries_included:如果生成器在生成查詢的過程中考慮了先前建議的查詢,則為 true;如果沒有,則為 false
  • use_translated_messagetrue (如果系統使用翻譯後的訊息生成查詢) 和 false (如果沒有)。
  • use_custom_safety_filter_leveltrue 如果套用了自訂安全篩選層級。false (如果生成器只使用預設安全篩選器等級)。
  • multiple_queries_generatedtrue 值表示模型產生多個查詢。這項功能適用於 PGKA V2。
  • query_contained_search_contexttrue 值表示產生的查詢包含搜尋情境。這項功能適用於 PGKA V2。
  • appended_search_context_count:這表示搜尋中成功使用的脈絡項目數量 (例如「產品」、「作業系統」)。這項功能適用於 PGKA V2。

從擷取的背景資訊取得的資訊

ingested_context_reference_debug_info 欄位提供與擷取內容相關的偵錯資訊,有助於搜尋。

  • project_not_allowlistedtrue 值表示專案不在許可清單中,因此無法使用擷取的內容參照功能。false 值表示專案在許可清單中。
  • context_reference_retrieved:指出是否已從資料庫成功擷取情境參照。
  • ingested_parameters_debug_info:從背景資訊參照擷取的參數清單及其狀態。每個參數都會顯示參數名稱和下列其中一個可能的擷取狀態。
    • INGESTION_STATUS_SUCCEEDED:參數已成功擷取。
    • INGESTION_STATUS_CONTEXT_NOT_AVAILABLE:無法擷取參數。
    • INGESTION_STATUS_PARSE_FAILED:系統無法剖析參數內容。
    • INGESTION_STATUS_INVALID_ENTRY:內容項目數量超出預期 (應只有一個)。
    • INGESTION_STATUS_INVALID_FORMAT:情境內容的格式不符預期。
    • INGESTION_STATUS_LANGUAGE_MISMATCH:情境參照的語言與對話語言不符。

PGKA V1 的疑難排解回應範例

以下是回應中 knowledge_assist_debug_info 物件的完整範例。

{
  "knowledge_assist_debug_info": {
    "query_generation_failure_reason": "QUERY_GENERATION_NO_QUERY_GENERATED",
    "query_categorization_failure_reason": "QUERY_CATEGORIZATION_FAILURE_REASON_UNSPECIFIED",
    "datastore_response_reason": "SEARCH_EMPTY_RESULTS",
    "knowledge_assist_behavior": {
      "answer_generation_rewriter_on": true,
      "end_user_metadata_included": false,
      "return_query_only": false,
      "use_pubsub_delivery": true,
      "disable_sync_delivery": true,
      "previous_queries_included": true,
      "use_translated_message": false,
      "use_custom_safety_filter_level": false
    },
    "ingested_context_reference_debug_info": {
      "project_not_allowlisted": false,
      "context_reference_retrieved": true,
      "ingested_parameters_debug_info": [
        {
          "parameter": "session_id",
          "ingestion_status": "INGESTION_STATUS_SUCCEEDED"
        }
      ]
    },
    "service_latency": {
      "internal_service_latencies": [
        {
          "step": "query_generation",
          "latency_ms": 680.5,
          "start_time": {
            "seconds": 1753123456,
            "nanos": 110220330
          },
          "complete_time": {
            "seconds": 1753123456,
            "nanos": 790720330
          }
        },
        {
          "step": "search_query",
          "latency_ms": 1050.1,
          "start_time": {
            "seconds": 1753123456,
            "nanos": 790720330
          },
          "complete_time": {
            "seconds": 1753123457,
            "nanos": 840820330
          }
        }
      ]
    }
  }
}

PGKA V2 的疑難排解回覆範例

以下是兩種情境的完整範例。

範例 1:成功提供建議,並附上行為標記

這個情境說明模型成功產生多個查詢,並使用搜尋脈絡擴充主要查詢。以下是欄位說明:

  • multiple_queries_generated:表示模型產生多個相關主題。
  • query_contained_search_context:確認主要查詢已透過結構化資料擴充。
  • appended_search_context_count:用於縮小搜尋範圍的鍵/值組合確切數量 (例如應用程式名稱、作業系統)。
{
  "message": {
    "name": "projects/PROJECT_ID/locations/LOCATION/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "My DesignApp is crashing on Mac. Also, how do I resolve the storage limit error?",
    "participant_role": "END_USER"
  },
  "human_agent_suggestion_results": [
    {
      "suggest_knowledge_assist_response": {
        "knowledge_assist_answer": {
          "suggested_query": {
            "query_text": "Troubleshoot application crashing",
            "search_contexts": [
              { "key": "application name", "value": "DesignApp" },
              { "key": "operating system", "value": "Mac" }
            ]
          },
          "suggested_query_answer": {
            "answer_text": "To troubleshoot the crash on Mac, ensure..."
          },
          "answer_record": "projects/PROJECT_ID/locations/LOCATION/answerRecords/ANSWER_RECORD_ID",
          "knowledge_assist_debug_info": {
            "knowledge_assist_behavior": {
              "multiple_queries_generated": true,
              "query_contained_search_context": true,
              "appended_search_context_count": 2
            }
          }
        },
        "latest_message": "projects/PROJECT_ID/locations/LOCATION/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
        "context_size": 20,
        "additional_suggested_query_results": [
          {
            "suggested_query": {
              "query_text": "Resolve storage limit exceeded error",
              "search_contexts": [
                { "key": "storage plan", "value": "1TB" }
              ]
            }
          }
        ]
      }
    }
  ]
}

範例 2:略過建議,並提供失敗原因

在這種情況下,系統會判斷不應觸發建議,因為事件條件未達成 (例如,觸發條件設為 AGENT_MESSAGE,但最後一則訊息來自 END_USER)。系統不會傳回錯誤,而是傳回成功狀態和具體原因。

{
  "message": {
    "name": "projects/PROJECT_ID/locations/LOCATION/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I am having trouble with my account.",
    "participant_role": "END_USER"
  },
  "human_agent_suggestion_results": [
    {
      "suggest_knowledge_assist_response": {
        "knowledge_assist_answer": {
          "knowledge_assist_debug_info": {
            "query_generation_failure_reason": "QUERY_GENERATION_TRIGGERING_EVENT_CONDITION_NOT_MET"
          }
        },
        "latest_message": "projects/PROJECT_ID/locations/LOCATION/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
        "context_size": 20
      }
    }
  ]
}

其他常見的失敗原因包括:

  • QUERY_GENERATION_EMPTY_CONVERSATION:對話中沒有任何訊息。
  • QUERY_GENERATION_EMPTY_LAST_MESSAGE:最後一則訊息為空白或僅含空白字元。
  • QUERY_GENERATION_LLM_RESPONSE_PARSE_FAILED:系統無法剖析大型語言模型的結構化輸出內容。