أتمتة فرز Gmail بـ Claude Haiku و Gmail API — من 40 دقيقة لـ 30 ثانية يوميًا
لو inbox بتاعك بياكل منك 40 دقيقة صبح كل يوم في تصنيف إيميلات يدويًا، السكربت اللي تحت بياخد المهمة دي في أقل من 30 ثانية. بيسحب الإيميلات غير المقروءة من Gmail، يبعت العنوان والـ snippet لـ Claude Haiku 4.5، ويرجع يحطّ labels زي "Urgent" و "Clients" و "Newsletters". التكلفة الفعلية لحجم 100 إيميل يوميًا حوالي 1.28 دولار شهريًا، والدقة على العينات اللي اختبرتها فوق 93%.
المشكلة باختصار
الفلاتر الأصلية في Gmail شغّالة بـ rules ثابتة: "لو الـ sender بكذا، ضيف label كذا". المشكلة إن الـ rules دي بتفشل على إيميلات جديدة من senders لسه مش متعرّف عليهم، أو على رسائل نفس الـ sender بس بنيّة مختلفة (مرة فاتورة، مرة إعلان، مرة سؤال حقيقي). النتيجة: كل صبح بتبص في 80-120 إيميل غير مقروء وبتقرّر يدويًا لكل واحد فيهم.
ركز: المهمة دي بطبيعتها classification task — قرار واحد من قائمة محددة. وده بالظبط اللي LLM رخيص زي Haiku 4.5 بيعمله ببراعة وبفلوس قليلة.
الفكرة بتمثيل بسيط
تخيّل موظف استقبال في عيادة. كل مريض داخل بيقول اسمه وشكواه في سطرين. قدام الموظف ورقة فيها 5 فئات: طوارئ، كشف عادي، متابعة، استفسار، إعلانات مندوبين. الموظف بيقرأ الشكوى، يبصّ على الورقة، ويقرّر. هو مش بيعالج، مش بيكتب روشتة — بيصنّف وخلاص.
أتمتة فرز Gmail شغّالة بنفس المنطق بالظبط. المريض = الإيميل. الورقة = قائمة الفئات في الـ prompt. القرار = إضافة label. ومفيش داعي لموديل كبير ومكلف — موديل صغير كفاية لأنه بيرد بكلمة واحدة من قائمة معلومة.
المفهوم بشكل دقيق — LLM classifier
LLM classifier هو استدعاء language model مع تعليمات صارمة بترجّع output في نطاق محدود (enum). بدل ما الموديل يرد بنص مفتوح، انت بتقيّده بـ system prompt صريح: "رد بكلمة واحدة بس من القائمة دي". النتيجة deterministic تقريبًا، والـ output tokens قليلة جدًا (5-10 tokens لكل استدعاء)، وده اللي بيخلّي التكلفة الشهرية في حدود دولار.
الافتراض هنا: إن الفئات أقل من 15، وكل فئة ليها وصف واضح يفرّقها عن الباقي. لو الفئات متداخلة أو عددها فوق 20، الدقة بتنهار وساعتها تحتاج تروح لـ fine-tuning أو embeddings بدل prompting مباشر.
المتطلبات والإعداد
- حساب Google Cloud (مجاني) مع تفعيل Gmail API من Console.
- OAuth 2.0 credentials نوع Desktop app، تحمّلها كملف
credentials.json. - مفتاح Anthropic API من
platform.claude.com، تحطّه في environment variable اسمهANTHROPIC_API_KEY. - Python 3.10+ مع المكتبات:
pip install google-api-python-client google-auth-oauthlib anthropic