」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 馴服電子郵件野獸:我的收件匣管理人工智慧之旅

馴服電子郵件野獸:我的收件匣管理人工智慧之旅

發佈於2024-11-06
瀏覽:374

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]刪除
最新教學 更多>
  • Python環境變量的訪問與管理方法
    Python環境變量的訪問與管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    程式設計 發佈於2025-07-05
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-07-05
  • FastAPI自定義404頁面創建指南
    FastAPI自定義404頁面創建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    程式設計 發佈於2025-07-05
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-07-05
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-07-05
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-05
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-07-05
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-07-05
  • 找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    如何在mySQL中使用mySql 檢索最大計數,您可能會遇到一個問題,您可能會在嘗試使用以下命令:理解錯誤正確找到由名稱列分組的值的最大計數,請使用以下修改後的查詢: 計數(*)為c 來自EMP1 按名稱組 c desc訂購 限制1 查詢說明 select語句提取名稱列和每個名稱...
    程式設計 發佈於2025-07-05
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    程式設計 發佈於2025-07-05
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-07-05
  • 在GO中構造SQL查詢時,如何安全地加入文本和值?
    在GO中構造SQL查詢時,如何安全地加入文本和值?
    在go中構造文本sql查詢時,在go sql queries 中,在使用conting and contement和contement consem per時,尤其是在使用integer per當per當per時,per per per當per. [&​​​​&&&&&&&&&&&&&&&默元組方...
    程式設計 發佈於2025-07-05
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-07-05
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-07-05
  • 如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    appEngine靜態文件mime type override ,靜態文件處理程序有時可以覆蓋正確的mime類型,在錯誤消息中導致錯誤消息:“無法猜測mimeType for for file for file for [File]。 application/application/octet...
    程式設計 發佈於2025-07-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3