ホームページ >ウェブフロントエンド >jsチュートリアル >再利用可能なコードを使用して AI を活用した電子メール エージェントを構築する
皆さん、こんにちは?!アプリ開発者として、日常のタスクを自動化するシンプルかつ強力なエージェントを作成する方法を共有できることを嬉しく思います。
?皆さんの多くと同じように、私も毎日膨大な数のメールを受け取ります。私の最善の努力にもかかわらず、とらえどころのないInbox Zeroを達成することは依然として課題です。注文確認や発送の最新情報などのメールを整理するのは面倒で時間もかかります。
しかし、良いニュースがあります: 自動化が窮地を救うことができます!
?私は AI を活用して電子メールの分類を自動化する基本的なスクリプトを作成しました。あなたもそれが可能です。
この記事では、ニーズに合わせた独自の自動化エージェントを構築するのに役立つ再利用可能なコード スニペットを共有します。 ?
ノーコード プラットフォームを含め、プロセス全体を処理できるツールは無数にあります。ただし、私はタスクを モジュール化されたコード スニペット に分割することを好みます。なぜ?
段階的なアプローチを採用することで、手動の手順を徐々に自動化された手順に置き換えることができます。
??スクリプトのプロトタイピングに私がよく使うツールは Znote です。これは、ワークフローの追跡と強化に役立つライブ コーディングと AI を備えたノートブックです。試してみるか、お気に入りの IDE を使用してください。
新しいメールが届いたら、次のことを行います:
Ollama をダウンロードしてローカル LLM を実行します。インストールしたら、モデルをダウンロードします:
ollama pull mistral
必要な Node.js ライブラリをインストールします:
ollama pull mistral
Gmail への OAuth 接続をセットアップします:
npm install -S @google-cloud/local-auth googleapis openai
この関数を使用してラベルを作成し、その ID を取得します。
// 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;
メッセージ API から詳細を抽出します:
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; }
メールから意味のある詳細を抽出します:
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; }) ); }
Ollama または OpenAI を統合してメールを分類します:
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; }
すべてが連携してどのように機能するかは次のとおりです:
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(); }
?それでおしまい!受信トレイはよりスマートに整理されています。
しかし、なぜここで止まるのでしょうか?電子メールの内容を読み取り、下書きを送信し、完全に自動化された応答に必要なものをすべて構築するための、より高度な例を確認してください。
自動化のアイデアや再利用可能なスクリプトについては、Znote をご覧ください。
日々のタスクを楽しく効率的なものに変えましょう。 ?
以上が再利用可能なコードを使用して AI を活用した電子メール エージェントを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。