取得 StreamAssist 的搜尋結果

在網頁應用程式中,您可以透過串流回覆的形式取得問題解答。本文說明如何使用 REST API 取得答案。如要使用 Gemini Enterprise 網頁應用程式,請參閱「與助理對話」。

StreamAssist 總覽

StreamAssist 提供強大的互動方式,可處理使用者查詢。這項功能以串流方式運作,可即時來回互動。

這項 API 的主要功能包括:

  • 維持對話情境:使用工作階段維持對話情境,確保能理解先前互動範圍內的後續查詢。

  • 納入提供的檔案:將附加檔案做為背景資訊,提供更精確、更相關的回覆。

  • 完美整合:可與各種代理和工具整合,滿足多種使用者要求。

事前準備

請確認您已備妥下列項目:

  • Google Cloud已啟用 Discovery Engine API。您可以在Google Cloud 控制台的「Discovery Engine API」頁面啟用。

    前往 Discovery Engine API

  • 已獲派 discoveryengine.assistants.assist 權限的 Discovery Engine 角色。

  • 現有的 Gemini Enterprise 應用程式。如要建立應用程式,請參閱「建立應用程式」。

取得搜尋結果

您可以使用 streamAssist 方法,向 Gemini Enterprise 查詢並取得答案。下列 curl 指令會列出必填欄位。

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
  -d '
{
  "query": {
    "text": "QUERY_TEXT_1"
  }
}'

更改下列內容:

  • ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
    • us 適用於美國多區域
    • eu 代表歐盟多區域
    • global 適用於全域位置
    詳情請參閱「為資料儲存庫指定多區域」。
  • PROJECT_ID: Google Cloud 專案的 ID。
  • APP_ID:Gemini Enterprise 應用程式的專屬 ID。
  • LOCATION:資料儲存庫的多區域:global、us 或 eu
  • QUERY_TEXT_1:搜尋查詢文字。

如要進一步瞭解欄位和傳回的內容,請參閱「回應主體」。

Python

在試用這個範例之前,請先按照「使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程」中的 Python 設定說明操作。詳情請參閱 Gemini Enterprise Python API 參考文件。

如要向 Gemini Enterprise 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
query = "What is Gemini Enterprise?"


def stream_assist_sample(
    project_id: str,
    location: str,
    engine_id: str,
    query: str,
):
    # For more information, refer to:
    # https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    client = discoveryengine.AssistantServiceClient(client_options=client_options)

    request = discoveryengine.StreamAssistRequest(
        name=client.assistant_path(
            project=project_id,
            location=location,
            collection="default_collection",
            engine=engine_id,
            assistant="default_assistant",
        ),
        query=discoveryengine.Query(text=query),
    )

    # Make the request
    stream = client.stream_assist(request=request)

    # Handle the response
    for response in stream:
        print(response)

使用相同工作階段取得搜尋結果

如要在現有工作階段中繼續對話,並取得 Gemini Enterprise 的回覆,請使用 streamAssist 方法。下列程式碼範例顯示必要欄位:

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
  -d '
{
  "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID",
  "query": {
    "text": "QUERY_TEXT_2"
  }
}'

更改下列內容:

  • ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
    • us 適用於美國多區域
    • eu 代表歐盟多區域
    • global 適用於全域位置
    詳情請參閱「為資料儲存庫指定多區域」。
  • PROJECT_ID: Google Cloud 專案的 ID。
  • APP_ID:Gemini Enterprise 應用程式的專屬 ID。
  • LOCATION:資料儲存庫的多區域:global、us 或 eu
  • QUERY_TEXT_2:搜尋查詢文字。
  • SESSION_ID:先前對話或查詢的工作階段 ID。

如要進一步瞭解欄位和傳回的內容,請參閱「回應主體」。

Python

在試用這個範例之前,請先按照「使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程」中的 Python 設定說明操作。詳情請參閱 Gemini Enterprise Python API 參考文件。

如要向 Gemini Enterprise 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
session = "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID" # From previous session
query = "What is Gemini Enterprise?"


def stream_assist_session_sample(
    project_id: str,
    location: str,
    engine_id: str,
    session: str,
    query: str,
):
    # For more information, refer to:
    # https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    client = discoveryengine.AssistantServiceClient(client_options=client_options)

    request = discoveryengine.StreamAssistRequest(
        name=client.assistant_path(
            project=project_id,
            location=location,
            collection="default_collection",
            engine=engine_id,
            assistant="default_assistant",
        ),
        session=session,
        query=discoveryengine.Query(text=query),
    )

    # Make the request
    stream = client.stream_assist(request=request)

    # Handle the response
    for response in stream:
        print(response.answer)
        # Get Session ID
        print(response.session_info.session)

上傳檔案並取得搜尋結果 (預先發布版)

如要提供更多背景資訊給助理,請將檔案上傳至工作階段,然後查詢檔案內容。步驟如下:

  1. 使用 addContextFile 方法將檔案上傳至工作階段。

    REST

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/sessions/SESSION_ID:addContextFile" \
      -d '
    {
      "fileName": "FILE_NAME",
      "mimeType": "MIME_TYPE",
      "fileContents": "BASE64_ENCODED_FILE"
    }'
    

    更改下列內容:

    • ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
      • us 適用於美國多區域
      • eu 代表歐盟多區域
      • global 適用於全域位置
      詳情請參閱「為資料儲存庫指定多區域」。
    • PROJECT_ID: Google Cloud 專案的 ID。
    • LOCATION:資料儲存庫的多區域:global、us 或 eu
    • APP_ID:Gemini Enterprise 應用程式的專屬 ID。
    • SESSION_ID:先前對話或查詢的工作階段 ID。
    • FILE_NAME:檔案名稱。
    • MIME_TYPE:檔案的 MIME 類型,例如 text/plain 或 application/pdf。如要進一步瞭解不同的媒體類型,請參閱「媒體類型」。
    • BASE64_ENCODED_FILE:檔案的 Base64 編碼表示法。

    如要進一步瞭解欄位和傳回的內容,請參閱「回應主體」。

  2. 使用同一個工作階段,透過 streamAssist 方法詢問有關上傳檔案的問題。

    REST

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
      -d '
    {
      "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID",
      "fileIds": ["FILE_ID"],
      "query": {
        "text": "QUERY_TEXT_3"
      }
    }'
    
    

    更改下列內容:

    • ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
      • us 適用於美國多區域
      • eu 代表歐盟多區域
      • global 適用於全域位置
      詳情請參閱「為資料儲存庫指定多區域」。
    • PROJECT_ID: Google Cloud 專案的 ID。
    • APP_ID:Gemini Enterprise 應用程式的專屬 ID。
    • LOCATION:資料儲存庫的多區域:global、us 或 eu
    • QUERY_TEXT_3:搜尋查詢文字。
    • SESSION_ID:先前對話或查詢的工作階段 ID。
    • FILE_ID:上傳至助理的檔案 ID。

    如要進一步瞭解欄位和傳回的內容,請參閱「回應主體」。