Ë
    µŒj£,  ã                   óh  — d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ dZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"eeegZ#edgdz  edgdz  edgdz  e!dgdz  e"dgdz  edgdz  edgdz  ed egdz  ed egdz  ed egdz  e degdz  iZ$d efd!„Z% G d"„ d#e	«      Z&y)$é    N)ÚAnyÚDictÚListÚOptional)ÚUUID)ÚBaseCallbackHandler)Ú	LLMResult©Úguard_import)Úimport_pandasÚtoken_usageÚtotal_tokensÚprompt_tokensÚcompletion_tokensÚrun_idÚ
model_nameÚgoodÚbadÚneutralÚsuccessÚfailurei   iÀÔ ÚpromptÚresponseÚcontextÚdurationÚfeedbackÚ
llm_statusÚfiddleré
   z$123e4567-e89b-12d3-a456-426614174000é   é   Úreturnc                  ó   — t        dd¬«      S )zLImport the fiddler python package and raise an error if it is not installed.r   zfiddler-client)Úpip_namer
   © ó    úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/callbacks/fiddler_callback.pyÚimport_fiddlerr(   8   s   € ä˜	Ð,<Ô=Ð=r&   c                   óä   ‡ — e Zd Zdedededededdfˆ fd„Zedefd	„«       Z	 	 dd
ede	e   de
dedee   deeeef      ddfd„Zdeeef   de	e   dedefd„Zdededdfd„Zdededdfd„Zˆ xZS )ÚFiddlerCallbackHandlerÚurlÚorgÚprojectÚmodelÚapi_keyr"   Nc                 ó 	  •— t         ‰
| �  «        t        «       | _        t	        «       | _        || _        || _        || _        || _	        || _
        | j
                  j                  t        «      | _        i | _        i | _        i | _        | j                  j#                  |||¬«      | _        | j                  | j$                  j'                  «       vr?t)        d| j                  › d�«       	 | j$                  j+                  | j                  «       | j                  j.                  j1                  | j                  d¬«      }t3        t5        |j6                  «      «      D ]Þ  }|j6                  |   j8                  t:        k(  rK| j                  j<                  j>                  |j6                  |   _         tB        |j6                  |   _"        Œn|j6                  |   j8                  tF        k(  sŒ�| j                  j<                  j>                  |j6                  |   _         tH        tJ        g|j6                  |   _"        Œà | j                  | j$                  jM                  | j                  «      v�r�| j                  | j$                  jO                  | j                  «      vrft)        d	| j                  › d
