在笔记本中添加和管理数据源 (API)

创建笔记本后,您可以将各种内容类型作为数据源添加到其中。您可以批量执行此操作,也可以逐个文件执行此操作。部分来源包括 Google 文档、Google 幻灯片、纯文本、网页内容和 YouTube 视频。

本页面介绍了如何执行以下任务:

准备工作

如果您计划添加 Google 文档或 Google 幻灯片作为数据源,则必须使用 Google 用户凭据授权访问 Google 云端硬盘。为此,请运行以下 gloud auth login 命令,然后按照 CLI 中的说明操作。

gcloud auth login --enable-gdrive-access

批量添加数据源

如需向笔记本添加来源,请调用 notebooks.sources.batchCreate 方法。

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_NUMBER/locations/LOCATION/notebooks/NOTEBOOK_ID/sources:batchCreate" \
  -d '{
  "userContents": [
    {
    USER_CONTENT
    }
   ]
  }'

替换以下内容:

  • ENDPOINT_LOCATION:API 请求的多区域。分配以下值之一:
    • us-(适用于美国多区域)
    • 欧盟多区域的 eu-
    • global-(针对全球位置)
    如需了解详情,请参阅为数据存储区指定多区域
  • PROJECT_NUMBER:您的 Google Cloud 项目的编号。
  • LOCATION:数据存储区的地理位置,例如 global。 如需了解详情,请参阅位置
  • NOTEBOOK_ID:笔记本的唯一标识符。
  • USER_CONTENT:数据源内容。

您只能添加以下数据源之一作为内容:

  • 对于包含 Google 文档或 Google 幻灯片的 Google 云端硬盘内容,请添加:

     "googleDriveContent": {
       "documentId": "DOCUMENT_ID_GOOGLE",
       "mimeType": "MIME_TYPE",
       "sourceName": "DISPLAY_NAME_GOOGLE"
     }
    

    替换以下内容:

    • DOCUMENT_ID_GOOGLE:Google 云端硬盘中文件的 ID。此 ID 会显示在文件的网址中。如需获取文件的文档 ID,请打开相应文件。其网址格式为:https://docs.google.com/FILE_TYPE/d/DOCUMENT_ID_GOOGLE/edit?resourcekey=RESOURCE_KEY
    • MIME_TYPE:所选文档的 MIME 类型。使用 application/vnd.google-apps.document 表示 Google 文档,使用 application/vnd.google-apps.presentation 表示 Google 幻灯片。
    • DISPLAY_NAME_GOOGLE:数据源的显示名称。
  • 对于原始文本输入,请添加:

      "textContent": {
        "sourceName": "DISPLAY_NAME_TEXT",
        "content": "TEXT_CONTENT"
      }
    

    替换以下内容:

    • DISPLAY_NAME_TEXT:数据源的显示名称。
    • TEXT_CONTENT:您要上传为数据源的原始文本内容。
  • 对于网页内容,请添加:

     "webContent": {
       "url": "URL_WEBCONTENT",
       "sourceName": "DISPLAY_NAME_WEB"
     }
    

    替换以下内容:

    • URL_WEBCONTENT:要上传为数据源的内容的网址。
    • DISPLAY_NAME_WEB:数据源的显示名称。
  • 对于视频内容,请添加:

     "videoContent": {
       "url": "URL_YOUTUBE"
     }
    

    URL_YOUTUBE 替换为您要上传为数据源的 YouTube 视频的网址。

如果请求成功,您应该会收到 source 对象的实例作为响应,类似于以下 JSON。请注意 SOURCE_IDSOURCE_RESOURCE_NAME,它们是执行其他任务(例如检索或删除数据源)所必需的。

{
  "sources": [
    {
      "sourceId": {
        "id": "SOURCE_ID"
      },
      "title": "DISPLAY_NAME",
      "metadata": {
        "xyz": "abc"
      },
      "settings": {
        "status": "SOURCE_STATUS_COMPLETE"
      },
      "name": "SOURCE_RESOURCE_NAME"
    }
  ]
}

上传文件作为来源

除了批量添加数据源之外,您还可以上传单个文件,以便在笔记本中将其用作数据源。如需上传单个文件,请调用 notebooks.sources.uploadFile 方法。

REST

curl -X POST --data-binary "@PATH/TO/FILE" \
  -H "Authorization:Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-Upload-File-Name: FILE_DISPLAY_NAME" \
  -H "X-Goog-Upload-Protocol: raw" \
  -H "Content-Type: CONTENT_TYPE" \
  "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/upload/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/notebooks/NOTEBOOK_ID/sources:uploadFile" \

