Skip to main content
Gmail工具允许您的代理从关联的电子邮件账户创建和查看消息。

设置

您可以通过两种方式进行身份验证:
  1. 向凭证对象提供通过OAuth2令牌交换获得的访问令牌。 这可以是一个字符串或一个函数,以便处理令牌过期和验证。 可以使用支持从联合连接获取访问令牌的身份提供者来完成此操作。 这是最安全的方法,因为访问权限和范围将仅限于特定的最终用户。 当在旨在供拥有自己Gmail账户的最终用户使用的应用程序中使用该工具时,此方法更为合适。
  2. 您需要从此处获取API密钥,并启用新的Gmail API。 然后,设置环境变量 GMAIL_CLIENT_EMAIL,以及 GMAIL_PRIVATE_KEYGMAIL_KEYFILE
要使用Gmail工具,您需要安装以下官方对等依赖项:
有关安装LangChain包的通用说明,请参阅此部分
npm
npm install @langchain/openai @langchain/community @langchain/core googleapis

用法

import { initializeAgentExecutorWithOptions } from "@langchain/classic/agents";
import { OpenAI } from "@langchain/openai";
import {
  GmailCreateDraft,
  GmailGetMessage,
  GmailGetThread,
  GmailSearch,
  GmailSendMessage,
} from "@langchain/community/tools/gmail";
import { StructuredTool } from "@langchain/core/tools";

export async function run() {
  const model = new OpenAI({
    temperature: 0,
    apiKey: process.env.OPENAI_API_KEY,
  });

  // 这些是Gmail工具的默认参数
  //   const gmailParams = {
  //     credentials: {
  //       clientEmail: process.env.GMAIL_CLIENT_EMAIL,
  //       privateKey: process.env.GMAIL_PRIVATE_KEY,
  //       // 需要 (privateKey + clientEmail) 或 accessToken
  //       accessToken: "一个访问令牌或获取访问令牌的函数",
  //     },
  //     scopes: ["https://mail.google.com/"], // 如果使用访问令牌则不需要
  //   };

  // 对于自定义参数,请取消注释上面的代码,将值替换为您自己的值,并将其传递给下面的工具
  const tools: StructuredTool[] = [
    new GmailCreateDraft(),
    new GmailGetMessage(),
    new GmailGetThread(),
    new GmailSearch(),
    new GmailSendMessage(),
  ];

  const gmailAgent = await initializeAgentExecutorWithOptions(tools, model, {
    agentType: "structured-chat-zero-shot-react-description",
    verbose: true,
  });

  const createInput = `为我创建一个Gmail草稿,以便编辑一封来自一只渴望与疏远的朋友(一只猫)合作进行一些研究的、有感知能力的鹦鹉视角的信。但在任何情况下都不得发送该消息。`;

  const createResult = await gmailAgent.invoke({ input: createInput });
  //   创建结果 {
  //     output: '我已为您创建了一个草稿邮件供您编辑。草稿ID为 r5681294731961864018。'
  //   }
  console.log("创建结果", createResult);

  const viewInput = `你能在我的草稿中搜索最新的邮件吗?`;

  const viewResult = await gmailAgent.invoke({ input: viewInput });
  //   查看结果 {
  //     output: "您草稿中最新的邮件来自 hopefulparrot@gmail.com,主题为 '合作机会'。邮件正文如下:'亲爱的 [朋友],希望这封信能让你安好。我写信给你,是希望重燃我们的友谊,并讨论一起合作进行一些研究的可能性。我知道我们过去有过分歧,但我相信我们可以搁置分歧,为了更大的利益而合作。期待你的回复。此致,[鹦鹉]'"
  //   }
  console.log("查看结果", viewResult);
}

相关内容