| j                  › d�«       	 | j$                  jQ                  | j                  | j                  d| j                  i|¬«       | j                  jR                  jU                  |d| j                  jV                  jX                  tZ        t\        t^        gt:        t`        tb        td        tf        th        tj        g| jl                  ¬«      }	t)        d| j                  › d
| j                  › d�«       	 | j$                  jo                  | j                  | j                  | j                  |	¬«       yy# t,        $ r }t)        d| j                  › d�«       |‚d}~ww xY w# t,        $ r#}t)        d| j                  › d|› d�«       |‚d}~ww xY w# t,        $ r#}t)        d| j                  › d|› d�«       |‚d}~ww xY w)a—  
        Initialize Fiddler callback handler.

        Args:
            url: Fiddler URL (e.g. https://demo.fiddler.ai).
                Make sure to include the protocol (http/https).
            org: Fiddler organization id
            project: Fiddler project name to publish events to
            model: Fiddler model name to publish events to
            api_key: Fiddler authentication token
        )Úorg_idÚ
auth_tokenzadding project z.This only has to be done once.zError adding project z(:{e}. Fiddler integration will not work.Nr   )Úmax_inferred_cardinalityzadding dataset z to project Útrain)Ú
project_idÚ
dataset_idÚdatasetÚinfozError adding dataset z: z#.Fiddler integration will not work.)Údataset_infor6   Ú
model_taskÚfeaturesÚtargetÚmetadata_colsÚcustom_featureszadding model )r5   r6   Úmodel_idÚ
model_infozError adding model )8ÚsuperÚ__init__r(   Úfdlr   Úpdr+   r,   r-   r.   r/   Ú	DataFrameÚ_dataset_dictÚ_dfÚrun_id_promptsÚrun_id_responseÚrun_id_starttimeÚ
FiddlerApiÚfiddler_clientÚget_project_namesÚprintÚadd_projectÚ	ExceptionÚDatasetInfoÚfrom_dataframeÚrangeÚlenÚcolumnsÚnameÚFEEDBACKÚDataTypeÚCATEGORYÚ	data_typeÚFEEDBACK_POSSIBLE_VALUESÚpossible_valuesÚ
LLM_STATUSÚSUCCESSÚFAILUREÚget_model_namesÚget_dataset_namesÚupload_datasetÚ	ModelInfoÚfrom_dataset_infoÚ	ModelTaskÚLLMÚPROMPTÚCONTEXTÚRESPONSEÚRUN_IDÚTOTAL_TOKENSÚPROMPT_TOKENSÚCOMPLETION_TOKENSÚ
MODEL_NAMEÚDURATIONr>   Ú	add_model)Úselfr+   r,   r-   r.   r/   Úer9   Úir@   Ú	__class__s             €r'   rB   zFiddlerCallbackHandler.__init__?   sô  ø€ ô& 	‰ÑÔä!Ó#ˆŒÜ“/ˆŒàˆŒØˆŒØˆŒØˆŒ
ØˆŒØ—7‘7×$Ñ$¤]Ó3ˆŒà57ˆÔØ68ˆÔØ13ˆÔð #Ÿh™h×1Ñ1°#¸cÈgÐ1ÓVˆÔà�<‰<˜t×2Ñ2×DÑDÓFÑFÜØ! $§,¡, Ð/NÐOôðØ×#Ñ#×/Ñ/°·±Ô=ð —x‘x×+Ñ+×:Ñ:Ø�H‰H¨qð ;ó 
ˆô
 ”s˜<×/Ñ/Ó0Ö1ˆAØ×#Ñ# AÑ&×+Ñ+¬xÒ7Ø48·H±H×4EÑ4E×4NÑ4N�×$Ñ$ QÑ'Ô1Ü:R�×$Ñ$ QÑ'Õ7à×%Ñ% aÑ(×-Ñ-´Ó;Ø48·H±H×4EÑ4E×4NÑ4N�×$Ñ$ QÑ'Ô1Ü;BÄGÐ:L�×$Ñ$ QÑ'Õ7ð 2ð �:‰:˜T×0Ñ0×@Ñ@ÀÇÁÓNÒNØ�z‰z ×!4Ñ!4×!FÑ!FÀtÇ|Á|Ó!TÑTÜØ% d§j¡j \°¸d¿l¹l¸^ð L5ð 5ôðØ×'Ñ'×6Ñ6Ø#'§<¡<Ø#'§:¡:Ø!(¨$¯(©(Ð 3Ø)ð	 7ô ð Ÿ™×+Ñ+×=Ñ=Ø)Ø"ØŸ8™8×-Ñ-×1Ñ1Ü ¤'¬8Ð4ÜäÜ Ü!Ü%ÜÜðð !%× 4Ñ 4ð >ó ˆJô  Ø §
¡
˜|¨<¸¿¹°~ð F1ð 1ôðØ×#Ñ#×-Ñ-Ø#Ÿ|™|Ø#Ÿz™zØ!ŸZ™ZØ)ð	 .õ ðS Oøô+ ò ÜØ+¨D¯L©L¨>ð :>ð >ôð �ûðûôD !ò ÜØ/°·
±
¨|¸2¸a¸Sð A=ð =ôð �GûðûôD ò ÜØ)¨$¯*©*¨°R¸°sð ;9ð 9ôð �ûðúsH   Ã-%O6 Ë?P" Î7=Q Ï6	PÏ?PÐPÐ"	QÐ+Q	Ñ	QÑ	Q=ÑQ8Ñ8Q=c                 ó  — | j                   j                  ddt        g¬«      | j                   j                  dt        d¬«      | j                   j                  ddt        g¬«      | j                   j                  dt        d¬«      | j                   j                  dd	t        t        gd
g d¢i¬«      | j                   j                  ddt        t        g¬«      | j                   j                  ddt        t        g¬«      gS )a[  
        Define custom features for the model to automatically enrich the data with.
        Here, we enable the following enrichments:
        - Automatic Embedding generation for prompt and response
        - Text Statistics such as:
            - Automated Readability Index
            - Coleman Liau Index
            - Dale Chall Readability Score
            - Difficult Words
            - Flesch Reading Ease
            - Flesch Kincaid Grade
            - Gunning Fog
            - Linsear Write Formula
        - PII - Personal Identifiable Information
        - Sentiment Analysis

        zPrompt EmbeddingÚ	embedding)rV   Ú
enrichmentrU   z	Prompt CF)rV   Úsource_columnÚcolumnzResponse EmbeddingzResponse CFzText StatisticsÚtextstatÚ
statistics)Úautomated_readability_indexÚcoleman_liau_indexÚdale_chall_readability_scoreÚdifficult_wordsÚflesch_reading_easeÚflesch_kincaid_gradeÚgunning_fogÚlinsear_write_formula)rV   rw   rU   ÚconfigÚPIIÚpiiÚ	SentimentÚ	sentiment)rC   Ú
Enrichmentrg   ÚTextEmbeddingri   )rq   s    r'   r>   z&FiddlerCallbackHandler.custom_features¶   s  € ð* �H‰H×ÑØ'Ø&Ü˜ð  ó ð
 �H‰H×"Ñ"Ø Ü$Ø)ð #ó ð
 �H‰H×ÑØ)Ø&Ü!˜
ð  ó ð
 �H‰H×"Ñ"Ø"Ü&Ø+ð #ó ð
 �H‰H×ÑØ&Ø%Ü¤Ð*à ò 	#ðð	  ó ð" �H‰H×ÑØØ Ü¤Ð*ð  ó ð
 �H‰H×ÑØ Ø&Ü¤Ð*ð  ó ðW0
ð 0	
r&   r   Úprompt_responsesr   r   r   Útoken_usage_dictc                 óÊ  — t        | j                  |   «      }| j                  j                  t        | j                  |   t
        |t        t        |«      g|z  t        |g|z  t        |g|z  t        |g|z  i«      }|r3|j                  «       D ]   \  }	}
t        |
t        «      r|
g|z  n|
||	<   Œ" 	 |j                  d   dkD  r2| j                  j!                  | j"                  | j$                  |«       y|j'                  d¬«      }| j                  j)                  | j"                  | j$                  |d   ¬«       y# t*        $ r}t-        d|› d�«       Y d}~yd}~ww xY w)	z+
        Publish events to fiddler
        r   r!   Úrecords)Úorient)Úeventz$Error publishing events to fiddler: z. continuing...N)rT   rH   rD   rE   rg   ri   rj   Ústrro   r]   rn   ÚitemsÚ
isinstanceÚintÚshaperL   Úpublish_events_batchr-   r.   Úto_dictÚpublish_eventrP   rN   )rq   r   r‹   r   r   r   rŒ   Úprompt_countÚdfÚkeyÚvalueÚdf_dictrr   s                r'   Ú_publish_eventsz&FiddlerCallbackHandler._publish_eventsü   sP  € ô ˜4×.Ñ.¨vÑ6Ó7ˆØ�W‰W×Ñä˜×+Ñ+¨FÑ3ÜÐ*Üœ˜V›˜¨Ñ4Ü˜8˜* |Ñ3Ü˜Z˜L¨<Ñ7Ü˜Z˜L¨<Ñ7ðó	
ˆñ Ø.×4Ñ4Ö6‘
��UÜ4>¸uÄcÔ4J˜5˜' LÒ0ÐPU��3’ð 7ð	Ø�x‰x˜‰{˜QŠØ×#Ñ#×8Ñ8¸¿¹ÀtÇzÁzÐSUÕVàŸ*™*¨I˜*Ó6�Ø×#Ñ#×1Ñ1Ø—L‘L $§*¡*°G¸A±Jð 2õ øô ò 	ÜØ6°q°c¸ÐI÷ñ ûð	ús    Â4AE  Ã8AE  Å 	E"Å	EÅE"Ú
serializedÚpromptsÚkwargsc                 óŽ   — |t            }|| j                  |<   t        t        j                  «       dz  «      | j                  |<   y )Néè  )rj   rH   r”   ÚtimerJ   )rq   rŸ   r    r¡   r   s        r'   Úon_llm_startz#FiddlerCallbackHandler.on_llm_start&  s=   € ð œ‘ˆØ&-ˆ×Ñ˜FÑ#Ü(+¬D¯I©I«K¸$Ñ,>Ó(?ˆ×Ñ˜fÒ%r&   r   c                 ó.  — |j                  «       }|t           }t        t        j                  «       dz  «      | j                  |   z
  }d}i }t        |j                  t        «      r`|j                  j                  «       D ��	ci c]  \  }}	|t        t        t        fv r||	“Œ }}}	|j                  j                  t        d«      }|D �
cg c]  }
|
j                  d   d   j                  ‘Œ  }}
| j!                  |||t"        ||«       y c c}	}w c c}
w )Nr£   Ú r   )Úflattenrj   r”   r¤   rJ   r“   Ú
llm_outputÚdictr’   rk   rl   rm   Úgetrn   ÚgenerationsÚtextrž   r^   )rq   r   r¡   Úflattened_llmresultr   Úrun_durationr   rŒ   ÚkÚvÚ	llmresultr‹   s               r'   Ú
on_llm_endz!FiddlerCallbackHandler.on_llm_end-  s  € Ø&×.Ñ.Ó0ÐØœ‘ˆÜœ4Ÿ9™9›;¨Ñ-Ó.°×1FÑ1FÀvÑ1NÑNˆØˆ
ØÐä�h×)Ñ)¬4Ô0ð %×/Ñ/×5Ñ5Ô7ô á7‘D�A�qØœ¤}Ô6GÐHÑHð �1‘Ø7ð ñ  ð
 "×,Ñ,×0Ñ0´¸RÓ@ˆJñ ?Ró
Ù>Q°ˆI×!Ñ! !Ñ$ QÑ'×,Ó,Ð>Qð 	ð 
ð 	×ÑØØØÜØØõ	
ùó ùò
s   Â DÃ#DÚerrorc                 óÚ   — |t            }t        t        j                  «       dz  «      | j                  |   z
  }| j	                  |dgt        | j                  |   «      z  |t        «       y )Nr£   r§   )rj   r”   r¤   rJ   rž   rT   rH   r_   )rq   r´   r¡   r   r   s        r'   Úon_llm_errorz#FiddlerCallbackHandler.on_llm_errorI  s^   € Øœ‘ˆÜ”t—y‘y“{ TÑ)Ó*¨T×-BÑ-BÀ6Ñ-JÑJˆà×ÑØ�R�Dœ3˜t×2Ñ2°6Ñ:Ó;Ñ;¸XÄwõ	