替换以下内容:

  • PATH/TO/FILE:您要上传的文件的路径。
  • FILE_DISPLAY_NAME:一个字符串,用于表示笔记本中文件的显示名称。
  • CONTENT_TYPE:您要上传的内容类型。如需查看支持的内容类型列表,请参阅支持的内容类型
  • ENDPOINT_LOCATION:API 请求的多区域。分配以下值之一:
    • us-(适用于美国多区域)
    • 欧盟多区域的 eu-
    • global-(针对全球位置)
    如需了解详情,请参阅为数据存储区指定多区域
  • PROJECT_NUMBER:您的 Google Cloud 项目的编号。
  • LOCATION:数据存储区的地理位置,例如 global。 如需了解详情,请参阅位置
  • NOTEBOOK_ID:笔记本的唯一标识符。

如果请求成功,您应该会收到类似于以下内容的 JSON 响应。

{
  "sourceId": {
    "id": "SOURCE_ID"
  }
}

支持的内容类型

您上传作为来源的文件必须受支持。

支持以下文档内容类型:

文件扩展名 内容类型
.pdf application/pdf
.txt text/plain
.md text/markdown
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

支持以下音频内容类型:

文件扩展名 内容类型
.3g2 audio/3gpp2
.3gp audio/3gpp
.aac audio/aac
.aif audio/aiff
.aifc audio/aiff
.aiff audio/aiff
.amr audio/amr
.au audio/basic
.avi video/x-msvideo
.cda application/x-cdf
.m4a audio/m4a
.mid audio/midi
.midi audio/midi
.mp3 audio/mpeg
.mp4 video/mp4
.mpeg audio/mpeg
.ogg audio/ogg
.opus audio/ogg
.ra audio/vnd.rn-realaudio
.ram audio/vnd.rn-realaudio
.snd audio/basic
.wav audio/wav
.weba audio/webm
.wma audio/x-ms-wma

支持以下图片内容类型:

文件扩展名 内容类型
.png image/png
.jpg image/jpg
.jpeg image/jpeg

检索来源

如需检索已添加到笔记本中的特定来源,请使用 notebooks.sources.get 方法。

REST

curl -X GET \
  -H "Authorization:Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/notebooks/NOTEBOOK_ID/sources/SOURCE_ID"

替换以下内容:

  • ENDPOINT_LOCATION:API 请求的多区域。分配以下值之一:
    • us-(适用于美国多区域)
    • 欧盟多区域的 eu-
    • global-(针对全球位置)
    如需了解详情,请参阅为数据存储区指定多区域
  • PROJECT_NUMBER:您的 Google Cloud 项目的编号。
  • LOCATION:数据存储区的地理位置,例如 global。 如需了解详情,请参阅位置
  • NOTEBOOK_ID:您在创建笔记本时收到的唯一标识符。如需了解详情,请参阅创建笔记本
  • SOURCE_ID:您在将来源添加到笔记本时收到的来源标识符。

如果请求成功,您应该会收到类似以下内容的 JSON 响应。

{
  "sources": [
    {
      "sourceId": {
        "id": "SOURCE_ID"
      },
      "title": "DISPLAY_NAME",
      "metadata": {
        "wordCount": 148,
        "tokenCount": 160
      },
      "settings": {
        "status": "SOURCE_STATUS_COMPLETE"
      },
     "name": "SOURCE_RESOURCE_NAME"

    }
  ]
}

从笔记本中删除数据源

如需从笔记本中批量删除数据源,请使用 notebooks.sources.batchDelete 方法。

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_NUMBER/locations/LOCATION/notebooks/"NOTEBOOK_ID"/sources:batchDelete"
    -d '{
      "names": [
        "SOURCE_RESOURCE_NAME_1",
        "SOURCE_RESOURCE_NAME_2"
      ]
    }'

替换以下内容:

  • ENDPOINT_LOCATION:API 请求的多区域。分配以下值之一:
    • us-(适用于美国多区域)
    • 欧盟多区域的 eu-
    • global-(针对全球位置)
    如需了解详情,请参阅为数据存储区指定多区域
  • PROJECT_NUMBER:您的 Google Cloud 项目的编号。
  • LOCATION:数据存储区的地理位置,例如 global。 如需了解详情,请参阅位置
  • NOTEBOOK_ID:笔记本的唯一标识符。
  • SOURCE_RESOURCE_NAME:要删除的数据源的完整资源名称。此字段的格式如下:projects/PROJECT_NUMBER/locations/LOCATION/notebooks/NOTEBOOK_ID/source/SOURCE_ID

如果请求成功,您应该会收到一个空的 JSON 对象。

后续步骤