Yapay Zeka ve Google Komut Dosyasıyla Gmail Spam Klasörünüzdeki Yasal E-postaları Bulun
Yayınlanan: 2024-06-08Gmail'de yanlış pozitifler nadirdir ancak meydana gelebilir; bu da önemli bir e-postanın yanlışlıkla spam klasörünüze düşebileceği anlamına gelir. Her gün yüzlerce spam mesajıyla uğraşırken, bu meşru e-postaları tanımlamak daha da zorlaşır.
Belirli gönderenlerden veya belirli anahtar kelimelerden gelen e-postaların hiçbir zaman spam olarak işaretlenmemesini sağlamak için Gmail'de filtreler oluşturabilirsiniz. Ancak bu filtrelerin yeni veya bilinmeyen gönderenlerden gelen e-postalar için işe yaramayacağı açıktır.
Gmail Spam'da yanlış sınıflandırılmış iletileri bulma
Peki ya Gmail'deki spam e-postalarımızı analiz etmek ve hangilerinin hatalı pozitif olduğunu tahmin etmek için yapay zekayı kullansaydık? Yanlış sınıflandırılmış e-postaların bu listesiyle, bu e-postaları otomatik olarak gelen kutusuna taşıyabilir veya manuel inceleme için bir rapor oluşturabiliriz.
Burada Gmail'den oluşturulan örnek bir raporu bulabilirsiniz. Spam puanı düşük, muhtemelen meşru olan ve gelen kutusuna taşınması gereken e-postaların bir listesini içerir. Rapor ayrıca e-posta içeriğinin tercih ettiğiniz dilde bir özetini de içerir.
Başlamak için bu Google Komut Dosyasını açın ve Google Drive'ınızda bir kopyasını oluşturun. Apps Komut Dosyası düzenleyicisine geçin ve e-posta özeti için e-posta adresinizi, OpenAI API anahtarınızı ve tercih ettiğiniz dili sağlayın.
Açılır menüden reportFalsePositives
işlevini seçin ve betiği çalıştırmak için oynat düğmesine tıklayın. Gmail hesabınızdaki okunmamış spam e-postaları arayacak, bunları OpenAI'nin API'sini kullanarak analiz edecek ve size düşük spam puanına sahip bir e-posta raporu gönderecektir.
Bu komut dosyasını düzenli aralıklarla otomatik olarak çalıştırmak istiyorsanız, Google Apps Komut Dosyası düzenleyicisindeki "Tetikleyiciler" menüsüne gidin ve bu komut dosyasını aşağıda gösterildiği gibi her gün çalıştırmak için zamana dayalı bir tetikleyici ayarlayın. Ayrıca raporu almak istediğiniz günün saatini de seçebilirsiniz.
Yapay Zeka Spam Sınıflandırması Nasıl Çalışır - Teknik Bölüm
Komut dosyasının nasıl çalıştığını merak ediyorsanız işte kısa bir genel bakış:
Gmail Komut Dosyası, Gmail hesabınızdaki okunmamış spam e-postaları aramak için Gmail API'sini kullanır. Daha sonra spam puanını sınıflandırmak ve tercih ettiğiniz dilde bir özet oluşturmak için e-posta içeriğini OpenAI'nin API'sine gönderir. Spam puanı düşük olan e-postalar büyük olasılıkla yanlış pozitiftir ve gelen kutusuna taşınabilir.
1. Kullanıcı Yapılandırması
Raporun gönderilmesi gereken e-posta adresinizi, OpenAI API anahtarınızı, tercih ettiğiniz LLM modelini ve e-posta özetinin dilini sağlayabilirsiniz.
// 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 Spam Klasöründe Okunmamış E-postaları Bulun
Son 24 saat içinde gelen ve hâlâ okunmamış olan spam e-postaları bulmak için dönem zamanını kullanırız.
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 Modeli için Bir Bilgi İstemi Oluşturun
E-posta mesajını kullanarak OpenAI modeli için bir bilgi istemi oluşturuyoruz. İstem, yapay zeka modelinden e-posta içeriğini analiz etmesini ve 0'dan 10'a kadar bir ölçekte bir spam puanı atamasını ister. Yanıt, JSON formatında olmalıdır.
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. Spam Puanını almak için OpenAI API'yi arayın
Mesaj istemini OpenAI API'sine iletiyoruz ve spam puanını ve e-posta içeriğinin özetini alıyoruz. Spam puanı, e-postanın yanlış pozitif olup olmadığını belirlemek için kullanılır.
tokens
değişkeni, OpenAI API çağrılarında kullanılan belirteçlerin sayısını takip eder ve e-posta raporuna dahil edilir. API kullanımınızı izlemek için bu bilgileri kullanabilirsiniz.
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. Spam E-postalarını işleyin ve Raporu e-postayla gönderin
Bu Google betiğini manuel olarak çalıştırabilir veya düzenli aralıklarla otomatik olarak çalıştıracak bir cron tetikleyicisi ayarlayabilirsiniz. Spam e-postaları okundu olarak işaretler, böylece tekrar işlenmezler.
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 } ) ; } } ;
Ayrıca bkz: Gmail iletilerinizin kimliğini doğrulama