r&   )r§   N)Ú__name__Ú
__module__Ú__qualname__r‘   rB   ÚpropertyÚlistr>   r   r   r”   r   r   r   rž   r¥   r	   r³   ÚBaseExceptionr¶   Ú__classcell__)rt   s   @r'   r*   r*   >   s:  ø„ ðuàðuð ðuð ð	uð
 ðuð ðuð 
õuðn ðC
 ò C
ó ðC
ðV %'Ø59ñ(àð(ð ˜s™)ð(ð ð	(ð
 ð(ð ˜S‘Mð(ð # 4¨¨S¨¡>Ñ2ð(ð 
ó(ðT@Ø˜s C˜x™.ð@Ø37¸±9ð@ØHKð@à	ó@ð
 9ð 
¸ð 
Àó 
ð8
 -ð 
¸3ð 
À4÷ 
r&   r*   )'r¤   Útypingr   r   r   r   Úuuidr   Úlangchain_core.callbacksr   Úlangchain_core.outputsr	   Úlangchain_core.utilsr   Ú#langchain_community.callbacks.utilsr   ÚTOKEN_USAGErk   rl   rm   rj   rn   ÚGOODÚBADÚNEUTRALr^   r_   ÚDEFAULT_MAX_TOKENÚDEFAULT_MAX_DURATIONrg   ri   rh   ro   rW   r]   r[   rF   r(   r*   r%   r&   r'   Ú<module>rÊ      sK  ðÛ ß ,Ó ,Ý å 8Ý ,Ý -å =ð
 €Ø€Ø€Ø'Ð Ø	€Ø€
Ø€Ø€Ø
€Ø
€Ø
€ð Ð ØÐ ð 
€Ø€Ø
€Ø€Ø€Ø€
à  # wÐ/Ð ð ˆYˆK˜"ÑØˆyˆk˜BÑØˆiˆ[˜2ÑØˆvˆh˜‰mØ��˜bÑ Ø��˜bÑ Ø
Ð3Ð4°rÑ9Ø�1Ð'Ð(¨1Ñ,Ø�AÐ(Ð)¨AÑ-Ø˜Ð,Ð-°Ñ1ØˆqÐ&Ð'¨!Ñ+ð€ð>˜ó >ôQ
Ð0õ Q
r&   