+
    iK‰i>B  ã            
       ó$  € R t ^ RIt^ RIt^ RIHt ]P
                  P                  ^ ]P
                  P                  ]P
                  P                  ]P
                  P                  ]	4      4      4      4       ^ RI
HtHtHtHtHt  ! R R4      tR# )u�   
æœˆæ¬¡ãƒ¬ãƒ�ãƒ¼ãƒˆç”Ÿæˆ�ã‚µãƒ¼ãƒ“ã‚¹ - LLMåˆ†æž�ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
å�„ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã�®ãƒ‡ãƒ¼ã‚¿ã‚’LLMã�«æ¸¡ã�—ã�¦åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’ç”Ÿæˆ�
N)ÚOptional)ÚLLM_ANALYSIS_ENABLEDÚOPENAI_API_KEYÚOPENAI_MODELÚOPENAI_TEMPERATUREÚOPENAI_MAX_TOKENSc                   ó,  a € ] tR t^t o RtRRRRRRRR	R
RRR/tR)V 3R lR llt]V 3R lR l4       tR t	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltV 3R& lR' ltR(tV tR# )*ÚLLMAnalyzeru0   LLMã‚’ä½¿ã�£ã�Ÿåˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆç”Ÿæˆ�ã‚¯ãƒ©ã‚¹Úsummaryuv  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®æœˆæ¬¡ã‚µãƒžãƒªãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’åˆ†æž�ã�—ã€�å…¨ä½“å‚¾å�‘ã�¨å‰�æœˆæ¯”ã�®å¤‰åŒ–ã�«ã�¤ã�„ã�¦
ç°¡æ½”ã�«è©•ä¾¡ã�—ã�¦ã��ã� ã�•ã�„ã€‚è‰¯ã�„ç‚¹ã�¨æ³¨æ„�ã�Œå¿…è¦�ã�ªç‚¹ã�Œã�‚ã‚Œã�°ä¸¡æ–¹æŒ‡æ‘˜ã�—ã�¦ã��ã� ã�•ã�„ã€‚

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’2-3æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úusage_overviewuL  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®åˆ©ç”¨çŠ¶æ³�ãƒ‡ãƒ¼ã‚¿ï¼ˆæ—¥åˆ¥æŽ¨ç§»ã€�å‰�æœˆæ¯”è¼ƒï¼‰ã‚’åˆ†æž�ã�—ã€�
åˆ©ç”¨å‚¾å�‘ã‚„å‰�æœˆã�‹ã‚‰ã�®å¤‰åŒ–ã�«ã�¤ã�„ã�¦ç°¡æ½”ã�«ã‚³ãƒ¡ãƒ³ãƒˆã�—ã�¦ã��ã� ã�•ã�„ã€‚

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’2-3æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úusage_patternum  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®åˆ©ç”¨ãƒ‘ã‚¿ãƒ¼ãƒ³ãƒ‡ãƒ¼ã‚¿ï¼ˆæ™‚é–“å¸¯åˆ¥ãƒ»æ›œæ—¥åˆ¥ï¼‰ã‚’åˆ†æž�ã�—ã€�
é�‹ç”¨æ”¹å–„ã�¸ã�®ç¤ºå”†ï¼ˆä¾‹ï¼šãƒ”ãƒ¼ã‚¯æ™‚é–“å¸¯ã�®å¯¾å¿œå¼·åŒ–ã�ªã�©ï¼‰ã‚’ç°¡æ½”ã�«ã‚³ãƒ¡ãƒ³ãƒˆã�—ã�¦ã��ã� ã�•ã�„ã€‚

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’2-3æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úqualityuz  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®å›žç­”å“�è³ªãƒ‡ãƒ¼ã‚¿ï¼ˆè§£æ±ºçŽ‡ã€�ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯çŽ‡ã€�æº€è¶³åº¦ã€�ä½Žè©•ä¾¡å‚¾å�‘ï¼‰ã‚’åˆ†æž�ã�—ã€�
å“�è³ªæ”¹å–„ã�®ãƒ�ã‚¤ãƒ³ãƒˆã‚’ç°¡æ½”ã�«ã‚³ãƒ¡ãƒ³ãƒˆã�—ã�¦ã��ã� ã�•ã�„ã€‚

