Finden Sie legitime E-Mails in Ihrem Gmail-Spam-Ordner mit KI und Google Script

Veröffentlicht: 2024-06-08

Falschmeldungen in Gmail sind selten, können aber vorkommen, was bedeutet, dass eine wichtige E-Mail fälschlicherweise in Ihrem Spam-Ordner landet. Wenn Sie täglich mit Hunderten von Spam-Nachrichten zu tun haben, wird die Identifizierung dieser legitimen E-Mails noch schwieriger.

Sie können in Gmail Filter erstellen, sodass E-Mails von bestimmten Absendern oder mit bestimmten Schlüsselwörtern niemals als Spam markiert werden. Aber diese Filter würden offensichtlich nicht für E-Mails von neuen oder unbekannten Absendern funktionieren.

Finden Sie falsch klassifizierte Nachrichten im Gmail-Spam

Was wäre, wenn wir KI verwenden würden, um unsere Spam-E-Mails in Gmail zu analysieren und vorherzusagen, bei welchen E-Mails es sich wahrscheinlich um Fehlalarme handelt? Mit dieser Liste falsch klassifizierter E-Mails könnten wir diese E-Mails automatisch in den Posteingang verschieben oder einen Bericht zur manuellen Überprüfung erstellen.

Hier ist ein Beispielbericht, der aus Gmail erstellt wurde. Es enthält eine Liste von E-Mails mit einem niedrigen Spam-Score, die wahrscheinlich legitim sind und in den Posteingang verschoben werden sollten. Der Bericht enthält auch eine Zusammenfassung des E-Mail-Inhalts in Ihrer bevorzugten Sprache.

Gmail Spam Summary

Öffnen Sie zunächst dieses Google-Skript und erstellen Sie eine Kopie davon in Ihrem Google Drive. Wechseln Sie zum Apps Script-Editor und geben Sie Ihre E-Mail-Adresse, den OpenAI-API-Schlüssel und die bevorzugte Sprache für die E-Mail-Zusammenfassung an.

Wählen Sie im Dropdown-Menü die Funktion reportFalsePositives aus und klicken Sie auf die Wiedergabeschaltfläche, um das Skript auszuführen. Es sucht nach ungelesenen Spam-E-Mails in Ihrem Gmail-Konto, analysiert sie mithilfe der OpenAI-API und sendet Ihnen einen Bericht über E-Mails mit einem niedrigen Spam-Score.

Wenn Sie dieses Skript automatisch in regelmäßigen Abständen ausführen möchten, gehen Sie zum Menü „Trigger“ im Google Apps-Skripteditor und richten Sie einen zeitgesteuerten Trigger ein, um dieses Skript einmal täglich auszuführen, wie unten gezeigt. Sie können auch die Tageszeit auswählen, zu der Sie den Bericht erhalten möchten.

Google Script - Time Trigger

So funktioniert die KI-Spam-Klassifizierung – Der technische Teil

Wenn Sie wissen möchten, wie das Skript funktioniert, finden Sie hier eine kurze Übersicht:

Das Gmail-Skript verwendet die Gmail-API, um in Ihrem Gmail-Konto nach ungelesenen Spam-E-Mails zu suchen. Anschließend wird der E-Mail-Inhalt an die API von OpenAI gesendet, um den Spam-Score zu klassifizieren und eine Zusammenfassung in Ihrer bevorzugten Sprache zu erstellen. E-Mails mit einem niedrigen Spam-Score sind wahrscheinlich falsch positive Ergebnisse und können in den Posteingang verschoben werden.

1. Benutzerkonfiguration

Sie können Ihre E-Mail-Adresse, an die der Bericht gesendet werden soll, Ihren OpenAI-API-Schlüssel, Ihr bevorzugtes LLM-Modell und die Sprache für die E-Mail-Zusammenfassung angeben.

 // 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. Suchen Sie nach ungelesenen E-Mails im Gmail-Spam-Ordner

Wir nutzen die Epochenzeit, um Spam-E-Mails zu finden, die in den letzten 24 Stunden angekommen und noch ungelesen sind.

 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. Erstellen Sie eine Eingabeaufforderung für das OpenAI-Modell

Mithilfe der E-Mail-Nachricht erstellen wir eine Eingabeaufforderung für das OpenAI-Modell. Die Eingabeaufforderung fordert das KI-Modell auf, den E-Mail-Inhalt zu analysieren und einen Spam-Score auf einer Skala von 0 bis 10 zuzuweisen. Die Antwort sollte im JSON-Format erfolgen.

 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. Rufen Sie die OpenAI-API auf, um den Spam-Score zu erhalten

Wir übergeben die Nachrichtenaufforderung an die OpenAI-API und erhalten den Spam-Score und eine Zusammenfassung des E-Mail-Inhalts. Der Spam-Score wird verwendet, um festzustellen, ob die E-Mail falsch positiv ist.

Die tokens Variable verfolgt die Anzahl der in den OpenAI-API-Aufrufen verwendeten Token und wird in den E-Mail-Bericht aufgenommen. Mithilfe dieser Informationen können Sie Ihre API-Nutzung überwachen.

 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. Verarbeiten Sie Spam-E-Mails und senden Sie den Bericht per E-Mail

Sie können dieses Google-Skript manuell ausführen oder einen Cron-Trigger einrichten, um es in regelmäßigen Abständen automatisch auszuführen. Es markiert die Spam-E-Mails als gelesen, sodass sie nicht erneut verarbeitet werden.

 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 } ) ; } } ;

Siehe auch: Authentifizieren Sie Ihre Gmail-Nachrichten