用于Gmail的ChatGPT:微调你的电子邮件的Chrome扩展程序

106 阅读4分钟

电子邮件交流是现代生活的一个重要部分,而我们表达信息的方式会影响信息的接收。在最近的一些休息时间里,我探索了几个小项目(例子一例子二),最后一个是ChatGPT邮件评论器--一个与Gmail整合的ChatGPT的Chrome扩展,使用OpenAI开发的AI语言模型为电子邮件草稿提供风格建议。

在这篇文章中,我们将深入探讨这个项目背后的灵感,它是如何在引擎盖下运作的,以及你如何使用它来提升你的电子邮件写作。

灵感

撰写电子邮件通常需要仔细考虑语气和风格,以符合预期的受众。选择一个友好的提醒,一个权威的通知,还是一个发自内心的信息,都会影响邮件的效果。我经常可以坐上太多时间,试图找到合适的词语来传达我的信息,只是盯着空白的Gmail草稿信息。

考虑到这一挑战,我利用ChatGPT的功能创建了一个Chrome扩展,在Gmail中提供实时风格建议,帮助用户,尤其是我自己,制作符合沟通目标的电子邮件。

它是如何工作的

ChatGPT Email Reviewer Chrome扩展与Gmail的用户界面无缝集成,为您的电子邮件草稿提供风格建议。为了实现这一目标,该扩展由两个主要组件组成:内容脚本(contentScript.js )和弹出式脚本(popup.js )。

让我们更详细地探讨这些组件:

内容脚本:与Gmail的DOM进行交互

内容脚本负责与Gmail的DOM交互,并提取邮件草稿文本。这个脚本被注入到Gmail页面中,并监听来自弹出式脚本的信息。

// contentScript.js

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "reviewEmail") {
    const selectedStyles = request.styles;

    if (request) {
      chrome.storage.sync.get(["apiKey", "signatureDelimiter"], result => {
        if (result.apiKey) {
          const emailBody = getEmailBody(result.signatureDelimiter);
          sendToChatGPT(emailBody, selectedStyles, result.apiKey, result.signatureDelimiter).then(() => {
            sendResponse({ success: true });
          }).catch(() => {
            sendResponse({ success: false });
          });
        } else {
          alert("Please enter and save your OpenAI API key in the extension settings.");
          sendResponse({ success: false });
        }
      });
    } else {
      sendResponse({ success: false });
    }

    return true;
  }
});

进入全屏模式 退出全屏模式

内容脚本监听reviewEmail 动作,并使用getEmailText 辅助函数检索电子邮件草稿文本。然后它调用sendToChatGPT 函数,将文本发送到OpenAI的API,并使用displaySuggestions 函数显示建议。

弹出式脚本:处理用户互动

弹出式脚本管理用户与扩展界面的互动。它提供了选择书写方式、输入OpenAI API密钥和配置其他设置的选项。

// popup.js

document.getElementById("reviewButton").addEventListener("click", () => {
  const selectedStyles = Array.from(document.querySelectorAll('input[name="style"]:checked')).map(input => input.value);

  chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
    chrome.tabs.sendMessage(tabs[0].id, { action: "reviewEmail", styles: selectedStyles });
  });
});

进入全屏模式 退出全屏模式

当用户点击 "审阅邮件 "按钮时,脚本会收集所选择的写作风格,并向内容脚本发送一条消息,其中包括reviewEmail ,以及所选择的风格。内容脚本从这里开始接管,分析邮件草稿并提供建议。

与OpenAI的API进行通信

该扩展与OpenAI API进行通信,以分析电子邮件文本并生成样式建议。这个过程是由内容脚本中的sendToChatGPT 功能处理的。

// contentScript.js

async function sendToChatGPT(text, styles, apiKey, signatureDelimiter) {
  const response = await fetch('https://api.openai.com/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${apiKey}`
    },
    body: JSON.stringify({
      messages: [{"role": "user", "content": `Review and provide suggestions for the following email draft combining the following styles or only a single style if only one is provided: ${styles.join(', ')}. Please return only the revised email text without suggesting a subject. Email draft: ${text}`}],
      model: "gpt-3.5-turbo",
      max_tokens: 150,
      n: 1,
      stop: null,
      temperature: 0.8
    })
  });

  const data = await response.json();
  if (data.choices && data.choices.length > 0) {
    displaySuggestions(data.choices[0].message.content, signatureDelimiter);
  } else {
    console.log("No suggestions received");
  }
}

进入全屏模式 退出全屏模式

sendToChatGPT 函数根据邮件文本和选定的样式创建一个提示,然后使用提供的API密钥向OpenAI API发出POST 请求。该函数返回由API生成的建议,以显示给用户。

你可以在GitHub上探索其余的代码,我欢迎你的贡献!

开始使用

要开始使用ChatGPT邮件评论员,请访问GitHub仓库,在您的Chrome浏览器上安装该扩展。按照README 中的说明配置您的OpenAI API密钥,您可以通过在OpenAI网站上创建一个账户获得该密钥。

该扩展还提供了一个选项,可以指定一个签名定界符,以区分你的电子邮件签名和主要内容,确保分析只集中在信息上。

一旦设置好,你只需点击几下就可以开始制作引人注目的电子邮件,反映你所选择的风格

欢迎贡献代码!

ChatGPT邮件审核器目前只在GitHub上提供,并且正在审查ChatGPT网络商店。在您探索和使用这个工具时,我欢迎您的反馈、建议和经验。您的意见对于完善和提高该工具对每个人来说都是非常宝贵的。请随时在Twitter上与我联系,或在GitHub资源库上提出问题或PR,提出改进或错误修复。