§
   `)·ú3dã                   ó€   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZmZ d„ Zd
dededeeffd„Zd	„ ZdS )é    N)Úshow_api_request_debugÚshow_api_response_debugÚshow_api_error_debug)ÚDEFAULT_MODELÚmodel_or_defaultc                  óˆ   — t          j        ¦   «         } t          d|                      d¦  «        pt          d         ¦  «        S )u3   VracÃ­ aktuÃ¡lnÄ› vybranÃ½ Groq model z nastavenÃ­.ÚgroqÚ
groq_model)Ú	xbmcaddonÚAddonr   Ú
getSettingr   )Úaddons    ú_/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/GroqClient.pyÚget_current_modelr      s8   € åŒOÑÔ€EÝ˜F E×$4Ò$4°\Ñ$BÔ$BÐ$[ÅmÐTZÔF[Ñ\Ô\Ð\ó    ÚpromptÚmodelÚreturnc                 óÜ  — t          j        ¦   «         }|                     d¦  «        }|st          d¦  «        ‚|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|€t          ¦   «         }t          |                     d¦  «        pd¦  «        }t          |                     d¦  «        pd	¦  «        }	t          |                     d
¦  «        p|                     d¦  «        pd¦  «        }
d}d|› �ddœ}g }|                     dd ¦  «        }|r_t          d„ |D ¦   «         ¦  «        }|r|s| 	                    d|dœ¦  «         |D ]&}| 	                    |d         |d         dœ¦  «         Œ'n2|r| 	                    d|dœ¦  «         | 	                    d| dœ¦  «         ||||	|
dœ}|                     dd¦  «        }|rddi|d<   t          j        d|› �t          t          dt          j        ¦  «        ¦  «         t          j        d |› �t          t          dt          j        ¦  «        ¦  «         ||||
d!œ}|                     d"d¦  «        s#t          d#||||¬$¦  «        st          d%¦  «        ‚t!          j        ¦   «         }t#          j        |||d&¬'¦  «        }t!          j        ¦   «         }||z
  }	 |                     ¦   «         }|                     d"d¦  «        st)          d#|||¬(¦  «         n7#  |                     d"d¦  «        st)          d#|d)|j        i|¬(¦  «         Y nxY w|                     ¦   «          |                     ¦   «         }|                     d*i ¦  «        }|                     d+i g¦  «        d,                              d-i ¦  «                             dd.¦  «        }|                     d/d¦  «        r||||fS ||fS )0NÚgroq_api_keyu   Groq API klÃ­Ä� nenÃ­ nastaven.Úcontext_titlesÚcontext_limitÚsystem_promptÚgroq_temperaturez0.7Ú
groq_top_pz1.0Úmax_output_tokensÚgroq_max_tokensÚ2048z/https://api.groq.com/openai/v1/chat/completionsúBearer úapplication/json©ÚAuthorizationzContent-TypeÚmessagesc              3   óH   K  — | ]}|                      d ¦  «        dk    V — ŒdS )ÚroleÚsystemN)Úget)Ú.0Úmsgs     r   ú	<genexpr>zsend_prompt.<locals>.<genexpr>4   s1   è è € ÐNÐN¸˜Ÿš ™œ¨HÒ4ÐNÐNÐNÐNÐNÐNr   r&   )r%   Úcontentr%   r+   Úuser)r   r#   ÚtemperatureÚtop_pÚ
max_tokensÚ	json_modeFÚtypeÚjson_objectÚresponse_formatz[wcs][groq] URL: Ú	LOGNOTICEz[wcs][groq] Model: )r#   r   r-   r/   Úprivate_contentÚGroq)r   r   u2   OdeslÃ¡nÃ­ API requestu bylo zruÅ¡eno uÅ¾ivatelem.éx   )ÚheadersÚjsonÚtimeout)ÚlatencyÚraw_textÚusageÚchoicesr   ÚmessageÚ Úinclude_raw)r   r   r   Ú
ValueErrorr'   r   ÚfloatÚintÚanyÚappendÚxbmcÚlogÚgetattrÚLOGINFOr   Ú	ExceptionÚtimeÚrequestsÚpostr9   r   ÚtextÚraise_for_status)r   r   Úkwargsr   ÚAPI_KEYr   r   r   r-   r.   r/   Úurlr8   r#   Úmessages_listÚ
has_systemr)   Úpayloadr0   Údebug_payloadÚ
start_timeÚresponseÚend_timer;   Úresponse_dataÚdatar=   r+   s                               r   Úsend_promptr]      sn  € åŒOÑÔ€EØ×Ò˜~Ñ.Ô.€Gàð <ÝÐ:Ñ;Ô;Ð;ð —Z’ZÐ 0Ñ1Ô1€NØ—J’J˜Ñ/Ô/€MØ—J’J˜Ñ/Ô/€Mð €}Ý!Ñ#Ô#ˆõ ˜×(Ò(Ð);Ñ<Ô<ÐEÀÑFÔF€KÝ�%×"Ò" <Ñ0Ô0Ð9°EÑ:Ô:€EÝ�V—Z’ZÐ 3Ñ4Ô4Ðe¸×8HÒ8HÐIZÑ8[Ô8[ÐeÐ_eÑfÔf€Jà
;€Cà, 7Ð,Ð,Ø*ðð €Gð €Hð —J’J˜z¨4Ñ0Ô0€MØð =åÐNÐNÀÐNÑNÔNÑNÔNˆ
ð ð 	J ð 	JØ�OŠO X¸-ÐHÐHÑIÔIÐIð !ð 	Nð 	NˆCØ�OŠO S¨¤[¸SÀ¼^ÐLÐLÑMÔMÐMÐMð	Nð ð 	JØ�OŠO X¸-ÐHÐHÑIÔIÐIØ�Š °FÐ;Ð;Ñ<Ô<Ð<ð ØØ"ØØ ðð €Gð —
’
˜;¨Ñ.Ô.€IØð =Ø&,¨mÐ%<ˆÐ!Ñ"å„HÐ& Ð&Ð&­µ°kÅ4Ä<Ñ(PÔ(PÑQÔQÐQÝ„HÐ* 5Ð*Ð*­GµD¸+ÅtÄ|Ñ,TÔ,TÑUÔUÐUð ØØ"Ø ð	ð €Mð �:Š:Ð'¨Ñ/Ô/ð NÕ8NÈvÐW\Ð^kð  }Kð  [hð  9iñ  9iô  9ið NÝÐLÑMÔMÐMå”‘”€JÝŒ}˜S¨'¸ÈÐMÑMÔM€HÝŒy‰{Œ{€HØ˜Ñ#€GðaØ Ÿš™œˆØ�zŠzÐ+¨UÑ3Ô3ð 	SÝ# F¨E°=È'ÐRÑRÔRÐRøøðaØ�zŠzÐ+¨UÑ3Ô3ð 	aÝ# F¨E°JÀÄÐ3NÐX_Ð`Ñ`Ô`Ð`øøøøøà×ÒÑÔÐØ�=Š=‰?Œ?€Dð �HŠH�W˜bÑ!Ô!€Eð �hŠh�y 2 $Ñ'Ô'¨Ô*×.Ò.¨y¸"Ñ=Ô=×AÒAÀ)ÈRÑPÔP€Gà‡z‚z�- Ñ'Ô'ð -Ø˜˜t WÐ,Ð,à�Eˆ>Ðs   Ë=L Ì2Mc                  ó¸  — t          j        ¦   «         } |                      d¦  «        }|sdS 	 d}d|› �ddœ}t          j        ||d¬¦  «        }|                     ¦   «          d	S # t          j        j        $ rl}|j        j	        d
k    r%t          j        dt          j        ¦  «         Y d}~dS t          j        d|j        j	        › �t          j        ¦  «         Y d}~dS d}~wt          j        j        $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~wt          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)ur   
    OvÄ›Å™Ã­ platnost API klÃ­Ä�e.
    
    Returns:
        bool: True pokud je klÃ­Ä� platnÃ½, False jinak
    r   Fz%https://api.groq.com/openai/v1/modelsr   r    r!   é
   )r8   r:   Ti‘  u<   [wcs][groq_api] validate_api_key: NeplatnÃ½ API klÃ­Ä� (401)Nz-[wcs][groq_api] validate_api_key: HTTP chyba u4   [wcs][groq_api] validate_api_key: SÃ­Å¥ovÃ¡ chyba - u9   [wcs][groq_api] validate_api_key: NeoÄ�ekÃ¡vanÃ¡ chyba - )r   r   r   rM   r'   rP   Ú
exceptionsÚ	HTTPErrorrY   Ústatus_coderG   rH   Ú
LOGWARNINGÚRequestExceptionrK   )r   rR   rS   r8   rY   Úes         r   Úvalidate_api_keyrf   |   s–  € õ ŒOÑÔ€EØ×Ò˜~Ñ.Ô.€Gàð Øˆuðà5ˆà0 wÐ0Ð0Ø.ð
ð 
ˆõ ”< ¨W¸bÐAÑAÔAˆØ×!Ò!Ñ#Ô#Ð#ØˆtøÝÔÔ(ð ð ð ØŒ:Ô! SÒ(Ð(ÝŒHÐSÕUYÔUdÑeÔeÐeØ�5�5�5�5�5åŒHÐ]ÀQÄZÔE[Ð]Ð]Õ_cÔ_nÑoÔoÐoØ�5�5�5�5�5øøøøÝÔÔ/ð ð ð ÝŒÐKÈÐKÐKÍTÌ_Ñ]Ô]Ð]ØˆuˆuˆuˆuˆuøøøøÝð ð ð ÝŒÐPÈQÐPÐPÕRVÔRaÑbÔbÐbØˆuˆuˆuˆuˆuøøøøðøøøs5   ®5A% Á%EÁ9/C Â.,C Ã EÃ7"DÄEÄ,"EÅE)N)ÚosrM   r   rG   r9   rL   Úwcs.ai.DialogAIDebugRequestr   r   r   Úwcs.ai.model_catalogr   r   r   ÚstrÚdictr]   rf   © r   r   ú<module>rm      sÚ   ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mÐ mØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð]ð ]ð ]ðið i˜ð i Cð i¸cÀ4¸[ð ið ið ið iðV#ð #ð #ð #ð #r   