
    hj?                         S r SSKrSSKJrJrJrJrJrJr  SSK	r	SSK
r
SSSSS	.rS
SSSS	.rS rS rSS jr\" SS9S 5       r\" SS9S 5       r\" SS9S 5       r\" SS9S 5       rg)u  
✘ Commands Available -

• `{i}gemini <prompt>`
    Get response from Google Gemini.

• `{i}antr <prompt>`
    Get response from Anthropic Claude.

• `{i}gpt <prompt>`
    Get response from OpenAI GPT.

• `{i}deepseek <prompt>`
    Get response from DeepSeek AI.

Set custom models using:
    • OPENAI_MODEL: default: gpt-4o-mini
    • ANTHROPIC_MODEL: claude-3-opus-20240229
    • GEMINI_MODEL: gemini-1.5-flash
    • DEEPSEEK_MODEL: deepseek-chat
    N   )LOGSeor
get_stringudBultroid_cmdasync_searcherz*https://api.openai.com/v1/chat/completionsz%https://api.anthropic.com/v1/messageszAhttps://generativelanguage.googleapis.com/v1beta/chat/completionsz)https://api.deepseek.com/chat/completionsgptantrgeminideepseekzgpt-4o-minizclaude-3-opus-20240229zgemini-1.5-flashzdeepseek-chatc                 `    SSSSS.n[         R                  " X   5      =(       d	    [        U    $ )z+Get model name from database or use defaultOPENAI_MODELANTHROPIC_MODELGEMINI_MODELDEEPSEEK_MODELr
   )r   get_keyDEFAULT_MODELS)provider
