
    -ji                     &   S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKrS SKrS SKJrJrJrJr  S SKJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJrJ r   S SK!J"r"  SSK#J$r$J%r%  \"" SS9RL                  r&S\'4S jr(S\)S\*\
   S\
4S jr+   S,S\)S\)S\)S\'S\)4
S jjr,S\)S\)4S jr-S\)S\)4S jr.S\/S\)4S jr0S\$S\*\)   4S  jr1\" S!5      r2S"\*\2   S#\3S\*\*\2      4S$ jr4S% r5S&\S\6\)\)4   4S' jr7S(\%S&\S)\3S*\*\)   S\)4
S+ jr8g)-    N)asdict)version)Path)AnyTypeVar)is_mlu_availableis_musa_availableis_sdaa_availableis_xpu_available)ReadInstructionload_datasetload_from_disk)DATASET_STATE_JSON_FILENAME)DownloadMode)VerificationMode)Trial)ChoiceStyle)Console   )DatasetSpecificationSettingsF)	highlightreturnc                  :   [         R                  " S5      (       d  [         R                  " S5      (       a  g SSKJn   U " 5       nUc  gUR                  R
                  nUS;   a  gS[        UR                  5      ;   a  gg! [        [        [        4 a     gf = f)	N	COLAB_GPUKAGGLE_KERNEL_RUN_TYPETr   )get_ipythonF)ZMQInteractiveShellShellzgoogle.colab)
osgetenvIPythonr   	__class____name__strImportError	NameErrorAttributeError)r   shell
shell_names      G/home/james-whalen/.local/lib/python3.13/site-packages/heretic/utils.pyis_notebookr-   !   s     
yy+C!D!D'=__--
99S11N3 s   B 
B 'B BBmessagechoicesc                    [        5       (       a  [        5         [        U 5        / n[        US5       Ht  u  p4[        U[        5      (       a8  [        SU SUR
                   35        UR                  UR                  5        MR  [        SU SU 35        UR                  U5        Mv       [        S5      n[        U5      S-
  nSUs=::  a  [        U5      :  a  O  OX&   $ [        S[        U5       S35        MQ  [        R                  " U U[        S	/5      S
9R                  5       $ ! [         a    [        S5         NGf = f)Nr   [z] zEnter number: r   z)[red]Please enter a number between 1 and z[/]z-[red]Invalid input. Please enter a number.[/])highlightedreverse)r/   style)r-   print	enumerate
isinstancer   titleappendvalueinputintlen
ValueErrorquestionaryselectr   ask)r.   r/   real_choicesichoice	selectionindexs          r,   prompt_selectrG   <   s3   }}g"7A.IA&&))!Bv||n-.##FLL1!Bvh'(##F+ / 	G!"23	I*1L 11'..?L@Q?RRUV  !!345
 #%		  GEFGs   -5D+ #D+ +EEdefaultqmarkunsafec                     [        5       (       a2  [        5         [        U(       a  U  SU S3OU  S35      nU(       a  U$ U$ [        R                  " XUS9nU(       a  UR                  5       $ UR                  5       $ )Nz [z]: z: )rH   rI   )r-   r5   r;   r?   text
unsafe_askrA   )r.   rH   rI   rJ   resultquestions         r,   prompt_textrP   ]   sn     }}W'"WIS1WIR.Qv,W,##GEJ&&((<<>!    c                 |    [        5       (       a  [        U 5      $ [        R                  " U SS9R	                  5       $ )NT)only_directories)r-   rP   r?   pathrA   r.   s    r,   prompt_pathrV   o   s0    }}7##$?CCEErQ   c                     [        5       (       a   [        5         [        R                  " U 5      $ [        R                  " U 5      R                  5       $ N)r-   r5   getpassr?   passwordrA   rU   s    r,   prompt_passwordr[   v   s7    }}w''##G,0022rQ   secondsc                     [        U 5      n [        U S5      u  p[        U S5      u  p US:  a  U SU S3$ US:  a  U SU  S3$ U  S3$ )Ni  <   r   zh mzm s)rounddivmod)r\   hoursminutess      r,   format_durationre   ~   sh    GnGGT*NEgr*Gqy7)1%%	1"WIQ''!}rQ   specificationc                 2   U R                   nU R                  n[        R                  R	                  U5      (       a  [        U[        5      R                  5       (       ap  [        U5      n[        R                  " U5      n[        UR                  5      nU[        U5      0nUR                  U5      S   nX7R                  UR                   nO2[!        UU["        R$                  [&        R(                  S9nO	[!        XS9n[+        X0R,                     5      $ )Nr   )splitverification_modedownload_mode)rh   )datasetrh   r!   rT   isdirr   r   existsr   r   	from_specr&   r=   to_absolutefrom_tor   r   	NO_CHECKSr   FORCE_REDOWNLOADlistcolumn)rf   rT   	split_strrk   instruction
split_namename2lenabs_instructions           r,   load_promptsr{      s      D##I	ww}}T1299;; %T*G)33I>KW]]+J"CL1H)55h?BO33o6H6HIG #"2"<"<*;;G t5,,-..rQ   Titems
batch_sizec                 b    [        S[        U 5      U5       Vs/ s H	  o X"U-    PM     sn$ s  snf )Nr   )ranger=   )r}   r~   rC   s      r,   batchifyr      s0    /4QE
J/OP/O!!*n%/OPPPs   ,c                     [         R                  " 5         [        R                  R	                  5       (       a   [        R                  R                  5         GO[        5       (       a  [        R                  R                  5         O[        5       (       a  [        R                  R                  5         O[        5       (       a  [        R                  R                  5         Oy[        5       (       a  [        R                  R                  5         OK[        R                  R                  R	                  5       (       a  [        R                  R                  5         [         R                  " 5         g rX   )gccollecttorchcudais_availableempty_cacher   xpur   mlur
   sdaar	   musabackendsmps rQ   r,   r   r      s     JJLzz  

 													

 			

 				(	(	*	*		JJLrQ   trialc                     0 nU R                   S   nUc  SOUS US'   U R                   S   R                  5        H2  u  p4[        U5      R                  5        H  u  pVUS X SU 3'   M     M4     U$ )Ndirection_indexz	per layerz.2f
parameters.)
user_attrsr}   r   )r   paramsr   	componentr   namer:   s          r,   get_trial_parametersr      s    F&&'89O'/8M  "'!1!1,!?!E!E!G	!*-335KD/4SkF[$() 6 "H MrQ   settingsbase_refusalsbad_promptsc                    SU R                    SU R                    S3nSU S[        S5       S[        S5      R                  [	        U5      R                  5        VVs/ s H  u  pVS	U S
U S3PM     snn5       SU SUR                  S   S SUR                  S    S[        U5       SU S[        U5       S3$ s  snnf )Nr1   z](https://huggingface.co/)z"# This is a decensored version of z:, made using [Heretic](https://github.com/p-e-w/heretic) vzheretic-llmzJ

## Abliteration parameters

| Parameter | Value |
| :-------- | :---: |

   z| **z** | z |z:

## Performance

| Metric | This model | Original model (zR) |
| :----- | :--------: | :---------------------------: |
| **KL divergence** | kl_divergencez.4fz* | 0 *(by definition)* |
| **Refusals** | refusals/z | z |

-----

)modelr   chrjoinr   r}   r   r=   )r   r   r   r   
model_linkr   r:   s          r,   get_readme_intror      s    X^^$$=hnn=MQOJ12?@V?W X 	B $8#>#D#D#F#FKD tfE%+#F	
) *4 5''8= >"":./q[1A0B#m_TUKV1 s   B=) ?F)9r   rY   r!   dataclassesr   importlib.metadatar   pathlibr   typingr   r   r?   r   accelerate.utilsr   r	   r
   r   datasetsr   r   r   datasets.configr   "datasets.download.download_managerr   datasets.utils.info_utilsr   optunar   r   r   rich.consoler   configr   r   r5   boolr-   r&   rt   rG   rP   rV   r[   floatre   r{   r|   r<   r   r   dictr   r   r   rQ   r,   <module>r      s   
  	  &      C B 7 ; 6  %   2% &&T 63 c s F 	""" " 	"
 	"$F F F3S 3S 3
U 
s 
 / 4  /c  /F CLQDG Q Qd1g Q, $sCx. $$$ $ c	$
 	$rQ   