é‡�è¦�ã�ªæ³¨æ„�äº‹é …:
- ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯çŽ‡ã�Œ20%æœªæº€ã�®å ´å�ˆã€�æº€è¶³åº¦ã�®çµ±è¨ˆçš„ä¿¡é ¼æ€§ã�Œä½Žã�„ã�“ã�¨ã‚’æŒ‡æ‘˜ã�—ã�¦ã��ã� ã�•ã�„
- ã‚µãƒ³ãƒ—ãƒ«æ•°ã�Œå°‘ã�ªã�„å ´å�ˆã�¯ã€Œãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯çŽ‡ã�Œä½Žã��ã€�æº€è¶³åº¦ã�¯å�‚è€ƒå€¤ã€�ã�¨æ˜Žè¨˜ã�—ã�¦ã��ã� ã�•ã�„
- æ”¹å–„æ��æ¡ˆã�¯ã€ŒQ&Aãƒ‡ãƒ¼ã‚¿ã�®è¿½åŠ ãƒ»ä¿®æ­£ã€�ã�ªã�©é¡§å®¢ã�Œã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã�§ã��ã‚‹ç¯„å›²ã�«é™�å®šã�—ã�¦ã��ã� ã�•ã�„
- ã‚·ã‚¹ãƒ†ãƒ æ©Ÿèƒ½ã�®æ”¹å–„æ��æ¡ˆï¼ˆãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯ä¿ƒé€²ã�®ä»•çµ„ã�¿å°Žå…¥ã�ªã�©ï¼‰ã�¯çµ¶å¯¾ã�«å�«ã‚�ã�ªã�„ã�§ã��ã� ã�•ã�„

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’3-4æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úkeywordsuy  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰åˆ†æž�ãƒ‡ãƒ¼ã‚¿ï¼ˆé »å‡ºã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€�æœªè§£æ±ºã�«å¤šã�„ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ï¼‰ã‚’åˆ†æž�ã�—ã€�
ãƒ¦ãƒ¼ã‚¶ãƒ¼ã�®é–¢å¿ƒäº‹ã‚„æœªå¯¾å¿œé ˜åŸŸã�«ã�¤ã�„ã�¦ç°¡æ½”ã�«ã‚³ãƒ¡ãƒ³ãƒˆã�—ã�¦ã��ã� ã�•ã�„ã€‚

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’2-3æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úimprovementu—  ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ã‚¢ãƒŠãƒªã‚¹ãƒˆã�§ã�™ã€‚
ä»¥ä¸‹ã�®å›žç­”ã�§ã��ã�ªã�‹ã�£ã�Ÿè³ªå•�ä¸€è¦§ã‚’åˆ†æž�ã�—ã€�
æ”¹å–„å„ªå…ˆåº¦ã�Œé«˜ã�„ãƒˆãƒ”ãƒƒã‚¯ã‚„å…·ä½“çš„ã�ªQ&Aè¿½åŠ æ��æ¡ˆã‚’ç°¡æ½”ã�«ã‚³ãƒ¡ãƒ³ãƒˆã�—ã�¦ã��ã� ã�•ã�„ã€‚

ãƒ‡ãƒ¼ã‚¿:
{data}

åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’2-3æ–‡ã�§æ—¥æœ¬èªžã�§è¨˜è¼‰ã�—ã�¦ã��ã� ã�•ã�„ã€‚å…·ä½“çš„ã�ªQ&Aè¿½åŠ å€™è£œã�Œã�‚ã‚Œã�°1-2ä»¶æ��æ¡ˆã�—ã�¦ã��ã� ã�•ã�„ã€‚Nc                ó    <€ V ^8„  d   QhRS[ /# )é   Úenabled©Úbool)ÚformatÚ__classdict__s   "€ÚFC:\Users\tmash\Documents\claude_code\chat\reports\core\llm_analyzer.pyÚ__annotate__ÚLLMAnalyzer.__annotate__U   s   ø€ ÷ 
ñ 
¡ñ 
ó    c                óR   € Ve   TM\         V n        RV n        RV n        / V n        R# )uo   
åˆ�æœŸåŒ–

Args:
    enabled: LLMåˆ†æž�ã‚’æœ‰åŠ¹ã�«ã�™ã‚‹ã�‹ï¼ˆNoneã�®å ´å�ˆã�¯è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã�«å¾“ã�†ï¼‰
NF)r   Ú_enabledÚ_clientÚ_client_init_failedÚ	_analyses)Úselfr   s   &&r   Ú__init__ÚLLMAnalyzer.__init__U   s)   € ð $+Ò#6™Ô<PˆŒØˆŒØ#(ˆÔ ØˆŽr   c                ó    <€ V ^8„  d   QhRS[ /# )r   Úreturnr   )r   r   s   "€r   r   r   b   s   ø€ ÷ 6ñ 6™ñ 6r   c                óH   € V P                   ;'       d    \        \        4      # )u   LLMåˆ†æž�ã�Œæœ‰åŠ¹ã�‹ã�©ã�†ã�‹)r   r   r   )r    s   &r   r   ÚLLMAnalyzer.enableda   s   € ð �}‰}×5Ð5¤¤nÓ!5Ð5r   c                ó†  € V P                   '       d   R# V P                  f&    ^ RIHp V! \        R7      V n        V P                  # V P                  #   \
         d(    \        R4       RT n        RT n          T P                  # \         d2   p\        RT 24       RT n        RT n          Rp?T P                  # Rp?ii ; i)u7   OpenAI ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’å�–å¾—ï¼ˆé�…å»¶åˆ�æœŸåŒ–ï¼‰N)ÚOpenAI)Úapi_keyu{   è­¦å‘Š: openaiãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã�Œã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã�•ã‚Œã�¦ã�„ã�¾ã�›ã‚“ã€‚pip install openai ã‚’å®Ÿè¡Œã�—ã�¦ã��ã� ã�•ã�„ã€‚FTuC   è­¦å‘Š: OpenAIã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã�®åˆ�æœŸåŒ–ã�«å¤±æ•—ã�—ã�¾ã�—ã�Ÿ: )	r   r   Úopenair(   r   ÚImportErrorÚprintr   Ú	Exception)r    r(   Úes   &  r   Ú_get_clientÚLLMAnalyzer._get_clientf   sº   € ð ×#×#Ð#Ùà�<‰<Òð
0Ý)Ù%¬nÔ=�”ð �|‰|Ðˆt�|‰|Ðøô ô 0Üð  Tô  UØ %�”Ø+/�Õ(ð
 �|‰|Ðô	 ô 0ÜÐ[Ð\]Ð[^Ð_Ô`Ø %�”Ø+/�×(Ð(Ø�|‰|Ðûð	0ús#   ¤A Á$C ÂC ÂC ÂB;Â;C c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[ ,          /# ©r   ÚsectionÚdatar$   )ÚstrÚdictr   )r   r   s   "€r   r   r   z   s&   ø€ ÷ /ñ /¡sð /±$ð /¹8ÁC½=ñ /r   c                ó¤  € V P                   '       g   R# WP                  9  d   \        RV R24       R# WP                  9   d   V P                  V,          # V P	                  4       pVf   R# V P                  W4      pV P                  V,          P                  VR7      p VP                  P                  P                  \        RRRR/RR	RV/.\        \        R
7      pVP                  ^ ,          P                  P                  P!                  4       pWpP                  V&   V#   \"         d   p\        RT RT 24        Rp?R# Rp?ii ; i)u  
ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã�®ãƒ‡ãƒ¼ã‚¿ã‚’åˆ†æž�ã�—ã�¦ã‚³ãƒ¡ãƒ³ãƒˆã‚’ç”Ÿæˆ�

Args:
    section: ã‚»ã‚¯ã‚·ãƒ§ãƒ³å��ï¼ˆsummary, usage_overview, usage_pattern, quality, keywords, improvementï¼‰
    data: åˆ†æž�å¯¾è±¡ã�®ãƒ‡ãƒ¼ã‚¿

Returns:
    åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆï¼ˆæ–‡å­—åˆ—ï¼‰ã€�å¤±æ•—æ™‚ã�¯None
Nu"   è­¦å‘Š: æœªçŸ¥ã�®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 'Ú')r4   ÚroleÚsystemÚcontentu«   ã�‚ã�ªã�Ÿã�¯æ²»é¨“ãƒ�ãƒ£ãƒƒãƒˆãƒœãƒƒãƒˆã�®é�‹ç”¨ãƒ‡ãƒ¼ã‚¿ã‚’åˆ†æž�ã�™ã‚‹å°‚é–€å®¶ã�§ã�™ã€‚ç°¡æ½”ã�§å®Ÿç”¨çš„ã�ªåˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’æ—¥æœ¬èªžã�§æ��ä¾›ã�—ã�¦ã��ã� ã�•ã�„ã€‚Úuser)ÚmodelÚmessagesÚtemperatureÚ
max_tokensu   è­¦å‘Š: ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 'u%   ' ã�®LLMåˆ†æž�ã�«å¤±æ•—ã�—ã�¾ã�—ã�Ÿ: )r   ÚSECTION_PROMPTSr,   r   r/   Ú_format_datar   ÚchatÚcompletionsÚcreater   r   r   ÚchoicesÚmessager;   Ústripr-   )	r    r3   r4   ÚclientÚdata_strÚpromptÚresponseÚresultr.   s	   &&&      r   Úanalyze_sectionÚLLMAnalyzer.analyze_sectionz   sK  € ð �|�|ˆ|Ùà×.Ñ.Ô.ÜÐ6°w°i¸qÐAÔBÙð —n‘nÔ$Ø—>‘> 'Õ*Ð*à×!Ñ!Ó#ˆØŠ>Ùð ×$Ñ$ WÓ3ˆð ×%Ñ% gÕ.×5Ñ5¸8Ð5ÓDˆð	Ø—{‘{×.Ñ.×5Ñ5Ü"à˜X yð  3`ð  aØ˜V Y°Ð7ðô /Ü,ð 6ó ˆHð ×%Ñ% aÕ(×0Ñ0×8Ñ8×>Ñ>Ó@ˆFØ&,�N‰N˜7Ñ#ØˆMøÜô 	ÜÐ-¨g¨YÐ6[Ð\]Ð[^Ð_Ô`Ýûð	ús   Â$BD( Ä(EÄ3E
Å
Ec                ó,   <€ V ^8„  d   QhRS[ RS[RS[ /# r2   )r5   r6   )r   r   s   "€r   r   r   «   s"   ø€ ÷ ñ ¡Cð ©tð ¹ñ r   c                ó8  € VR8X  d   V P                  V4      # VR8X  d   V P                  V4      # VR8X  d   V P                  V4      # VR8X  d   V P                  V4      # VR8X  d   V P	                  V4      # VR8X  d   V P                  V4      # \        V4      # )u-   ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã�«å¿œã�˜ã�¦ãƒ‡ãƒ¼ã‚¿ã‚’æ•´å½¢r
   r   r   r   r   r   )Ú_format_summary_dataÚ_format_usage_overview_dataÚ_format_usage_pattern_dataÚ_format_quality_dataÚ_format_keywords_dataÚ_format_improvement_datar5   )r    r3   r4   s   &&&r   rB   ÚLLMAnalyzer._format_data«   s£   € à�iÔØ×,Ñ,¨TÓ2Ð2ØÐ(Ô(Ø×3Ñ3°DÓ9Ð9Ø˜Ô'Ø×2Ñ2°4Ó8Ð8Ø˜	Ô!Ø×,Ñ,¨TÓ2Ð2Ø˜
Ô"Ø×-Ñ-¨dÓ3Ð3Ø˜Ô%Ø×0Ñ0°Ó6Ð6ä�t“9Ðr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   r4   r$   ©r6   r5   )r   r   s   "€r   r   r   ¼   s   ø€ ÷  ñ  ©ð  ±#ñ  r   c                óX  € VP                  R/ 4      pVP                  R/ 4      pRRVP                  R^ 4      R R2RVP                  R	^ 4      R 2R
VP                  R^ 4       R2RVP                  R^ 4       R2RVP                  R^ 4       R2RVP                  R^ 4       R2RRRVP                  R/ 4      P                  R^ 4      R R2RVP                  R/ 4      P                  R^ 4      R R2RVP                  R/ 4      P                  R^ 4      R R2.pRP                  V4      # )u0   ã‚µãƒžãƒªãƒ¼ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢r
   Ú
comparisonu   ã€�ã‚µãƒžãƒªãƒ¼ã€‘õ   ãƒ»ç·�ä¼šè©±æ•°: Útotal_conversationsÚ,õ   ä»¶u.   ãƒ»ãƒ¦ãƒ‹ãƒ¼ã‚¯IPæ•°ï¼ˆâ‰’ãƒ¦ãƒ¼ã‚¶ãƒ¼æ•°ï¼‰: Ú
unique_ipsu)   ãƒ»ãƒ¦ãƒ¼ã‚¶ãƒ¼ã�‚ã�Ÿã‚Šå¹³å�‡ä¼šè©±æ•°: Úconversations_per_userõ   å›žõ   ãƒ»è‡ªå‹•è§£æ±ºçŽ‡: Úresolution_rateÚ%u   ãƒ»æœªè§£æ±ºçŽ‡: Úunresolved_rateõ   ãƒ»æº€è¶³åº¦: Úsatisfaction_rateÚ õ   ã€�å‰�æœˆæ¯”è¼ƒã€‘u   ãƒ»ç·�ä¼šè©±æ•°ã�®å¤‰åŒ–: ÚchangesÚ+u    ãƒ»å›žç­”ã�§ã��ã�Ÿæ•°ã�®å¤‰åŒ–: Úanswered_countu)   ãƒ»å›žç­”ã�§ã��ã�ªã�‹ã�£ã�Ÿæ•°ã�®å¤‰åŒ–: Úunanswered_countÚ
)ÚgetÚjoin)r    r4   r
   r]   Úliness   &&   r   rR   Ú LLMAnalyzer._format_summary_data¼   sb  € à—(‘(˜9 bÓ)ˆØ—X‘X˜l¨BÓ/ˆ
ð !Ø §¡Ð,AÀ1Ó EÀaÐHÈÐLØ<¸W¿[¹[ÈÐWXÓ=YÐZ[Ð<\Ð]Ø7¸¿¹ÐD\Ð^_Ó8`Ð7aÐadÐeØ" 7§;¡;Ð/@À!Ó#DÐ"EÀQÐGØ §¡Ð,=¸qÓ AÐBÀ!ÐDØ˜WŸ[™[Ð)<¸aÓ@ÐAÀÐCØØ Ø(¨¯©¸	À2Ó)F×)JÑ)JÐK`ÐbcÓ)dÐefÐ(gÐghÐiØ.¨z¯~©~¸iÈÓ/L×/PÑ/PÐQaÐcdÓ/eÐfgÐ.hÐhiÐjØ7¸
¿¹ÀyÐRTÓ8U×8YÑ8YÐZlÐnoÓ8pÐqrÐ7sÐstÐuð
ˆð �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rZ   r[   )r   r   s   "€r   r   r   Ñ   s   ø€ ÷ " ñ " ±ð " ¹ñ " r   c                óŒ  € VP                  R. 4      pVP                  R/ 4      pV'       d_   \        V4      pV'       d   \        VR R7      M/ pV'       d   \        VR R7      M/ pV^ 8”  d   \	        R V 4       4      V,          M^ pM^ p/ p/ p^ pVP                  R/ 4      pVP                  R/ 4      p	VP                  R	/ 4      p
R
RV R2RVR R2RVP                  RR4       RVP                  R^ 4       R2RVP                  RR4       RVP                  R^ 4       R2RRRV	P                  R^ 4       RVP                  R^ 4       RV
P                  R^ 4      R R2RV	P                  R^ 4       RVP                  R^ 4       R2R V	P                  R!^ 4       RVP                  R!^ 4       R2.
pR"P                  V4      # )#u6   åˆ©ç”¨çŠ¶æ³�æ¦‚è¦�ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢Údaily_statsr]   c                 ó&   € V P                  R ^ 4      # ©r_   ©rr   ©Úxs   &r   Ú<lambda>Ú9LLMAnalyzer._format_usage_overview_data.<locals>.<lambda>Ù   ó   € °Q·U±UÐ;PÐRSÔ5Tr   ©Úkeyc                 ó&   € V P                  R ^ 4      # rz   r{   r|   s   &r   r~   r   Ú   r€   r   c              3   óD   "  € T F  qP                  R ^ 4      x € K  	  R# 5i)r_   Nr{   )Ú.0Úds   & r   Ú	<genexpr>Ú:LLMAnalyzer._format_usage_overview_data.<locals>.<genexpr>Û   s   é € ÐQÁ[ÀŸE™EÐ"7¸×;Ð;Ã[ùs   ‚ ÚcurrentÚpreviousrm   u   ã€�æ—¥åˆ¥çµ±è¨ˆã‚µãƒžãƒªãƒ¼ã€‘u   ãƒ»ãƒ‡ãƒ¼ã‚¿æ—¥æ•°: u   æ—¥u!   ãƒ»1æ—¥ã�‚ã�Ÿã‚Šå¹³å�‡ä¼šè©±æ•°: z.1fra   u   ãƒ»æœ€å¤šæ—¥: ÚdateúN/Aú (r_   õ   ä»¶)u   ãƒ»æœ€å°‘æ—¥: rk   rl   u   ãƒ»ç·�ä¼šè©±æ•°: å‰�æœˆu   ä»¶ â†’ å½“æœˆu   ä»¶ï¼ˆrn   u   %ï¼‰u   ãƒ»å›žç­”ã�§ã��ã�Ÿ: å‰�æœˆro   u#   ãƒ»å›žç­”ã�§ã��ã�ªã�‹ã�£ã�Ÿ: å‰�æœˆrp   rq   )rr   ÚlenÚmaxÚminÚsumrs   )r    r4   rx   r]   Ú
total_daysÚmax_dayÚmin_dayÚ	avg_dailyr‰   rŠ   rm   rt   s   &&          r   rS   Ú'LLMAnalyzer._format_usage_overview_dataÑ   sQ  € à—h‘h˜}¨bÓ1ˆØ—X‘X˜l¨BÓ/ˆ
÷ Ü˜[Ó)ˆJßYd”c˜+Ñ+TÕUÐjlˆGßYd”c˜+Ñ+TÕUÐjlˆGØblÐopÔbpœÑQÁ[ÓQÓQÐT^Ö^Ðvw‰IàˆJØˆGØˆGØˆIð —.‘. ¨BÓ/ˆØ—>‘> *¨bÓ1ˆØ—.‘. ¨BÓ/ˆð -Ø" : ,¨cÐ2Ø/°	¸#¨¸cÐBØ˜WŸ[™[¨°Ó7Ð8¸¸7¿;¹;ÐG\Ð^_Ó;`Ð:aÐaeÐfØ˜WŸ[™[¨°Ó7Ð8¸¸7¿;¹;ÐG\Ð^_Ó;`Ð:aÐaeÐfØØ Ø% h§l¡lÐ3HÈ!Ó&LÐ%MÈ^Ð\c×\gÑ\gÐh}ð  @Aó  ]Bð  \Cð  CIð  JQ÷  JUñ  JUð  Vkð  mnó  Joð  pqð  Irð  rvð  wØ(¨¯©Ð6FÈÓ)JÐ(KÈ>ÐZa×ZeÑZeÐfvÐxyÓZzÐY{Ð{~ÐØ1°(·,±,Ð?QÐSTÓ2UÐ1VÐVdÐel×epÑepð  rDð  FGó  fHð  eIð  ILð  Mð
ˆð �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rZ   r[   )r   r   s   "€r   r   r   õ   s   ø€ ÷ ! ñ ! ©tð ! ¹ñ ! r   c                ó¤  € VP                  R. 4      pVP                  R. 4      pV'       d   V'       d   \        VR R7      M/ pM/ pV'       d   V'       d   \        VR R7      M/ pM/ pRRVP                  RR	4       R
VP                  R^ 4       R2RRRVP                  RR	4       RVP                  R^ 4       R2.pV'       dz   \        VR RR7      R,          pVP                  R4       VP                  R4       V F;  pVP                  RVP                  R^ 4       RVP                  R^ 4       R24       K=  	  RP	                  V4      # )u6   åˆ©ç”¨ãƒ‘ã‚¿ãƒ¼ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢Úhourly_statsÚday_of_week_statsc                 ó&   € V P                  R ^ 4      # ©Úcountr{   r|   s   &r   r~   Ú8LLMAnalyzer._format_usage_pattern_data.<locals>.<lambda>ü   s   € ¸¿¹¸gÀqÔ8Ir   r�   c                 ó&   € V P                  R ^ 4      # r�   r{   r|   s   &r   r~   rŸ     s   € °A·E±E¸'À1Ô4Er   u   ã€�æ™‚é–“å¸¯åˆ¥å‚¾å�‘ã€‘u   ãƒ»ãƒ”ãƒ¼ã‚¯æ™‚é–“å¸¯: ÚhourrŒ   u   æ™‚å�° (rž   rŽ   rk   u   ã€�æ›œæ—¥åˆ¥å‚¾å�‘ã€‘u    ãƒ»æœ€ã‚‚åˆ©ç”¨ã�Œå¤šã�„æ›œæ—¥: Úday_namer�   c                 ó&   € V P                  R ^ 4      # r�   r{   r|   s   &r   r~   rŸ     s   € ¸q¿u¹uÀWÈaÔ?Pr   T©r‚   ÚreverseºNé   Nu   ã€�æ™‚é–“å¸¯åˆ¥ä¸Šä½�5ã€‘õ   ãƒ»u   æ™‚å�°: ra   rq   )rr   r�   ÚsortedÚappendrs   )	r    r4   rš   Ú	dow_statsÚ	peak_hourÚpeak_dowrt   Úsorted_hourlyÚhs	   &&       r   rT   Ú&LLMAnalyzer._format_usage_pattern_dataõ   sL  € à—x‘x °Ó3ˆØ—H‘HÐ0°"Ó5ˆ	÷ ßNZœ˜LÑ.IÕJÐ`b‰IàˆI÷ ßJS”s˜9Ñ*EÕFÐY[‰HàˆHð 'Ø% i§m¡m°F¸EÓ&BÐ%CÀ8ÈIÏMÉMÐZaÐcdÓLeÐKfÐfjÐkØØ#Ø.¨x¯|©|¸JÈÓ/NÐ.OÈrÐRZ×R^ÑR^Ð_fÐhiÓRjÐQkÐkoÐpð
ˆ÷ Ü" <Ñ5PÐZ^Ô_Ð`bÕcˆMØ�L‰L˜ÔØ�L‰LÐ4Ô5Û"�Ø—‘˜s 1§5¡5¨°Ó#3Ð"4°H¸Q¿U¹UÀ7ÈAÓ=NÐ<OÈsÐSÖTñ #ð �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rZ   r[   )r   r   s   "€r   r   r     s   ø€ ÷ ! ñ ! ©ð ! ±#ñ ! r   c                ó  € VP                  R/ 4      pVP                  R. 4      pVP                  R^ 4      pVP                  R^ 4      pVP                  R^ 4      pRRVR R	2R
VP                  R^ 4      R R	2RVP                  R^ 4      R R	2RVP                  R^ 4       R2RRRV RV R2RV R2RVP                  R^ 4      R R	2RVP                  R^ 4      R R	2RVP                  R^ 4       R2.pV'       d~   VP                  R4       VP                  R4       VR,           FN  pVP                  R R4      p	V	'       g   K  TP                  R!V	R",           \        V	4      ^28”  d   R#MR 24       KP  	  R$P                  V4      # )%u0   å›žç­”å“�è³ªã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢r
   Úrecent_dislikedr_   Útotal_feedbacksÚfeedback_rateu   ã€�å›žç­”å“�è³ªæŒ‡æ¨™ã€‘r^   r`   ra   u   ãƒ»å›žç­”ã�§ã��ã�Ÿ: ro   u   ãƒ»å›žç­”ã�§ã��ã�ªã�‹ã�£ã�Ÿ: rp   re   rf   rg   rk   u!   ã€�ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯æŒ‡æ¨™ã€‘u   ãƒ»ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯æ•°: u   ä»¶ / u   ä¼šè©±u   ãƒ»ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯çŽ‡: u   ãƒ»ã�„ã�„ã�­: Úlikes_countu   ãƒ»ã‚ˆã��ã�ªã�„: Údislikes_countri   rj   u*   %ï¼ˆã�„ã�„ã�­Ã·ãƒ•ã‚£ãƒ¼ãƒ‰ãƒ�ãƒƒã‚¯æ•°ï¼‰u-   ã€�ä½Žè©•ä¾¡ã‚’å�—ã�‘ã�Ÿè³ªå•�ã‚µãƒ³ãƒ—ãƒ«ã€‘r¦   Úquestionr¨   :Né2   Nú...rq   )rr   rª   r�   rs   )
r    r4   r
   r³   r_   r´   rµ   rt   r†   Úqs
   &&        r   rU   Ú LLMAnalyzer._format_quality_data  s·  € à—(‘(˜9 bÓ)ˆØŸ(™(Ð#4°bÓ9ˆà%Ÿk™kÐ*?ÀÓCÐØ!Ÿ+™+Ð&7¸Ó;ˆØŸ™ O°QÓ7ˆð 'ØÐ 3°AÐ6°cÐ:Ø" 7§;¡;Ð/?ÀÓ#CÀAÐ"FÀcÐJØ+¨G¯K©KÐ8JÈAÓ,NÈqÐ+QÐQTÐUØ" 7§;¡;Ð/@À!Ó#DÐ"EÀQÐGØØ/Ø+¨OÐ+<¸FÐCVÐBWÐW]Ð^Ø+¨M¨?¸!Ð<Ø˜WŸ[™[¨¸Ó:¸1Ð=¸SÐAØ §¡Ð,<¸aÓ @ÀÐCÀ3ÐGØ˜WŸ[™[Ð)<¸aÓ@ÐAÐAkÐlð
ˆ÷  Ø�L‰L˜ÔØ�L‰LÐHÔIØ$ R×(Ð(�Ø—E‘E˜* bÓ)�ß‘1Ø—L‘L 3 q¨¥v h¼¸A»À¼©uÈÐ.LÐ!MÖNñ )ð
 �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rZ   r[   )r   r   s   "€r   r   r   ;  s   ø€ ÷  ñ  ©$ð  ±3ñ  r   c           
     óÎ  € VP                  R. 4      pVP                  R. 4      pR.pVR,           Fy  p\        V\        4      '       d)   VP                  RV^ ,           RV^,           R24       KA  VP                  RVP                  RR	4       RVP                  R
^ 4       R24       K{  	  VP                  R	4       VP                  R4       VR,           Fy  p\        V\        4      '       d)   VP                  RV^ ,           RV^,           R24       KA  VP                  RVP                  RR	4       RVP                  R
^ 4       R24       K{  	  RP	                  V4      # )u9   ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰åˆ†æž�ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢r   Úunresolved_keywordsu#   ã€�é »å‡ºã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ä¸Šä½�10ã€‘ºNé
   Nr¨   z: rd   Úkeywordrk   rž   u/   ã€�æœªè§£æ±ºã�«å¤šã�„ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ä¸Šä½�10ã€‘rq   )rr   Ú
isinstanceÚtuplerª   rs   )r    r4   r   r¿   rt   Úkws   &&    r   rV   Ú!LLMAnalyzer._format_keywords_data;  s@  € à—8‘8˜J¨Ó+ˆØ"Ÿh™hÐ'<¸bÓAÐà6Ð7ˆØ˜3—-�-ˆBä˜"œe×$Ò$Ø—‘˜s 2 a¥5 '¨¨B¨q­E¨7°#Ð6Ö7à—‘˜s 2§6¡6¨)°RÓ#8Ð"9¸¸B¿F¹FÀ7ÈAÓ<NÐ;OÈsÐSÖTñ  ð 	�‰�RÔØ�‰ÐFÔGØ% c×*Ð*ˆBÜ˜"œe×$Ò$Ø—‘˜s 2 a¥5 '¨¨B¨q­E¨7°#Ð6Ö7à—‘˜s 2§6¡6¨)°RÓ#8Ð"9¸¸B¿F¹FÀ7ÈAÓ<NÐ;OÈsÐSÖTñ	 +ð �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rZ   r[   )r   r   s   "€r   r   r   R  s   ø€ ÷  ñ  ©Tð  ±cñ  r   c           
     óÚ  € VP                  R. 4      p/ pV F?  pVP                  RR4      pV'       g   K  WS9  d   ^W5&   K+  W5;;,          ^,          uu&   KA  	  \        VP                  4       R RR7      pRR\        V4       R	2R
\        V4       R	2RR.pVR,           F7  w  rHTP	                  RT RVR,           \        V4      ^<8”  d   RMR 24       K9  	  RP                  V4      # )u0   æ”¹å–„æ��æ¡ˆã‚»ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã�®ãƒ‡ãƒ¼ã‚¿æ•´å½¢Úunanswered_questionsÚuser_messagerk   c                 ó   € V ^,          # )é   © r|   s   &r   r~   Ú6LLMAnalyzer._format_improvement_data.<locals>.<lambda>`  s   € È!ÈAÎ$r   Tr¤   u$   ã€�å›žç­”ã�§ã��ã�ªã�‹ã�£ã�Ÿè³ªå•�ã€‘u   ãƒ»ç·�æ•°: ra   u   ãƒ»ãƒ¦ãƒ‹ãƒ¼ã‚¯æ•°: u)   ã€�é »å‡ºã�™ã‚‹æœªå›žç­”è³ªå•�ä¸Šä½�10ã€‘rÀ   u   ãƒ»(u   å›ž) :Né<   Nrº   rq   )rr   r©   Úitemsr�   rª   rs   )	r    r4   Ú
unansweredÚunique_questionsr»   r¸   Úsorted_questionsrt   rž   s	   &&       r   rW   Ú$LLMAnalyzer._format_improvement_dataR  sþ   € à—X‘XÐ4°bÓ9ˆ
ð ÐÛˆAØ—u‘u˜^¨RÓ0ˆHß‰xØÔ3Ø12Ð$Ó.à$×.°!Õ3Õ.ñ ô "Ð"2×"8Ñ"8Ó":ÁÐX\Ô]Ðð 3Øœ#˜j›/Ð*¨#Ð.Ø"¤3Ð'7Ó#8Ð"9¸Ð=ØØ7ð
ˆð )¨×-Ð-‰HˆAØ�L‰L˜4 ˜w e¨A¨c­F¨8¼SÀ»VÀb¼[±EÈbÐ3QÐRÖSñ .ð �y‰y˜ÓÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# rZ   )r6   )r   r   s   "€r   r   r   o  s   ø€ ÷  ñ  ¡ð  ©ñ  r   c                óö   € V P                   '       g   / # / pRV3RV3RV3RV3RV3RV3.pV FH  w  rEV P                   '       g    V# \        RV R24       V P                  WE4      pV'       g   KD  WbV&   KJ  	  V# )	uª   
å…¨ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã�®åˆ†æž�ã‚’å®Ÿè¡Œ

Args:
    data: ãƒ¬ãƒ�ãƒ¼ãƒˆå…¨ä½“ã�®ãƒ‡ãƒ¼ã‚¿

Returns:
    ã‚»ã‚¯ã‚·ãƒ§ãƒ³å��ã‚’ã‚­ãƒ¼ã€�åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆã‚’å€¤ã�¨ã�™ã‚‹è¾žæ›¸
r
   r   r   r   r   r   u     LLMåˆ†æž�ä¸­: rº   )r   r,   rN   )r    r4   ÚresultsÚsectionsr3   Úsection_datarM   s   &&     r   Úanalyze_allÚLLMAnalyzer.analyze_allo  s¨   € ð �|�|ˆ|ØˆIàˆà˜ÐØ˜tÐ$Ø˜dÐ#Ø˜ÐØ˜ÐØ˜DÐ!ð
ˆó &.Ñ!ˆGà—<—<�<Øð ˆô Ð$ W I¨SÐ1Ô2Ø×)Ñ)¨'Ó@ˆFß‰vØ#)˜Ó ñ &.ð ˆr   c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# )r   r3   r$   )r5   r   )r   r   s   "€r   r   r   ‘  s   ø€ ÷ 
+ñ 
+¡Cð 
+©H±S­Mñ 
+r   c                ó8   € V P                   P                  V4      # )u¢   
ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã�•ã‚Œã�Ÿåˆ†æž�çµ�æžœã‚’å�–å¾—

