تقنية

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


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

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

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

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

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

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

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

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

البرنامج النصي Google - Time Trigger

كيف يعمل تصنيف الرسائل غير المرغوب فيها AI – الجزء الفني

إذا كنت فضوليًا لمعرفة كيفية عمل البرنامج النصي ، فإليك نظرة عامة موجزة:

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

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

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

// Basic configuration
const USER_EMAIL = 'email@domain.com'; // 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 للحصول على نقاط البريد العشوائي

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

ال 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 Script يدويًا أو إعداد مشغل كرون لتشغيله تلقائيًا على فترات منتظمة. إنه يمثل رسائل البريد الإلكتروني عبر البريد العشوائي كما هو غير معالجتها مرة أخرى.

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 الخاصة بك



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى