”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 驯服电子邮件野兽:我的收件箱管理人工智能之旅

驯服电子邮件野兽:我的收件箱管理人工智能之旅

发布于2024-11-06
浏览:342

Taming the Email Beast: My AI-Powered Adventure in Inbox Management

是否曾经感觉您的收件箱是一个数字九头蛇,为您回复的每个人发送两封新电子邮件? ??好吧,科技爱好者们,我决定用秘密武器来对付这个怪物:人工智能! ??️

尤里卡时刻

想象一下:现在是凌晨 3 点,我周围都是空咖啡杯☕☕☕,盯着一个数量可与国会图书馆相媲美的收件箱。就在那时,我突然想到——如果人工智能可以击败国际象棋大师,它肯定可以帮助我理清这个电子邮件迷宫,对吗?

输入 AI 电子邮件低语者

因此,我卷起袖子,投入到创建人工智能驱动的电子邮件处理系统中。可以把它想象成有一个不知疲倦、超级聪明、从不要求喝咖啡休息的实习生。以下是这个数字奇迹的工作原理:

  1. 全视之眼 ?️:使用强大的 GPT-4,我们的 AI 朋友扫描传入电子邮件的速度比您说“您收到邮件了!”还要快

  2. 排序帽 ?:然后它将每封电子邮件分类为“产品查询”或“订单请求”。这就像霍格沃茨,但用于电子邮件!

  3. 订单主控 ?:对于订单请求,它会比您单击“添加到购物车”更快地提取详细信息,并检查我们是否有足够的库存来履行订单。

  4. 圆滑的谈话者?:根据电子邮件类型和订单状态,它会制作个性化的回复,这会让莎士比亚嫉妒(好吧,如果莎士比亚从事电子商务)。

  5. 查询Queller ❓:对于产品查询,它发送自动回复的速度比您说“我们很快就会回复您”的速度还要快。

秘密酱料(又名技术堆栈)

对于所有编码行家来说,以下是我们人工智能厨房中正在烹饪的食物:

  • 主课:Python? (因为谁不喜欢代码中的好蛇?)
  • 特殊成分:OpenAI 的 GPT-4(语言模型中的 Gordon Ramsay)
  • 配菜:熊猫? (用于数据处理,而不是用于咀嚼竹子)
  • 调料:Google Sheets API(因为电子表格是数据存储的无名英雄)

让我们深入研究一些代码片段,看看它实际上是如何工作的!

1. 邮件分类

以下是我们如何使用 GPT-4 对传入电子邮件进行分类:

def classify_email(email_body: str) -> str:
    prompt = (f"Classify the following email as either a 'product inquiry' or an 'order request'. "
              "An 'order request' must include explicit purchase intent, such as specifying quantity, shipping details, or mentioning a transaction."
              "General questions or interest in a product should be classified as a 'product inquiry'.\n\n"
              f"Email: {email_body}\n\nClassification:")
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )

    classification = response.choices[0].message.content.strip().lower()
    if "order request" in classification:
        return "order request"
    elif "product inquiry" in classification:
        return "product inquiry"
    else:
        return "unclassified"

2. 订单处理

对于订单请求,我们提取详细信息并更新库存:

def process_order(email_id: str, orders: List[Dict], products_df: pd.DataFrame) -> Tuple[List[Dict], pd.DataFrame]:
    order_status = []
    for order in orders:
        product_id = order['product_id']
        quantity = order['quantity']

        product = products_df[products_df['product_id'] == product_id].iloc[0]
        current_stock = int(product['stock'])

        if current_stock >= quantity > 0 and current_stock > 0:
            status = "created"
            products_df.loc[products_df['product_id'] == product_id, 'stock'] -= quantity
        else:
            status = "out of stock"

        order_status.append({
            'email_id': email_id,
            'product_id': product_id,
            'quantity': quantity,
            'status': status
        })

    return order_status, products_df

3. 响应生成

最后,我们根据电子邮件类型和订单状态生成个性化回复:

def generate_response(email_name: str, classification: str, order_status: List[Dict], products_df: pd.DataFrame) -> str:
    if classification.lower() == "order request":
        context = "Order Summary:\n"
        for order in order_status:
            product = products_df[products_df['product_id'] == order['product_id']].iloc[0]
            context  = f"Customer name:{email_name} Product: {product['name']}, Quantity: {order['quantity']}, Status: {order['status']}\n"

        prompt = f"""Generate a professional response for the following order:

{context}

If any items are out of stock, suggest alternatives or waiting for restock.
Ensure the tone is professional and enhances the customer experience.

Response:"""
    else:
        prompt = f"""Customer name:{email_name} \n Generate a professional response for a product inquiry. 
Inform the customer that we've received their inquiry and will get back to them with more detailed information shortly. 
Ensure the tone is professional and enhances the customer experience.

Response:"""

    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content.strip()

