可通过第三方组件 langchain-googledrive(Spring AI 开发)管理 Google Drive 的复杂性。该组件兼容 langchain_community.document_loaders.GoogleDriveLoader(LangChain)并可用于替换。为兼容容器环境,认证使用 ̀GOOGLE_ACCOUNT_FILE 环境变量关联凭据文件(用户或服务)
所有兼容 Google list()
API 的参数均可设置。要指定 Google 请求的新模式,可以使用 PromptTemplate()。
在构造函数中通过 kwargs 可设置提示词变量。
以下是一些预格式化的请求示例(使用 {query}, {folder_id} 和/或 {mime_type}):您可以通过自定义筛选条件来选择文件。以下是一些预定义的过滤模板:
模板
描述
gdrive-all-in-folder
从 folder_id 中返回所有兼容文件
gdrive-query
在所有驱动器中搜索 query
gdrive-by-name
搜索名称为 query 的文件
gdrive-query-in-folder
在 folder_id 中搜索 query(若 recursive=true 则递归搜索子文件夹)
gdrive-mime-type
搜索特定 mime_type
gdrive-mime-type-in-folder
在 folder_id 中搜索特定 mime_type
gdrive-query-with-mime-type
搜索 query 且具有特定 mime_type
gdrive-query-with-mime-type-and-folder
搜索 query 且具有特定 mime_type,同时位于 folder_id 中
loader = GoogleDriveLoader( folder_id=folder_id, recursive=False, template="gdrive-query", # Default template to use query="machine learning", num_results=2, # Maximum number of file to load supportsAllDrives=False, # GDrive `list()` parameter)for doc in loader.load(): print("---") print(doc.page_content.strip()[:60] + "...")
您可以通过自定义搜索模式。
from langchain_core.prompts.prompt import PromptTemplateloader = GoogleDriveLoader( folder_id=folder_id, recursive=False, template=PromptTemplate( input_variables=["query", "query_name"], template="fullText contains '{query}' and name contains '{query_name}' and trashed=false", ), # Default template to use query="machine learning", query_name="ML", num_results=2, # Maximum number of file to load)for doc in loader.load(): print("---") print(doc.page_content.strip()[:60] + "...")
loader = GoogleDriveLoader( template="gdrive-mime-type", mime_type="application/vnd.google-apps.presentation", # Only GSlide files gslide_mode="slide", num_results=2, # Maximum number of file to load)for doc in loader.load(): print("---") print(doc.page_content.strip()[:60] + "...")
参数 gsheet_mode 接受以下值:
"single": 每行生成一个文档
"elements" : 使用 Markdown 数组及 <PAGE BREAK> 标签生成文档
loader = GoogleDriveLoader( template="gdrive-mime-type", mime_type="application/vnd.google-apps.spreadsheet", # Only GSheet files gsheet_mode="elements", num_results=2, # Maximum number of file to load)for doc in loader.load(): print("---") print(doc.page_content.strip()[:60] + "...")