Files
email_alerts/__pycache__/ai_analyzer.cpython-311.pyc
T

122 lines
11 KiB
Plaintext
Raw Normal View History

2025-07-25 11:31:36 +01:00
§
h.!ãó¼ddlZddlmZmZmZmZddlmZddlm Z e ¦«eGdd¦«¦«Z
Gdd¦«Z e d kre ¦«Z
d
d d d
dœdddddœd
ddddœgZe
 e¦«Zed¦«edej¦«edej¦«edej¦«edejd¦«dSdS)éN)ÚListÚDictÚAnyÚOptional)Ú dataclass)Ú load_dotenvcóFeZdZUeed<eed<eed<eed<dZeed<dS)Ú EmailSummaryÚsummaryÚ
urgency_levelÚaction_requiredÚ
confidenceTÚneeds_responseN)Ú__name__Ú
__module__Ú __qualname__ÚstrÚ__annotations__ÚfloatrÚbool©óú+/Users/user/mkd/email_alerts/ai_analyzer.pyr
r
sOà
€L€LÐÐÑØÐÐÑØÐÐÑØ€NÐÑÐÐrr
c óªeZdZdZdeeeefdefdZ deeeefdefdZ
dedefdZ dd
ed ed e d
eeefdef
dZ
d S)Ú
AIAnalyzercótjd¦«|_d|_|jst d¦« ddlm}||j¬¦«|_td¦«dS#t$r}td|¦«d}~wwxYw) NÚ GROQ_API_KEYzllama3-8b-8192z9GROQ_API_KEY is required. Please add it to your .env filer)ÚGroq)Úapi_keyu+✅ Groq AI client initialized successfullyz"Failed to initialize Groq client: ) ÚosÚgetenvrÚmodelÚ
ValueErrorÚgroqrÚclientÚprintÚ ExceptionÚ RuntimeError)ÚselfrÚes rÚ__init__zAIAnalyzer.__init__Ý”y ÑŒ ØŒ
àŒ|ð ZÝÐ  IØ ˜$ t¤|Ð4ˆDŒKÝ Ð @øÝð Ið Ið IÝÐGÀAÐ Høøøøð Iøøøs¸+A%Á%
BÁ/BÂBÚthread_messagesÚreturncóš|stddddd¦«S| |¦«}d|d} |jjj |jd|d œgd
d ¬ ¦«}|jd
jj }| 
|¦«}|S#t$r/}td|¦«tddddd¦«cYd}~Sd}~wwxYw)z1Analyze email thread context and generate summaryz No messagesÚlowÚnonegFaÛ
Analyze this email and determine if it requires a response. Be selective and only mark as actionable if the email genuinely needs a reply.
Consider:
1. Is this a real request/question that needs an answer?
2. Is this from a real person (not automated/marketing/promotional)?
3. Does this require specific action or information?
4. Is this urgent or time-sensitive?
5. Is this a complaint, inquiry, or request for service?
6. Does this require follow-up or acknowledgment?
7. Is this a business-related email that needs attention?
8. Is this from a client, customer, or stakeholder?
IMPORTANT: DO NOT mark as actionable if the email is:
- Marketing or promotional content
- Automated notifications or updates
- Newsletter or subscription content
- System-generated messages
- General announcements that don't require action
Thread Context:
aB
IMPORTANT: Respond ONLY in this exact format (no extra text, no explanations):
SUMMARY: [2-3 sentence summary]
URGENCY: [low/medium/high/critical]
ACTION: [specific action needed or "no response needed"]
CONFIDENCE: [0.0-1.0]
NEEDS_RESPONSE: [true/false]
Úuser)ÚroleÚcontenti,g333333Ó?)r"ÚmessagesÚ
max_tokensÚ temperaturerzAI analysis error: zAI analysis failedúReview manuallyN)
r
Ú_prepare_thread_contextr%ÚchatÚ completionsÚcreater"ÚchoicesÚmessager3Ú_parse_ai_responser'r&)r)r,ÚcontextÚpromptÚresponseÚresultÚ
parsed_resultr*s rÚanalyze_thread_contextz!AIAnalyzer.analyze_thread_contexts$àð JÝ 
¨u°f¸cÀ5Ñ ×Ñð ð*
ð+ ð ð ˆð@ \Ø”{Ô3×”jØ#)°fÐØð ôˆHðÔ% aÔ8ˆFØ ×3°FÑ;ˆMØ Ð øåð \ð \ð \Ý ÐÐ Ð 4°eÐ=NÐPSÐUZÑ [øøøøð \øøøs²ABÂ
C
Â$CÂ?C
ÃC
r4cóg}t|ddd¦«D]Ö\}}| dd¦«}| dd¦«}| dd ¦«}| d
d ¦«}| d |d |d
¦«| d|¦«| d|¦«| d|¦«| d ¦«Œ×d |¦«S)z&Prepare thread context for AI analysiséüÿÿÿNéÚfromÚUnknownÚsubjectú
No subjectÚsnippetÚÚdatezMessage z (z):zFrom: z Subject: z Content: Ú
)Ú enumerateÚgetÚappendÚjoin) r)r4Ú
context_partsÚmsgÚsenderrJrLrNs rr8z"AIAnalyzer._prepare_thread_contextXs àˆ
å ¨¨¨¤
¨qÑ
%‰FˆAˆ—W’W˜V YÑ/ˆFØ—g’g˜i¨Ñ6ˆGØ—g’g˜i¨Ñ,ˆ—77˜6 &ˆ × Ò Ð!9¨AÐ!9Ð!9°Ð!9Ð!9Ð!9Ñ × Ò Ð!2¨&Ð!2Ð!2Ñ × Ò Ð!6¨WÐ!6Ð!6Ñ × Ò Ð!6¨WÐ!6Ð!6Ñ × Ò  Ñ yŠy˜Ñ'rrAcóŒ| d¦«}d}d}d}d}d}|D]}| ¦«}| d¦«r)| dd¦« ¦«}ŒU| d ¦«r;| d d¦« ¦« ¦«}Œ¥| d
¦«r)| d
d¦« ¦«}Œã| d ¦«rD | d d¦« ¦«} t | ¦«}Œ2#d}YŒ9xYw| d ¦«r>| d d¦« ¦« ¦«}
|
d
v}Œ‘t
|||||¦«S)z(Parse AI response into structured formatrOzNo summary availableÚmediumr7gà?TzSUMMARY:rMzURGENCY:zACTION:z CONFIDENCE:zNEEDS_RESPONSE:)ÚtrueÚyesÚ1)ÚsplitÚstripÚ
startswithÚreplaceÚlowerrr
) r)rAÚlinesr ÚurgencyÚactionrrÚlineÚconfidence_textÚneeds_response_texts rr>zAIAnalyzer._parse_ai_responsejà˜tÑØØˆØØˆ
؈àð Mñ Mˆ—::<”<ˆŠ˜
MØŸ,š, z°2Ñ6×>Ø Ñ
MØŸ,š, z°2Ñ6×>×FØ Ñ
MØŸš i°Ñ4×<Ø Ñ
Mð%Ø&*§l¢l°=À"Ñ&EÔ&E×&KÒ&KÑ&MÔ&MOÝ!& Ñ!7Ô!7JJøð%Ø!$JJ‘JøøøØÐ!2Ñ
MØ&*§l¢lÐ3DÀbÑ&IÔ&I×&OÒ&OÑ&QÔ&Q×&WÒ&WÑ&YÔ&YÐ#Ø!4Ð8LÐ!Lùå˜G W¨f°jÀ.ÑQs Ä7EÅENÚ thread_idr Ú alert_levelÚ
email_datacó&ddddœ}ddddd œ}|rÙ| d
d ¦«}| d d
¦«}| dd¦«} | dd¦«}
ddlm} t| t¦«r?|  |  dd¦«¦«} |  d¦«}
nt| ¦«}
n#t| ¦«}
Yn xYwd }d
}d}
d}
d| |d¦«d| |jd¦«d|j ¦«d|d|d|d|
d |
d!d"…t|
¦«d"krd#nd$d%|j
d&|j d'  ¦«}|S)(z-Generate formatted alert message for WhatsAppu🚨 LEVEL 1 ALERT (1-24 Hours)u-🚨🚨 LEVEL 2 ALERT (24-48 Hours - URGENT)u1🚨🚨🚨 LEVEL 3 ALERT (48+ Hours - CRITICAL))rGééu🟢u🟡u🟠u🔴)r/rYÚhighÚcriticalrHrIrJrKrNz Unknown timerLz
No contentr)ÚdatetimeÚZz+00:00z%Y-%m-%d %H:%MrOÚALERTz
u⚪z
Urgency: u
📧 Thread ID: u!
📧 Email Details:
👤 From: u
📋 Subject: u
â° Sent: u
📄 Body: NéÈz...rMu
📠AI Summary:
u
🎯 Action Required:
z