尤里卡时刻:我学到了什么

  1. 速度刺激 ⚡:快速确认电子邮件让客户比免费送货更满意(几乎)。

  2. 准确性为王?:微调人工智能提示就像教机器人跳舞一样——需要练习,但当它起作用时,那就太棒了。

  3. 库存俄罗斯方块?:实时库存检查使我们无法承诺无法交付的独角兽。

  4. 个人风格?:人工智能生成的个性化回复让客户感觉很特别,而我们又不会变成读心术者。

  5. 期待意外?:强大的错误处理使我们免于数字化面孔植物的次数比我愿意承认的要多。

证据就在布丁中(或者在本例中是收件箱)

在测试数据集上释放我们的人工智能电子邮件管理员之后:

  • ?电子邮件响应时间比不带降落伞的跳伞运动员下降得更快(减少 80%)
  • ?订单处理准确度像火箭一样猛增(提高了 95%)
  • ?在编码期间,客户满意度的增加超过了我咖啡摄入量的增加(40% 提升)

人工智能电子邮件传奇的下一步是什么?

虽然这个项目是我的宠物实验(没有真正的宠物参与编码过程),但它打开了一个充满可能性的世界。想象一下客户服务忍者、电子商务奇才或生产力专家拥有如此人工智能的力量!

大结局

这种人工智能驱动的电子邮件冒险比狂看《硅谷》的所有季节更有趣(相信我,我已经做到了)。虽然它还没有准备好接管世界(甚至你的整个收件箱......),但它展示了人工智能如何改变我们处理数字通信的方式。

现在,我问你们,我的科技爱好者们:你们在项目中与人工智能共舞了吗?纠结于技术来提高生产力?我想在下面的评论中听到你的胜利(或搞笑的失败)故事!

记住:愿您的代码没有错误,并且您的收件箱为零! ??

你可知道? ?第一个电子邮件系统由 Ray Tomlinson 于 1971 年发明。如果他现在看到我们使用人工智能来管理电子邮件,他可能会说,“你已经……先进了!”

版本声明 本文转载于:https://dev.to/biswajitfsd/taming-the-email-beast-my-ai-powered-adventure-in-inbox-management-5fc?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-07-21
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-07-21
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-07-21
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-07-21
  • MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    在两个条件下插入或更新或更新 solution:的答案在于mysql的插入中...在重复键更新语法上。如果不存在匹配行或更新现有行,则此功能强大的功能可以通过插入新行来进行有效的数据操作。如果违反了唯一的密钥约束。实现所需的行为,该表必须具有唯一的键定义(在这种情况下为'名称'...
    编程 发布于2025-07-21
  • 在C#中如何高效重复字符串字符用于缩进?
    在C#中如何高效重复字符串字符用于缩进?
    在基于项目的深度下固定字符串时,重复一个字符串以进行凹痕,很方便有效地有一种有效的方法来返回字符串重复指定的次数的字符串。使用指定的次数。 constructor 这将返回字符串“ -----”。 字符串凹痕= new String(' - ',depth); console.Wr...
    编程 发布于2025-07-21
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-07-21
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-07-21
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-07-21
  • 在Python中如何创建动态变量?
    在Python中如何创建动态变量?
    在Python 中,动态创建变量的功能可以是一种强大的工具,尤其是在使用复杂的数据结构或算法时,Dynamic Variable Creation的动态变量创建。 Python提供了几种创造性的方法来实现这一目标。利用dictionaries 一种有效的方法是利用字典。字典允许您动态创建密钥并分...
    编程 发布于2025-07-21
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-07-21
  • 切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    切换到MySQLi后CodeIgniter连接MySQL数据库失败原因
    无法连接到mySQL数据库:故障排除错误消息要调试问题,建议将以下代码添加到文件的末尾.//config/database.php并查看输出: ... ... 回声'... echo '<pre>'; print_r($db['default']); echo '</pr...
    编程 发布于2025-07-21
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否需要手动调用“ delete”操作员在heap-exprogal exit exit上。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(HEAP内存)的指针。当应用程序退出时,此内存是否会自动发布?通常,是。但是,即使在这...
    编程 发布于2025-07-21
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-07-21
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-07-21

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3