ابحث عن رسائل البريد الإلكتروني المشروعة في مجلد البريد العشوائي في Gmail باستخدام الذكاء الاصطناعي وGoogle Script

نشرت: 2024-06-08

تعتبر النتائج الإيجابية الكاذبة في Gmail غير شائعة ولكنها يمكن أن تحدث، مما يعني أن رسالة بريد إلكتروني مهمة قد تنتهي عن طريق الخطأ في مجلد الرسائل غير المرغوب فيها. عندما تتعامل مع مئات الرسائل غير المرغوب فيها يوميًا، يصبح تحديد رسائل البريد الإلكتروني المشروعة هذه أكثر صعوبة.

يمكنك إنشاء عوامل تصفية في Gmail بحيث لا يتم وضع علامة على رسائل البريد الإلكتروني الواردة من مرسلين محددين أو التي تحتوي على كلمات رئيسية معينة كرسائل غير مرغوب فيها. ولكن من الواضح أن هذه المرشحات لن تعمل مع رسائل البريد الإلكتروني الواردة من مرسلين جدد أو غير معروفين.

ابحث عن الرسائل المصنفة بشكل غير صحيح في البريد العشوائي في Gmail

ماذا لو استخدمنا الذكاء الاصطناعي لتحليل رسائل البريد الإلكتروني العشوائية في Gmail والتنبؤ بالرسائل التي من المحتمل أن تكون إيجابية كاذبة؟ باستخدام هذه القائمة من رسائل البريد الإلكتروني التي تم تصنيفها بشكل خاطئ، يمكننا نقل رسائل البريد الإلكتروني هذه تلقائيًا إلى البريد الوارد أو إنشاء تقرير للمراجعة اليدوية.

إليك نموذج تقرير تم إنشاؤه من Gmail. يتضمن قائمة برسائل البريد الإلكتروني ذات درجة منخفضة من البريد العشوائي والتي من المحتمل أن تكون شرعية ويجب نقلها إلى البريد الوارد. يتضمن التقرير أيضًا ملخصًا لمحتوى البريد الإلكتروني بلغتك المفضلة.

Gmail Spam Summary

للبدء، افتح برنامج Google Script هذا واعمل نسخة منه في Google Drive. قم بالتبديل إلى محرر Apps Script وقم بتوفير عنوان بريدك الإلكتروني ومفتاح OpenAI API واللغة المفضلة لملخص البريد الإلكتروني.

اختر وظيفة reportFalsePositives من القائمة المنسدلة وانقر على زر التشغيل لتشغيل البرنامج النصي. سيبحث عن رسائل البريد الإلكتروني العشوائية غير المقروءة في حساب Gmail الخاص بك، ويحللها باستخدام واجهة برمجة تطبيقات OpenAI، ويرسل إليك تقريرًا عن رسائل البريد الإلكتروني ذات درجة البريد العشوائي المنخفضة.

إذا كنت ترغب في تشغيل هذا البرنامج النصي تلقائيًا على فترات زمنية منتظمة، فانتقل إلى قائمة "المشغلات" في محرر Google Apps Script وقم بإعداد مشغل يعتمد على الوقت لتشغيل هذا البرنامج النصي مرة واحدة كل يوم كما هو موضح أدناه. يمكنك أيضًا اختيار الوقت من اليوم الذي ترغب فيه في تلقي التقرير.

Google Script - Time Trigger

كيف يعمل تصنيف البريد العشوائي بالذكاء الاصطناعي - الجزء الفني

إذا كنت ترغب في معرفة كيفية عمل البرنامج النصي، فإليك نظرة عامة مختصرة:

يستخدم Gmail Script واجهة برمجة تطبيقات Gmail للبحث عن رسائل البريد الإلكتروني العشوائية غير المقروءة في حساب Gmail الخاص بك. ثم يرسل بعد ذلك محتوى البريد الإلكتروني إلى OpenAI's API لتصنيف درجة البريد العشوائي وإنشاء ملخص باللغة المفضلة لديك. من المحتمل أن تكون رسائل البريد الإلكتروني ذات درجة البريد العشوائي المنخفضة نتائج إيجابية كاذبة ويمكن نقلها إلى البريد الوارد.

1. تكوين المستخدم

يمكنك تقديم عنوان بريدك الإلكتروني الذي يجب إرسال التقرير إليه، ومفتاح OpenAI API الخاص بك، ونموذج LLM المفضل لديك، ولغة ملخص البريد الإلكتروني.

 // Basic configuration const USER_EMAIL = '[email protected]' ; // Email address to send the report to const OPENAI_API_KEY = 'sk-proj-123' ; // API key for OpenAI const OPENAI_MODEL = 'gpt-4o' ; // Model name to use with OpenAI const USER_LANGUAGE = 'English' ; // Language for the email summary

2. ابحث عن رسائل البريد الإلكتروني غير المقروءة في مجلد البريد العشوائي في Gmail

