
    \j<                     .   d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ erd dlmZmZmZmZ d dl m!Z! 	 d dl"Z# G d de      Z%ddZ&ddde'ddfdZ(y# e$$ r	  ed      w xY w)    Nwraps)TYPE_CHECKING)record_token_usage)_set_span_data_attributeset_data_normalized)OPSPANDATA)DidNotEnableIntegration)should_send_default_pii)StreamedSpan)has_span_streaming_enabled)capture_internal_exceptionsevent_from_exceptionreraise)AnyCallableIterableUnion)SpanzHuggingface not installedc                   D    e Zd ZdZde Z	 d	dd deddfdZed
d       Zy)HuggingfaceHubIntegrationhuggingface_hubzauto.ai.selfinclude_promptsreturnNc                     || _         y N)r   )r   r   s     Q/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/huggingface_hub.py__init__z"HuggingfaceHubIntegration.__init__#   s      /    c                     t        t        j                  j                  j                  j
                  t        j                        t        j                  j                  j                  _        t        t        j                  j                  j                  j                  t        j                        t        j                  j                  j                  _        y r   )
_wrap_huggingface_taskr   	inference_clientInferenceClienttext_generationr	   GEN_AI_TEXT_COMPLETIONchat_completionGEN_AI_CHAT r"   r    
setup_oncez$HuggingfaceHubIntegration.setup_once(   s     #))11AAQQ)) 	!!))99I #))11AAQQ 	!!))99Ir"   )T)r   N)	__name__
__module____qualname__
identifieroriginboolr!   staticmethodr-   r,   r"   r    r   r      sK    "J
|$F DH/)/<@/	/
 
 
r"   r   r   c                     t        | t        j                         j                  ddd      \  }}t        j                  ||       y )Nr   F)typehandled)client_options	mechanism)hint)r   
sentry_sdk
get_clientoptionscapture_event)exceventr:   s      r    _capture_exceptionrA   9   s?    &!,,.66,?KE4
 U.r"   fzCallable[..., Any]opc                 4     t               d fd       }|S )Nc            	      v   t        j                         j                  t               | i |S d }d|v r|d   }nCd|v r|d   }n9t	        |       dk\  r+t        | d   t              st        | d   t              r| d   }| | i |S | d   }|j                  xs |j                  d      xs d}j                  d      d	   }t        t        j                         j                        r8t         j                  j                  | d
| t        j                  d      n+t        j                  | d
| t        j                        j!                          t#        t$        j&                  |       |rt#        t$        j(                  |       t+               r)j,                  rt/        t$        j0                  |d       t$        j2                  t$        j4                  t$        j6                  t$        j8                  t$        j:                  t$        j<                  t$        j>                  t$        j@                  d}|jC                         D ]W  \  }}|j                  |d       }	|	t        |	tD        tF        tH        t        f      rt#        ||	       It/        ||	d       Y 	  | i |d }d }g }d}d }d }tQ               5  t        t              r|jY                         t[        d      r'j\                  |jY                  j\                         t[        d      rj                  j                  }t[        d      r,t[        j^                  d      rj^                  j`                  }t[        d      rBt[        j^                  d      r,j^                  jb                  j^                  jb                  }t[        d      rjd                  jd                  }t[        d      r͉jf                  jf                  D ]  }t[        |d      r|j`                  }t[        |d      r,t[        |jh                  d      r|jh                  jj                  }t[        |d      s`t[        |jh                  d      sw|jh                  jl                  |jY                  |jh                  jl                          |t#        t$        jn                  |       |t/        t$        jp                  |       t+               ruj,                  ri|+t	        |      dkD  rt/        t$        jr                  |d       t	        |      dkD  r.dju                  |      }|rt/        t$        jv                  |       |.ty        |jz                  |j|                  |j~                         n|dkD  rty        |       t        j                        sjU                  d d d        cd d d        S |j                  dd      rdfd} |       cd d d        S dfd} |       cd d d        S # tJ        $ ra}
tM        jN                         }tQ               5  tS        |
        jT                  |  d d d        n# 1 sw Y   nxY wtW        |  Y d }
~
d }
~
ww xY w# 1 sw Y   y xY w) Npromptmessages      r   model . )z	sentry.opzsentry.origin)name
attributes)rC   rO   r2   Funpack)toolsfrequency_penalty
max_tokenspresence_penaltytemperaturetop_ptop_kstreamgenerated_textdetailsfinish_reasongenerated_tokensusagechoicesmessage
tool_callscontentinput_tokensoutput_tokenstotal_tokensrg   c               3   \  K   d } g }d}t               5  D ]  }t        |d      rQt        |j                  d      r;|j                  j                  %|j	                  |j                  j                         t        |d      r,t        |j
                  d      r|j
                  j                  } t        |d      rBt        |j
                  d      r,|j
                  j                  |j
                  j                  }|  | t        t        j                  |        t               rHj                  r<t        |      dkD  r.dj                  |      }|rt        t        j                  |       |dkD  rt!        |       d d d        j#                  d d d        y # 1 sw Y   xY ww)	Nr   tokentextr\   r]   r^   rK   rh   )r   hasattrrj   rk   appendr\   r]   r^   r   r
   GEN_AI_RESPONSE_FINISH_REASONSr   r   lenjoinGEN_AI_RESPONSE_TEXTr   __exit__)r]   response_text_buffertokens_usedchunktext_responseintegrationresspans        r    new_details_iteratorzR_wrap_huggingface_task.<locals>.new_huggingface_task.<locals>.new_details_iterator   s|    $(M8:("#K46 ,%( (E 'w 7$+EKK$@$)KK$4$4$@ 4 ; ;EKK<L<L M&ui8W %> 160K0K !(y 9$+EMM;M$N$)MM$B$B$N.3mm.L.L"'K)(, )4/ $ ( G G - 349T9T"#781<028L0M#0$7(,(0(E(E(5%& '?. $-8S,\ MM$d3], ,s   F,E0F F, F)%F,c               3   <  K   d } d }g }d }d }t               5  	D ]m  }t        |d      r|j                  |j                  }t        |d      r|j                  |j                  }t	        |t
              r||j                  |       t        |d      r|j                  |j                  D ]  }t        |d      rQt        |j                  d      r;|j                  j                  %|j                  |j                  j                         t        |d      r|j                  |j                  } t        |d      st        |j                  d      s|j                  j                  |j                  j                  } | p |t        
t        j                  |       | t        
t        j                   |        t#               ruj$                  ri|+t'        |      dkD  rt        
t        j(                  |d	
       t'        |      dkD  r.dj+                  |      }|rt        
t        j,                  |       |-t/        
|j0                  |j2                  |j4                         
j7                  d d d        d d d        y # 1 sw Y   y xY ww)NrJ   r_   r`   deltarc   r]   rb   r   FrQ   rK   rd   )r   rl   rJ   r_   
isinstancestrrm   r`   r|   rc   r]   rb   r   r
   GEN_AI_RESPONSE_MODELr   rn   r   r   ro   GEN_AI_RESPONSE_TOOL_CALLSrp   rq   r   prompt_tokenscompletion_tokensrg   rr   )r]   response_modelrs   rb   r_   ru   choicerv   rw   rx   ry   s           r    new_iteratorzJ_wrap_huggingface_task.<locals>.new_huggingface_task.<locals>.new_iterator-  se    $(M%)N8:(!%J E46 L8%( #(E&ug65;;;R16&ug65;;;R(-)%5#(#4$8$?$?$F&ui8U]]=V.3mm !MF(/(@,3FLL),L,2LL,@,@,L(<(C(C,2LL,@,@)*
 )0(H,2,@,@,L8>8L8L )0(@,3FLL,,O,2LL,C,C,O5;\\5L5L
+!M. #(KG#(J *54 $h&D&Dn )4/ $ ( G G - 349T9T)5#j/A:M 3$($,$G$G$.+0	!"  ##781<028L0M#0$7(,(0(E(E(5%& !,. $-2-@-@.3.E.E-2-?-?	 dD$7YL8 L8 L8s0   JD&J?JJ-DJ	JJJ)r   zIterable[Any])r   zIterable[str])Br;   r<   get_integrationr   ro   r}   r~   listrJ   getsplitr   r=   traces
start_spanr2   	__enter__r   r
   GEN_AI_OPERATION_NAMEGEN_AI_REQUEST_MODELr   r   r   GEN_AI_REQUEST_MESSAGESGEN_AI_REQUEST_AVAILABLE_TOOLS GEN_AI_REQUEST_FREQUENCY_PENALTYGEN_AI_REQUEST_MAX_TOKENSGEN_AI_REQUEST_PRESENCE_PENALTYGEN_AI_REQUEST_TEMPERATUREGEN_AI_REQUEST_TOP_PGEN_AI_REQUEST_TOP_KGEN_AI_RESPONSE_STREAMINGitemsintfloatr3   	Exceptionsysexc_infor   rA   rr   r   rm   rl   r[   r\   r]   r^   r_   r`   ra   rb   rc   r   rn   r   rp   rq   r   r   r   rg   inspectisgenerator)argskwargsrF   clientrJ   operation_nameattribute_mapping	attributespan_attributevalueer   r]   r   rs   rt   rb   r_   r   rv   rz   r   rw   rx   ry   rB   rC   s                         @@@r    new_huggingface_taskz4_wrap_huggingface_task.<locals>.new_huggingface_taskC   s    ++-==>WXd%f%%vH%F6!J'FY!^$q'3':d1gt+Da>d%f%%a9

7 39r#r* &j&;&;&=&E&EF$$//&'q0!#%>%E%E 0 D ((&'q0077D
 	 x'E'E~V$T8+H+H%P #$)D)Dh66u
 <<!)!J!J"<< ( H H#>>222288	
 *;)@)@)B 	S%I~JJy$/E ec5$%<=,T>5I'neER	S	T$V$C ,.
(* g	&#s#$++C0s,-#2D2D2P$++C,>,>?sG$)>!$sI&73;;+P # 9 9 Y'CKK);<KK00<!kk::sG$)>		sI&3;;+B!kk LFv7(.(<(<vy1g7 &,^^%>%>
	2#FNNI>"NN22>,33FNN4J4JKL )((88. (#;;! '([-H-H)c*o.A' ;;"$	 +,q0$&GG,@$AM$+ $99)  "!&!4!4"'"9"9!&!3!3	 q"!, &&s+dD$/kg	& g	&n zz)U+34j ,-]g	& g	&dS8j $~Og	& g	&  	||~H,. )"1%x() ) ) X	g	& g	&s\   6Y F(Z/=Z/Z/+EZ/  Z/*Z/	Z,Z')Z	Z'Z	Z''Z,/Z8)r   r   r   r   r   r   r   )rB   rC   r   s   `` r    r$   r$   B   s$    
1X~& ~&@
  r"   )r?   r   r   N))r   r   	functoolsr   typingr   r;   sentry_sdk.ai.monitoringr   sentry_sdk.ai.utilsr   r   sentry_sdk.constsr	   r
   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.tracesr   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   r   r   r   r   r   sentry_sdk.tracingr   !huggingface_hub.inference._clientr   ImportErrorr   rA   r~   r$   r,   r"   r    <module>r      s     
     7 M * = 4 * ?  55'4,

 
4/B 2 B  B @T B O  4
2
334s   (B B