Hallo zusammen?! Als App-Entwickler freue ich mich, Ihnen mitteilen zu können, wie Sie einfache, aber leistungsstarke Agenten erstellen können, um Ihre täglichen Aufgaben zu automatisieren.
? Wie viele von Ihnen erhalte ich täglich eine überwältigende Anzahl an E-Mails. Trotz meiner besten Bemühungen bleibt es eine Herausforderung, den schwer fassbaren Inbox Zero zu erreichen. Das Durchsuchen von E-Mails wie Bestellbestätigungen und Versandaktualisierungen ist mühsam und zeitaufwändig.
Aber hier ist die gute Nachricht: Automatisierung kann den Tag retten!
? Ich habe ein einfaches Skript geschrieben, das KI nutzt, um die E-Mail-Kategorisierung zu automatisieren – und das können Sie auch.
In diesem Artikel teile ich wiederverwendbare Codeausschnitte, die Ihnen dabei helfen, Ihre eigenen Automatisierungsagenten zu erstellen, die auf Ihre Bedürfnisse zugeschnitten sind. ?
Es gibt unzählige Tools, darunter auch No-Code-Plattformen, die ganze Prozesse für Sie abwickeln können. Ich bevorzuge es jedoch, Aufgaben in modulare Codeschnipsel aufzuteilen. Warum?
Durch einen inkrementellen Ansatz können Sie manuelle Schritte schrittweise durch automatisierte ersetzen.
?? Mein bevorzugtes Tool für Prototyping-Skripte ist Znote – ein Notizbuch mit Live-Codierung und KI, das mir hilft, meine Arbeitsabläufe zu verfolgen und zu verbessern. Probieren Sie es aus oder verwenden Sie Ihre Lieblings-IDE!
Wenn eine neue E-Mail eintrifft, möchten wir:
Laden Sie Ollama herunter, um ein lokales LLM auszuführen. Laden Sie nach der Installation ein Modell herunter:
ollama pull mistral
Installieren Sie die erforderlichen Node.js-Bibliotheken:
ollama pull mistral
Richten Sie eine OAuth-Verbindung zu Gmail ein:
npm install -S @google-cloud/local-auth googleapis openai
Verwenden Sie diese Funktion, um Etiketten zu erstellen und deren IDs abzurufen:
// google-api.js const fs = require("fs"); const path = require("path"); const { authenticate } = require("@google-cloud/local-auth"); const { google } = require("googleapis"); class GoogleAPI { constructor(credentialFilename) { this.TOKEN_PATH = path.join(__dirname, `token-${credentialFilename}`); this.CREDENTIALS_PATH = path.join(__dirname, credentialFilename); this.SCOPES = [ "https://mail.google.com/", "https://www.googleapis.com/auth/gmail.modify", ]; } async authorize() { const loadSavedCredentials = () => { try { const content = fs.readFileSync(this.TOKEN_PATH); return google.auth.fromJSON(JSON.parse(content)); } catch { return null; } }; const saveCredentials = (client) => { const keys = JSON.parse(fs.readFileSync(this.CREDENTIALS_PATH)); fs.writeFileSync( this.TOKEN_PATH, JSON.stringify({ type: "authorized_user", client_id: keys.installed.client_id, client_secret: keys.installed.client_secret, refresh_token: client.credentials.refresh_token, }) ); }; let client = await loadSavedCredentials(); if (!client) { client = await authenticate({ scopes: this.SCOPES, keyfilePath: this.CREDENTIALS_PATH, }); if (client.credentials) saveCredentials(client); } return client; } } module.exports = GoogleAPI;
Details aus der Nachrichten-API extrahieren:
async function createAndGetLabels(labelsToCreate) { const google = await getGoogleClient(); const gmail = google.gmail({ version: "v1" }); const existingLabels = (await gmail.users.labels.list({ userId: "me" })).data.labels || []; const labelsMap = new Map(); for (const label of labelsToCreate) { const existing = existingLabels.find((l) => l.name === label); if (existing) { labelsMap.set(label, existing.id); } else { const res = await gmail.users.labels.create({ userId: "me", requestBody: { name: label }, }); labelsMap.set(label, res.data.id); } } return labelsMap; }
Aussagekräftige Details aus E-Mails extrahieren:
async function readEmails(gmail, maxResults = 10) { const res = await gmail.users.messages.list({ userId: "me", labelIds: ["INBOX"], maxResults }); return Promise.all( res.data.messages.map(async ({ id }) => { const email = await gmail.users.messages.get({ userId: "me", id }); return email.data; }) ); }
Integrieren Sie Ollama oder OpenAI, um E-Mails zu klassifizieren:
function extractMailInfos(mail) { // Define the headers to extract const relevantHeaders = ["Date", "Subject"]; // Extract and structure the relevant headers const headers = mail.payload.headers .filter(header => relevantHeaders.includes(header.name)) .reduce((accumulator, header) => { accumulator[header.name] = header.value; return accumulator; }, {}); // Add the unique mail ID directly to the headers object headers.id = mail.id; return headers; }
So funktioniert alles zusammen:
async function classifyEmail(prompt) { const { OpenAI } = require("openai"); const openai = new OpenAI({ baseURL: "http://127.0.0.1:11434/v1", apiKey: "not-needed" }); const response = await openai.chat.completions.create({ model: "mistral", temperature: 0.3, messages: [{ role: "user", content: prompt }], }); return response.choices[0].message.content.trim(); }
? Das ist es! Ihr Posteingang ist jetzt intelligenter und organisierter.
Aber warum hier aufhören? Entdecken Sie fortgeschrittenere Beispiele zum Lesen von E-Mail-Inhalten, zum Senden von Entwürfen und zum Erstellen von allem, was Sie für vollständig automatisierte Antworten benötigen.
Weitere Automatisierungsideen und wiederverwendbare Skripte finden Sie bei Znote.
Lassen Sie uns Ihre täglichen Aufgaben in etwas Lustiges und Effizientes verwandeln! ?
Das obige ist der detaillierte Inhalt vonErstellen Sie einen KI-gestützten E-Mail-Agenten mit wiederverwendbarem Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!