model_keyss     &/root/TeamUltroid/plugins/aiwrapper.py	get_modelr   3   s5     ! $	J ;;z+,Hx0HH    c                    #    SnUR                  5       n/ n/ nU HZ  nUR                  U5        [        SR                  U5      5      S:  d  M4  UR                  SR                  USS 5      5        U/nM\     U(       a   UR                  SR                  U5      5        U HB  nX'S-   -  n U R	                  U5      I Sh  vN   [        R                  " S5      I Sh  vN   MD     U$  N(! [
         a     N2f = f N7f)z"Stream response by editing message  d   Ng      ?)splitappendlenjoinedit	Exceptionasynciosleep)msgtextcurrentwordschunkscurrent_chunkwordchunks           r   stream_responser0   >   s     GJJLEFMT"sxx&'#-MM#((="#567!FM	 
 chh}-.3;	((7### mmC     N	 $ 		 sO   A	C>AC>-C,C*C,C>C< 
C>*C,,
C96C>8C99C>c                  #     SS0n[        U 5      nU S:X  GaA  SU 3US'   USUS./US.nU(       d.  [        [        U    US	US	S
9I Sh  vN nUS   S   S   S   7v   g[        R                  " 5        ISh  vN nUR                  [        U    UUS9 ISh  vN n	U	R                    Sh  vN n
U
(       d  M   [        R                  " U
R                  S5      R                  5       R                  S5      R                  5       5      nSU;   aD  US   (       a8  US   S   R                  S0 5      R                  SS5      nU(       a  U7v   M  M  M  M  U S:X  a  X$S'   SUS'   USUS./US.nU(       d+  [        [        U    US	US	S
9I Sh  vN nUS   S   S   7v   g[        R                  " 5        ISh  vN nUR                  [        U    UUS9 ISh  vN n	U	R                    Sh  vN n
U
(       d  M   [        R                  " U
R                  S5      R                  5       5      nSU;   a  US   S   S   nU(       a  U7v   Me  Mg  Mi  U S:X  GaF  SU 3US'   USSS.SUS./US.nU(       d   [        [        U    US	US	S
9I Sh  vN nSU;   a  US   nUR                  S5      S:X  as  SnUR                  S / 5       H;  nUR                  S!5      S":X  d  M  UR                  S#S$5      R                  S%5      nM=     S&U S'3nS([        U5      ;   a  US)-  nU7v   gS*UR                  SS+5       37v   gUS   S   S   S   7v   g[        R                  " 5        ISh  vN n UR                  [        U    UUS9 ISh  vN n	U	R"                  S:X  a  U	R                  5       I Sh  vN nS,nUR                  S0 5      R                  S / 5       H;  nUR                  S!5      S":X  d  M  UR                  S#S$5      R                  S%5      nM=     S&U S'37v    SSS5      ISh  vN   SSS5      ISh  vN   gU	R"                  S-:w  ab  U	R                  5       I Sh  vN nS*UR                  S0 5      R                  SS+5       37v    SSS5      ISh  vN   SSS5      ISh  vN   gU	R                    Sh  vN n
U
(       d  M  U
R                  S5      R                  5       nUR%                  S.5      (       d  MI  US/S nUS0:X  a    Oc [        R                  " U5      nSU;   aD  US   (       a8  US   S   R                  S0 5      R                  SS5      nU(       a  U7v   M  M  M  M  SSS5      ISh  vN   SSS5      ISh  vN   gU S1:X  Ga$  SU 3US'   USUS./US.nU(       d.  [        [        U    US	US	S
9I Sh  vN nUS   S   S   S   7v   g[        R                  " 5        ISh  vN nUR                  [        U    UUS9 ISh  vN n	U	R                    Sh  vN n
U
(       d  M   [        R                  " U
R                  S5      R                  5       5      nSU;   aD  US   (       a8  US   S   R                  S0 5      R                  SS5      nU(       a  U7v   M  M  M  M  g GN GN\ GN> GN,! [         a     GMA  f = f
 SSS5      ISh  vN    O! , ISh  vN  (       d  f       O= fSSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f GN GN GNp GN^! [         a     GMs  f = f
 SSS5      ISh  vN    O! , ISh  vN  (       d  f       O= fSSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f GN+! [         a1  n[        R                   " U5        S*[        U5       37v    SnAgSnAff = f GN GNq GNL GN GN GN GNi GN\ GNI! [        R&                   a     GMh  f = f
 GN GN! , ISh  vN  (       d  f       GN= f! [         a2  n[        R                   " U5        S*[        U5       37v    SnAGNSnAff = f GN! , ISh  vN  (       d  f       g= f GN GN GN GN{! [         a     GM  f = f
 SSS5      ISh  vN    O! , ISh  vN  (       d  f       O= fSSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f! [         a1  n[        R                   " U5        S*[        U5       37v    SnAgSnAff = f7f)2zGet response from AI providerzContent-Typezapplication/jsonr   zBearer Authorizationuser)rolecontent)modelmessagesstreamT)headerspostjsonre_jsonNchoicesr   messager5   )r9   r;   zutf-8zdata:deltar   r   z	x-api-keyz
2023-06-01zanthropic-versionr)   r   systemzYou are a helpful assistant.errorcodei  detailsz@typez(type.googleapis.com/google.rpc.RetryInfo
retryDelay60ssu0   ⚠️ Rate limit exceeded. Please try again in z	 seconds.	free_tierz5
Consider upgrading to a paid tier for higher quotas.zError: zUnknown error occurred60   zdata:    z[DONE]r   )r   r	   	ENDPOINTSaiohttpClientSessionr:   r5   r;   loadsdecodestripgetr%   rstripstrr   	exceptionstatus
startswithJSONDecodeError)r   promptapi_keyr8   r9   r6   dataresponsesessionrespline	json_liner5   rA   retry_delaydetail	error_msge
error_datar)   	json_datas                        r   get_ai_responserf   X   sH	    @!!#56(#u)0	':GO$&,@A D
 !/h'# "  y)!,Y7	BB,,..'"<<h'# (   &*ll 	)d4),0JJt{{77K7Q7Q7S7Y7YZa7b7h7h7j,k	#,	#9i	>R.7	.B1.E.I.I'SU.V.Z.Z[dfh.iG'..5 (/ ?S#9 #*K +7G'(&,@A D
 !/h'# "  y)!,V44,,..'"<<h'# (   &*ll 	)d4),0JJt{{77K7Q7Q7S,T	#,	#9.7	.B1.Ef.MG'..5 (/ $: !)0	':GO$%2PQ#7 !D -%3!(+ '!! $&  H (* ( 1 99V,3*.K*/))Ir*B#)::g#6:d#d28**\52Q2X2XY\2]K +C +[[fZggp(qI*c%j8 )-e e	"+O" '		)=U(V'WXX"9-a0;IFF ,,..'%-&||!(+ '!  ,     ;;#-/3yy{):J*.K*4.."*E*I*I)UW*X#)::g#6:d#d28**\52Q2X2XY\2]K +Y %UU`Taaj"kk"    /..   ;;#-/3yy{):J$+JNN7B,G,K,KIWo,p+q"rr"#    /..* +/,, 1$#t'+{{7';'A'A'C#'??8#<#<+/8D'+x'7(-%148JJt4D	+4	+AiPYFZ6?	6J16M6Q6QRY[]6^6b6bclnp6qG/66= 07 G[+A9    /..P #)0	':GO$&,@A D
 !/h'# "  y)!,Y7	BB,,..'"<<h'# (   &*ll 	)d4),0JJt{{77K7Q7Q7S,T	#,	#9i	>R.7	.B1.E.I.I'SU.V.Z.Z[dfh.iG'..5 (/ ?S#99 $_ /
	) $- ) () '3      /.....4 /
	) $- ) () '3      /.....< , ! -NN1%#CF8,,-
 /  *;  /" *;  /*1 ,0+?+? %1(0%1 +7'       D ! -NN1%#CF8,,,-I /...` /
	) $- ) () '3      /....."  !qAx   !s?  e+Ad- 
[d-  e+!d- :[;d- >\0[\0\,[10[
1[14\?B[\7d- ]
d- %e+&d- ?] d- ^' ]!^'$];1](5]
6](9];A]];$d- ?_ _A_ )A_ -e+._ e+_ e+d- 2`3d- 6b8a`a$`?<`=>`??/`?.a9`:a>d- 	`
d- e+#`?2`3-`? a+`,a0d- ;`<d-  e+`?`9`
`9`?3`?`?$A`>`?a`<ad- !b"d- &e+'7d- b6d- 4e+5d- b9d- d/b<0d3c' cb?
cc'A7c
c'e+d- d- \0[1
[.	)\-[.	.\2\0=\ >\0\	
\\	\0d- )\,*d- /e+0]6\97]d- e+d- d- ^'](
]%	 ];$]%	%];)^'4]75^';^	^^	^'d-  ^#!d- &e+'^>-^0.^>:d- =e+>d- _ 
_?'_:5d- 9e+:_??d- a`?ad- `?ad- `9`6	1`?5`6	6`?<a?a	aa	aba
b$'bbbbd- b3"b%#b3/d- 2e+3d- 9d- <d?c
c	c'c	c'd c#!d'c>	-c0.c>	:dd- dd- e+d*dd*&d- )e+*d- -
e(7'e#e+#e((e+zgemini( (.*)|$))patternc                 &  #    U R                   R                  S5      R                  5       nU(       d  U R                  S5      I Sh  vN $ [        R
                  " S5      nU(       d  U R                  S5      I Sh  vN $ U R                  S5      I Sh  vN n[        S5      nSU S	U S
3nU R                  R                  R                  (       aQ  UR                  U5      I Sh  vN   Sn[        SXSS9  Sh  vN nXg-  n UR                  XV-   5      I Sh  vN   M+  Sn[        SXSS9  Sh  vN nXg-  nM   N N N N^ NJ N,! [         a     M`  f = f
 g N)
  UR                  XV-   5      I Sh  vN    g! [         a     gf = f7f)zUse Google Geminir      ❌ Please provide a prompt!NGEMINI_API_KEYuJ   ⚠️ Please set Gemini API key using `setdb GEMINI_API_KEY your_api_key`   🤔 Thinking...r   u#   🤖 **Google Gemini**
**Model:** `3   `
➖➖➖➖➖➖➖➖➖➖

**🔍 Prompt:**
   

**💡 Response:**
r   Tr8   pattern_matchgrouprP   r   r   r   r   clientmebotr$   rf   r%   eventrX   rY   r(   r6   headerr[   r/   s           r   	gemini_airx     s       &&q)//1FYY=>>>kk*+GYYklll		,-
-ChE	g #H %	  ||hhv*8VTR 	%Hhhv0111 *8VTR 	%H; ? m
- 		 2 	 S	R	hhv0111 		   AFE5F=E>FEAF(E)F:E>E	?EFEEE#F2E"6E 7E":FFFF	EE
EFEF E""F$F :E=;F  F
FFFFzantr( (.*)|$)c                 &  #    U R                   R                  S5      R                  5       nU(       d  U R                  S5      I Sh  vN $ [        R
                  " S5      nU(       d  U R                  S5      I Sh  vN $ U R                  S5      I Sh  vN n[        S5      nSU S	U S
3nU R                  R                  R                  (       aQ  UR                  U5      I Sh  vN   Sn[        SXSS9  Sh  vN nXg-  n UR                  XV-   5      I Sh  vN   M+  Sn[        SXSS9  Sh  vN nXg-  nM   N N N N^ NJ N,! [         a     M`  f = f
 g N)
  UR                  XV-   5      I Sh  vN    g! [         a     gf = f7f)zUse Anthropic Clauder   ri   NANTHROPIC_KEYuL   ⚠️ Please set Anthropic API key using `setdb ANTHROPIC_KEY your_api_key`rk   r   u&   🧠 **Anthropic Claude**
**Model:** `rl   rm   r   Trn   ro   rv   rX   rY   r(   r6   formatted_responser[   r/   s           r   anthropic_air~   E  s       &&q)//1FYY=>>>kk/*GYYmnnn		,-
-CfE	g #H %	   ||hh)****664P 	%Hhh1<=== *664P 	%H; ? o
- 	+	 > 	 Q	P	((-8999 		ry   zgpt( (.*)|$)c                 &  #    U R                   R                  S5      R                  5       nU(       d  U R                  S5      I Sh  vN $ [        R
                  " S5      nU(       d  U R                  S5      I Sh  vN $ U R                  S5      I Sh  vN n[        S5      nSU S	U S
3nU R                  R                  R                  (       aQ  UR                  U5      I Sh  vN   Sn[        SXSS9  Sh  vN nXg-  n UR                  XV-   5      I Sh  vN   M+  Sn[        SXSS9  Sh  vN nXg-  nM   N N N N^ NJ N,! [         a     M`  f = f
 g N)
  UR                  XV-   5      I Sh  vN    g! [         a     gf = f7f)zUse OpenAI GPTr   ri   NOPENAI_API_KEYuG   ⚠️ Please set GPT API key using `setdb OPENAI_API_KEY your_api_key`rk   r   u    🌟 **OpenAI GPT**
**Model:** `rl   rm   r   Trn   ro   ru   s           r   	openai_air   m  s       &&q)//1FYY=>>>kk*+GYYhiii		,-
-CeE	g #H %	  ||hhv*5&$O 	%Hhhv0111 *5&$O 	%H; ? j
- 		 2 	 P	O	((6,--- 		ry   zdeepseek( (.*)|$)c                 &  #    U R                   R                  S5      R                  5       nU(       d  U R                  S5      I Sh  vN $ [        R
                  " S5      nU(       d  U R                  S5      I Sh  vN $ U R                  S5      I Sh  vN n[        S5      nSU S	U S
3nU R                  R                  R                  (       aQ  UR                  U5      I Sh  vN   Sn[        SXSS9  Sh  vN nXg-  n UR                  XV-   5      I Sh  vN   M+  Sn[        SXSS9  Sh  vN nXg-  nM   N N N N^ NJ N,! [         a     M`  f = f
 g N)
  UR                  XV-   5      I Sh  vN    g! [         a     gf = f7f)zUse DeepSeek AIr   ri   NDEEPSEEK_API_KEYuN   ⚠️ Please set DeepSeek API key using `setdb DEEPSEEK_API_KEY your_api_key`rk   r   u!   🤖 **DeepSeek AI**
**Model:** `rl   rm   r   Trn   ro   r|   s           r   deepseek_air     s       &&q)//1FYY=>>>kk,-GYYoppp		,-
-Cj!E	g #H %	   ||hh)****:vtT 	%Hhh1<=== *:vtT 	%H; ? q
- 	+	 > 	 U	T	((-8999 		ry   )F)__doc__r;   r   r   r   r   r   r   r	   rL   r&   rK   r   r   r0   rf   rx   r~   r   r    r   r   <module>r      s   ,  E E   83Q;		 $ 	I4B!J &'% (%N _%% &%N ^$% %%N ()& *&r   