نحن نستخدم وقت العصر للعثور على رسائل البريد الإلكتروني العشوائية التي وصلت خلال الـ 24 ساعة الماضية وما زالت غير مقروءة.

 const HOURS_AGO = 24 ; // Time frame to search for emails (in hours) const MAX_THREADS = 25 ; // Maximum number of email threads to process const getSpamThreads_ = ( ) => { const epoch = ( date ) => Math . floor ( date . getTime ( ) / 1000 ) ; const beforeDate = new Date ( ) ; const afterDate = new Date ( ) ; afterDate . setHours ( afterDate . getHours ( ) - HOURS_AGO ) ; const searchQuery = ` is:unread in:spam after: ${ epoch ( afterDate ) } before: ${ epoch ( beforeDate ) } ` ; return GmailApp . search ( searchQuery , 0 , MAX_THREADS ) ; } ;

3. قم بإنشاء مطالبة لنموذج OpenAI

نقوم بإنشاء مطالبة لنموذج OpenAI باستخدام رسالة البريد الإلكتروني. تطلب المطالبة من نموذج الذكاء الاصطناعي تحليل محتوى البريد الإلكتروني وتعيين درجة البريد العشوائي على مقياس من 0 إلى 10. ويجب أن تكون الاستجابة بتنسيق JSON.

 const SYSTEM_PROMPT = ` You are an AI email classifier. Given the content of an email, analyze it and assign a spam score on a scale from 0 to 10, where 0 indicates a legitimate email and 10 indicates a definite spam email. Provide a short summary of the email in ${ USER_LANGUAGE } . Your response should be in JSON format. ` ; const MAX_BODY_LENGTH = 200 ; // Maximum length of email body to include in the AI prompt const getMessagePrompt_ = ( message ) => { const body = message . getPlainBody ( ) . replace ( / https?:\/\/[^\s>]+ / g , '' ) . replace ( / [\n\r\t] / g , ' ' ) . replace ( / \s+ / g , ' ' ) . trim ( ) ; // remove all URLs, and whitespace characters return [ ` Subject: ${ message . getSubject ( ) } ` , ` Sender: ${ message . getFrom ( ) } ` , ` Body: ${ body . substring ( 0 , MAX_BODY_LENGTH ) } ` , ] . join ( '\n' ) ; } ;

4. اتصل بـ OpenAI API للحصول على نقاط البريد العشوائي

نقوم بتمرير رسالة المطالبة إلى OpenAI API ونحصل على درجة البريد العشوائي وملخص لمحتوى البريد الإلكتروني. يتم استخدام درجة البريد العشوائي لتحديد ما إذا كانت رسالة البريد الإلكتروني إيجابية كاذبة.

يقوم متغير tokens بتتبع عدد الرموز المميزة المستخدمة في مكالمات OpenAI API ويتم تضمينها في تقرير البريد الإلكتروني. يمكنك استخدام هذه المعلومات لمراقبة استخدام واجهة برمجة التطبيقات (API) الخاصة بك.

 let tokens = 0 ; const getMessageScore_ = ( messagePrompt ) => { const apiUrl = ` https://api.openai.com/v1/chat/completions ` ; const headers = { 'Content-Type' : 'application/json' , Authorization : ` Bearer ${ OPENAI_API_KEY } ` , } ; const response = UrlFetchApp . fetch ( apiUrl , { method : 'POST' , headers , payload : JSON . stringify ( { model : OPENAI_MODEL , messages : [ { role : 'system' , content : SYSTEM_PROMPT } , { role : 'user' , content : messagePrompt } , ] , temperature : 0.2 , max_tokens : 124 , response_format : { type : 'json_object' } , } ) , } ) ; const data = JSON . parse ( response . getContentText ( ) ) ; tokens += data . usage . total_tokens ; const content = JSON . parse ( data . choices [ 0 ] . message . content ) ; return content ; } ;

5. معالجة رسائل البريد الإلكتروني العشوائية وإرسال التقرير بالبريد الإلكتروني

يمكنك تشغيل برنامج Google النصي هذا يدويًا أو إعداد مشغل cron لتشغيله تلقائيًا على فترات زمنية منتظمة. فهو يضع علامة على رسائل البريد الإلكتروني العشوائي كمقروءة حتى لا تتم معالجتها مرة أخرى.

 const SPAM_THRESHOLD = 2 ; // Threshold for spam score to include in the report const reportFalsePositives = ( ) => { const html = [ ] ; const threads = getSpamThreads_ ( ) ; for ( let i = 0 ; i < threads . length ; i += 1 ) { const [ message ] = threads [ i ] . getMessages ( ) ; const messagePrompt = getMessagePrompt_ ( message ) ; // Get the spam score and summary from OpenAI const { spam_score , summary } = getMessageScore_ ( messagePrompt ) ; if ( spam_score <= SPAM_THRESHOLD ) { // Add email message to the report if the spam score is below the threshold html . push ( ` <tr><td> ${ message . getFrom ( ) } </td> <td> ${ summary } </td></tr> ` ) ; } } threads . forEach ( ( thread ) => thread . markRead ( ) ) ; // Mark all processed emails as read if ( html . length > 0 ) { const htmlBody = [ ` <table border="1"> ` , '<tr><th>Email Sender</th><th>Summary</th></tr>' , html . join ( '' ) , '</table>' , ] . join ( '' ) ; const subject = ` Gmail Spam Report - ${ tokens } tokens used ` ; GmailApp . sendEmail ( USER_EMAIL , subject , '' , { htmlBody } ) ; } } ;

راجع أيضًا: مصادقة رسائل Gmail الخاصة بك