电子邮件交流是现代生活的一个重要部分,而我们表达信息的方式会影响信息的接收。在最近的一些休息时间里,我探索了几个小项目(例子一和例子二),最后一个是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,提出改进或错误修复。