
    љi                     j    S SK Jr  S SKrS SKJrJrJr  S SKrSSKJ	r	J
r
  \" \5      r " S S\	5      rg)    )	getLoggerN)AsyncGeneratorDictList   )
LLMServiceLLMResponsec                   T  ^  \ rS rSrSSSSSSSSSSSSS	S
.S\S\S\S\S\S\\   S\\   S\S\S\S\S\S\	4U 4S jjjr
S\4S jr\S\4S j5       rS'S\S\S\S\\\\4      S \\\4   S\\   4S! jjrS\S\S"\\   S#\4S$ jrS(S\S\S"\\   S \\\4   S\\S4   4
S% jjrS&rU =r$ ))DifyService
   Nzhttp://127.0.0.1F2   Td      g      $@)api_keyuserbase_urlis_agent_modemake_inputssplit_charsoption_split_charsoption_split_thresholdsplit_on_control_tagsvoice_text_tagmax_connectionsmax_keepalive_connectionstimeoutr   r   r   r   r   r   r   r   r   r   r   r   r   c                   > [         TU ]  S S SUUUU	U
S9  0 U l        Xl        X l        X0l        X@l        XPl        [        R                  " S[        R                  " U5      [        R                  " UUS9S9U l        g )Ng        )system_promptmodeltemperaturer   r   r   r   r   F)r   r   )follow_redirectsr   limits)super__init__conversation_idsr   r   r   r   r   httpxAsyncClientTimeoutLimitshttp_client)selfr   r   r   r   r   r   r   r   r   r   r   r   r   	__class__s                 O/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/sts/llm/dify.pyr$   DifyService.__init__   s    " 	#1#9"7) 	 		
 13	 *& ,,"MM'*<< /*C
    returnc           	          U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  S.$ )Nr   r   r   r   r   r   r   r   r2   r+   s    r-   
get_configDifyService.get_config5   sP    II!//++"&"9"9&*&A&A%)%?%?"11	
 		
r/   c                     g N r3   s    r-   dynamic_tool_nameDifyService.dynamic_tool_nameA   s    r/   
context_iduser_idtextfilessystem_prompt_paramsc           	      <  #    U R                   (       a  U R                  XXE5      nO0 nUUSU R                  SU R                  R                  US5      S.nU(       a<  U H2  nUR                  S5      =n	(       d  M  UR	                  SSU	S.5        M4     XGS	'   U/$ 7f)
N	streamingF )inputsqueryresponse_moder   auto_generate_nameconversation_idurlimage
remote_url)typetransfer_methodrH   r>   )r   r   r%   getappend)
r+   r;   r<   r=   r>   r?   rC   messagefrH   s
             r-   compose_messagesDifyService.compose_messagesE   s     %%jTFF (II"'#4488RH
 %%,&3&LL'l[^!_`   %Gys   A6B< Bmessagesresponse_textc                    #    g 7fr7   r8   )r+   r;   r<   rS   rT   s        r-   update_contextDifyService.update_context[   s     s   c                  #    SSU R                    30nU(       a  X#S   S'   U R                  R                  U R                  S-   UUS   S9I S h  vN nUR	                  5         U R
                  (       a  SOSnUR                  5         S h  vN nUR                  S	5      (       d  M!  [        R                  " US
S  5      n	U	S   U:X  a  U	S   n
[        XS97v   MV  U	S   S:X  d  Ma  U	S   U R                  U'   Mu   N Nr
 g 7f)NAuthorizationzBearer r   r   z/chat-messages)headersjsonagent_messagerO   zdata:   eventanswer)r;   r=   message_endrG   )r   r*   postr   raise_for_statusr   aiter_lines
startswithr[   loadsr	   r%   )r+   r;   r<   rS   r?   rZ   stream_respmessage_event_valuechunk
chunk_jsonr_   s              r-   get_llm_stream_response#DifyService.get_llm_stream_response`   s    wt||n5
 ")QK ,,11MM,,! 2 
 

 	$$&151C1Co&224 	V%((!ZZab	2
g&*=='1F%II(M98BCT8UD))*5!
	V4sB   ADC?9D
DDDD+<D+DDD)r   r   r%   r*   r   r   r   )NNr7   )__name__
__module____qualname____firstlineno__strboolcallabler   intfloatr$   dictr4   propertyr9   r   anyrQ   rV   r   r	   rj   __static_attributes____classcell__)r,   s   @r-   r   r   
   s    *# $!%(,&(&*"")+(
 (
 	(

 (
 (
 (
 #Y(
 !I(
 !$(
  $(
 (
 (
 $'(
 (
 (
T

D 

 3   s # VZ[_`ceh`h[iVj   JN  OR  TW  OW  JX   dh  im  dn ,s S DQUJ gj 
V Vc VUYZ^U_ Vw{|  BE  }E  xF V  R`  al  nr  ar  Rs V Vr/   r   )loggingr   r[   typingr   r   r   r&   rB   r   r	   rl   loggerr   r8   r/   r-   <module>r}      s1      - -  %	8	mV* mVr/   