안녕하세요 여러분?! 앱 개발자로서 간단하면서도 강력한 에이전트를 만들어 일상 작업을 자동화하는 방법을 공유하게 되어 기쁩니다.
? 많은 여러분과 마찬가지로 저도 매일 엄청난 양의 이메일을 받습니다. 최선의 노력에도 불구하고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!