Skip to main content
本加载器介绍了如何从 Gmail 加载数据。从 Gmail 加载数据的方式有很多种,当前加载器在实现方式上较为特定。其工作流程是:首先查找您发送的所有邮件,然后找出您回复过往邮件的那些邮件。接着,它会获取被回复的原始邮件,并创建一个训练样本,包含原始邮件内容及您的回复邮件。 请注意,这种方式存在明显的局限性。例如,所有创建的样本仅考虑前一封邮件作为上下文。 使用方法:
  • 设置 Google 开发者账户:前往 Google 开发者控制台,创建一个项目,并为该项目启用 Gmail API。完成后您将获得一个 credentials.json 文件,后续步骤会用到。
  • 安装 Google 客户端库:运行以下命令安装 Google 客户端库:
pip install -qU  google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"]


creds = None
# 文件 token.json 存储用户的访问令牌和刷新令牌,
# 并在首次授权流程完成后自动创建。
if os.path.exists("email_token.json"):
    creds = Credentials.from_authorized_user_file("email_token.json", SCOPES)
# 如果没有(有效的)凭据可用,则让用户登录。
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            # 请在此处填写您的凭据文件。请按照 https://cloud.google.com/docs/authentication/getting-started 创建 json 文件
            "creds.json",
            SCOPES,
        )
        creds = flow.run_local_server(port=0)
    # 保存凭据供下次运行使用
    with open("email_token.json", "w") as token:
        token.write(creds.to_json())
from langchain_community.chat_loaders.gmail import GMailLoader
loader = GMailLoader(creds=creds, n=3)
data = loader.load()
# 有时可能会出现错误,我们会静默忽略
len(data)
2
from langchain_community.chat_loaders.utils import (
    map_ai_messages,
)
# 这将使由 hchase@langchain.com 发送的邮件成为 AI 消息
# 这意味着您将训练一个 LLM,使其模拟 hchase 的身份进行回复
training_data = list(
    map_ai_messages(data, sender="Harrison Chase [hchase@langchain.com](mailto:hchase@langchain.com)")
)