Args:
    section: ã‚»ã‚¯ã‚·ãƒ§ãƒ³å��

Returns:
    åˆ†æž�ã‚³ãƒ¡ãƒ³ãƒˆï¼ˆã‚­ãƒ£ãƒƒã‚·ãƒ¥ã�Œã�ªã�„å ´å�ˆã�¯Noneï¼‰
)r   rr   )r    r3   s   &&r   Úget_analysisÚLLMAnalyzer.get_analysis‘  s   € ð �~‰~×!Ñ! 'Ó*Ð*r   )r   r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rA   r!   Úpropertyr   r/   rN   rB   rR   rS   rT   rU   rV   rW   rÚ   rÞ   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r	   r	      sß   ø‡ € Ù:ð 	ð Ið 	ð Ið 	ð Ið 	ð Ið 	ð Ið 	ð Qði<€O÷|
ò 
ð ÷6ó ð6ò÷(/ð /÷bð ÷" ð  ÷*" ð " ÷H! ð ! ÷F! ð ! ÷F ð  ÷. ð  ÷: ð  ÷D
+ö 
+r   r	   )rä   ÚosÚsysÚtypingr   ÚpathÚinsertÚdirnameÚabspathÚ__file__Úconfigr   r   r   r   r   r	   rÍ   r   r   Ú<module>rñ      sd   ðñó 
Û 
Ý à ‡�‡���2—7‘7—?‘? 2§7¡7§?¡?°2·7±7·?±?À8Ó3LÓ#MÓNÔ O÷õ ÷H+ó H+r   