Ë
    CØïi�!  ã                   ó`  — d dl 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 d dlmZ d dlmZmZ d dlmZmZmZ d dlZd dlmZ d d	lmZ  e ed
d¬«       ed«      ¬«      d'dedee    fd„«       Z! e ed
d¬«       ed«      ¬«      	 d'dedee    fd„«       Z" e ed
d¬«       ed«      ¬«      	 d(dee   deee       fd„«       Z# e ed
d¬«       ed«      ¬«      	 d(dee   deee       fd„«       Z$d„ Z%d„ Z&	 d)dee    deee       dee   fd„Z'dejP                  fd„Z)	 d*deee       dejP                  fd„Z*	 d*deee       dejP                  fd„Z+	 	 	 	 	 d+dejP                  deee      d eee      fd!„Z,	 	 	 	 	 	 d,dejP                  deee      d eee      d"ed#ed$ed%e-fd&„Z.y)-é    N)ÚListÚOptional)Úspatial)ÚPCA)ÚTSNE)Úaverage_precision_scoreÚprecision_recall_curve)ÚretryÚstop_after_attemptÚwait_random_exponential)Únumpy)Úpandasé   é   )ÚminÚmaxé   )ÚwaitÚstopÚtextÚreturnc                 ó~   — | j                  dd«      } t        j                  j                  d| g|dœ|¤Žd   d   d   S ©Nú
ú ©ÚinputÚengineÚdatar   Ú	embedding© )ÚreplaceÚopenaiÚ	EmbeddingÚcreate©r   r   Úkwargss      úQ/var/www/html/aiagents/fe/lib/python3.12/site-packages/openai/embeddings_utils.pyÚget_embeddingr)      sH   € ð �<‰<˜˜cÓ"€Dä×Ñ×"Ñ"ÐI¨$¨¸ÑIÀ&ÑIÈ&ÑQÐRSÑTÐU`ÑaÐaó    c              ‹   óš   K  — | j                  dd«      } t        j                  j                  d| g|dœ|¤Žƒ d {  –—† d   d   d   S 7 Œ­wr   )r"   r#   r$   Úacreater&   s      r(   Úaget_embeddingr-      sW   è ø€ ð �<‰<˜˜cÓ"€Dä×"Ñ"×*Ñ*ÐQ°$°ÀÑQÈ&ÑQ×QÐSYÑZÐ[\Ñ]Øñð ÐQús   ‚9A»A	¼AÚlist_of_textc                 óü   — t        | «      dk  sJ d«       ‚| D �cg c]  }|j                  dd«      ‘Œ } }t        j                  j                  d| |dœ|¤Žj
                  }|D �cg c]  }|d   ‘Œ	 c}S c c}w c c}w ©Ni   z.The batch size should not be larger than 2048.r   r   r   r    r!   )Úlenr"   r#   r$   r%   r   ©r.   r   r'   r   r   Úds         r(   Úget_embeddingsr4   '   s„   € ô ˆ|Ó Ò$ÐVÐ&VÓVÐ$ð 9EÖE°�D—L‘L  sÕ+ÐE€LÐEä×Ñ×"Ñ"ÐO¨¸fÑOÈÑO×TÑT€DØ$(Ö)˜qˆAˆk‹NÒ)Ð)ùò Fùò *s   šA4Á%A9c              ‹   ó  K  — t        | «      dk  sJ d«       ‚| D �cg c]  }|j                  dd«      ‘Œ } }t        j                  j                  d| |dœ|¤Žƒ d {  –—† j
                  }|D �cg c]  }|d   ‘Œ	 c}S c c}w 7 Œ&c c}w ­wr0   )r1   r"   r#   r$   r,   r   r2   s         r(   Úaget_embeddingsr6   4   s�   è ø€ ô ˆ|Ó Ò$ÐVÐ&VÓVÐ$ð 9EÖE°�D—L‘L  sÕ+ÐE€LÐEä×"Ñ"×*Ñ*ÐW°ÀfÑWÐPVÑW×W×]Ñ]€DØ$(Ö)˜qˆAˆk‹NÒ)Ð)ùò FàWúÚ)ùs-   ‚B
œA>µ'B
ÁBÁB
Á/BÁ;	B
ÂB
c                 ó®   — t        j                  | |«      t         j                  j                  | «      t         j                  j                  |«      z  z  S )N)ÚnpÚdotÚlinalgÚnorm)ÚaÚbs     r(   Úcosine_similarityr>   A   s6   € Ü�6‰6�!�Q‹<œ2Ÿ9™9Ÿ>™>¨!Ó,¬r¯y©y¯~©~¸aÓ/@Ñ@ÑAÐAr*   c                 ó¦  — t        |«      }t        j                  t        |«      D �cg c]
  }|||   k(  ‘Œ c}d¬«      j                  }t        «       }t        «       }t        «       }	t        |«      D ]C  }t        |dd…|f   | dd…|f   «      \  ||<   ||<   }
t        |dd…|f   | dd…|f   «      |	|<   ŒE t        |j                  «       | j                  «       «      \  }}}
t        || d¬«      }t        t        |«      dj                  |«      z   «       t        j                  d¬«       t        j                  d	d
d¬«      }g }g }|D ]{  }t        j                  dd«      }||z  d|z  |z
  z  }t        j                   ||dk\     ||dk\     dd	¬«      \  }t        j"                  dj                  |«      d|d   dz   f¬«       Œ} |j%                  «       |j%                  d«       t        j                   ||dd¬«      \  }|j%                  |«       |j%                  dj                  |«      «       t        |«      D ]Z  }t        j                   ||   ||   d¬«      \  }|j%                  |«       |j%                  dj                  ||   |	|   «      «       Œ\ t        j&                  «       }|j)                  d¬«       t        j*                  dd g«       t        j,                  dd!g«       t        j.                  d"«       t        j0                  d#«       t        j2                  |› d$�«       t        j4                  ||«       yc c}w )%a!  
    Precision-Recall plotting for a multiclass problem. It plots average precision-recall, per class precision recall and reference f1 contours.

    Code slightly modified, but heavily based on https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html
    r   )ÚaxisNÚmicro)Úaveragez5 - Average precision score over all classes: {0:0.2f})é	   é
   )Úfigsizegš™™™™™É?gš™™™™™é?é   )Únumg{®Gáz„?é   r   Úgray)ÚcolorÚalphazf1={0:0.1f}gÍÌÌÌÌÌì?é-   g{®Gáz”?)Úxyziso-f1 curvesÚgold)rJ   Úlwz+average Precision-recall (auprc = {0:0.2f}))rO   z3Precision-recall for class `{0}` (auprc = {1:0.2f})g      Ð?)Úbottomg        g      ð?gÍÌÌÌÌÌð?ÚRecallÚ	Precisionz': Precision-Recall curve for each class)r1   ÚpdÚconcatÚrangeÚvaluesÚdictr	   r   ÚravelÚprintÚstrÚformatÚpltÚfigurer8   ÚlinspaceÚplotÚannotateÚappendÚgcfÚsubplots_adjustÚxlimÚylimÚxlabelÚylabelÚtitleÚlegend)Úy_scoreÚy_true_untransformedÚ
class_listÚclassifier_nameÚ	n_classesÚiÚy_trueÚ	precisionÚrecallÚaverage_precisionÚ_Úprecision_microÚrecall_microÚaverage_precision_microÚf_scoresÚlinesÚlabelsÚf_scoreÚxÚyÚlÚfigs                         r(   Ú plot_multiclass_precision_recallr€   E   s  € ô �J“€IÜ�Y‰YÜ:?À	Ó:JÖK°QÐ
 *¨Q¡-Ó
/ÒKÐRSôç�fð ô
 “€IÜ‹V€FÜ›ÐÜ�9Óò TˆÜ%;¸FÂ1ÀaÀ4¹LÈ'ÒRSÐUVÐRVÉ-Ó%XÑ"ˆ	�!‰�f˜Q‘i Ü6°vºaÀ¸d±|ÀWÊQÐPQÈTÁ]ÓSÐ˜!ÒðTô
 (>Ø�‰‹˜Ÿ™›ó(Ñ$€O�\ 1ô 6°f¸gÈwÔWÐÜ	ÜˆOÓØ
A×
HÑ
HØ#ó
ñ	
ôô ‡J�J�wÕÜ�{‰{˜3 ¨Ô+€HØ€EØ€FØò LˆÜ�K‰K˜˜aÓ ˆØ�a‰K˜1˜q™5 7™?Ñ+ˆÜ�x‰x˜˜!˜q™&™	 1 Q¨!¡V¡9°FÀ#ÔF‰ˆÜ�‰�]×)Ñ)¨'Ó2¸¸Q¸r¹UÀT¹\Ð7JÖKð	Lð 
‡L�L�„OØ
‡M�M�/Ô"Ü�8‰8�L /¸ÀAÔF�D€QØ	‡L�L�„OØ
‡M�MØ8×?Ñ?Ð@WÓXôô �9Óò 
ˆÜ�x‰x˜˜q™	 9¨Q¡<°AÔ6‰ˆØ�‰�QŒØ�‰ðß‰v�j ‘mÐ%6°qÑ%9Ó:õ	
ð
ô �'‰'‹)€CØ×Ñ˜tÐÔ$Ü‡H�Hˆc�3ˆZÔÜ‡H�Hˆc�4ˆ[ÔÜ‡J�JˆxÔÜ‡J�Jˆ{ÔÜ‡I�I�Ð!Ð!HÐIÔJÜ‡J�Jˆu�fÕùòs 	Ls   ¨MÚquery_embeddingÚ
embeddingsc                 ó  — t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j
                  dœ}|D �cg c]  } ||   | |«      ‘Œ }}|S c c}w )zHReturn the distances between a query embedding and a list of embeddings.)ÚcosineÚL1ÚL2ÚLinf)r   Údistancer„   Ú	cityblockÚ	euclideanÚ	chebyshev)r�   r‚   Údistance_metricÚdistance_metricsr    Ú	distancess         r(   Údistances_from_embeddingsr�   ‹   sƒ   € ô ×"Ñ"×)Ñ)Ü×Ñ×(Ñ(Ü×Ñ×(Ñ(Ü× Ñ ×*Ñ*ñ	Ðð $öàð 	*Ð˜Ñ)¨/¸9ÕEð€Ið ð Ðùò	s   Á,Bc                 ó,   — t        j                  | «      S )zGReturn a list of indices of nearest neighbors from a list of distances.)r8   Úargsort)rŽ   s    r(   Ú+indices_of_nearest_neighbors_from_distancesr’   ž   s   € ä�:‰:�iÓ Ð r*   c                 óf   — t        |¬«      }t        j                  | «      }|j                  |«      S )z2Return the PCA components of a list of embeddings.)Ún_components)r   r8   ÚarrayÚfit_transform)r‚   r”   ÚpcaÚarray_of_embeddingss       r(   Úpca_components_from_embeddingsr™   £   s/   € ô ˜<Ô
(€CÜŸ(™( :Ó.ÐØ×ÑÐ0Ó1Ð1r*   c                 óÄ   — d|j                  «       vrd|d<   d|j                  «       vrd|d<   t        dd|i|¤Ž}t        j                  | «      }|j	                  |«      S )z1Returns t-SNE components of a list of embeddings.Úinitr—   Úlearning_rateÚautor”   r!   )Úkeysr   r8   r•   r–   )r‚   r”   r'   Útsner˜   s        r(   Útsne_components_from_embeddingsr    ¬   sf   € ð
 �V—[‘[“]Ñ"Øˆˆv‰Ø˜fŸk™k›mÑ+Ø"(ˆˆÑÜÑ4˜\Ð4¨VÑ4€DÜŸ(™( :Ó.ÐØ×ÑÐ1Ó2Ð2r*   Ú
componentsrz   Ústringsc                 óˆ  — | D �cg c]  }d‘Œ }}t        j                  || dd…df   || dd…df   d|r|n|d|r4|D �	cg c](  }	dj                  t        j                  |	d¬	«      «      ‘Œ* c}	n|i«      }
t        j                  |
f|||rdnd|rdnd|rdgndd
œ|¤Žj                  t        |¬«      ¬«      }|S c c}w c c}	w )z7Return an interactive 2D chart of embedding components.Ú Nr   r   ÚlabelÚstringú<br>é   ©Úwidth)r|   r}   rJ   ÚsymbolÚ
hover_data©Úsize©Úmarker)	rS   Ú	DataFrameÚjoinÚtrÚwrapÚpxÚscatterÚupdate_tracesrW   )r¡   rz   r¢   Úx_titleÚy_titleÚ	mark_sizer'   rt   Ú
empty_listr¦   r   Úcharts               r(   Úchart_from_componentsr½   º   så   € ð )Ö)˜’"Ð)€JÐ)Ü�<‰<à�Z¢ 1 Ñ%Ø�Z¢ 1 Ñ%Ø™v‘V¨:ØÙð MTÖTÀ&�v—{‘{¤2§7¡7¨6¸Ô#<Õ=ÓTàð	
ó	€Dô �J‰JØðà
Ø
Ù‰g TÙ ‰w dÙ!(�H‘:¨dñð ñ÷ �mœ4 YÔ/€mÓ0ð 
ð €Lùò) *ùò Us
   …	B:¾-B?r¸   r¹   Úz_titlerº   c                 óœ  — | D �cg c]  }d‘Œ }	}t        j                  || dd…df   || dd…df   || dd…df   d|r|n|	d|r4|D �
cg c](  }
dj                  t        j                  |
d	¬
«      «      ‘Œ* c}
n|	i«      }t        j                  |f||||rdnd|rdnd|rdgnddœ|¤Žj                  t        |¬«      ¬«      }|S c c}w c c}
w )z7Return an interactive 3D chart of embedding components.r¤   Nr   r   rH   r¥   r¦   r§   r¨   r©   )r|   r}   ÚzrJ   r«   r¬   r­   r¯   )	rS   r±   r²   r³   r´   rµ   Ú
scatter_3dr·   rW   )r¡   rz   r¢   r¸   r¹   r¾   rº   r'   rt   r»   r¦   r   r¼   s                r(   Úchart_from_components_3DrÂ   Û   sö   € ð )Ö)˜’"Ð)€JÐ)Ü�<‰<à�Z¢ 1 Ñ%Ø�Z¢ 1 Ñ%Ø�Z¢ 1 Ñ%Ø™v‘V¨:ØÙð MTÖTÀ&�v—{‘{¤2§7¡7¨6¸Ô#<Õ=ÓTàð	
ó
€Dô �M‰MØð	à
Ø
Ø
Ù‰g TÙ ‰w dÙ!(�H‘:¨dñ	ð ñ	÷ �mœ4 YÔ/€mÓ0ð 
ð €Lùò- *ùò Us   …	CÁ-C	)ztext-similarity-davinci-001)ztext-similarity-babbage-001)r„   )rH   )NNúComponent 0úComponent 1é   )NNrÃ   rÄ   zCompontent 2rÅ   )/Útextwrapr³   Útypingr   r   Úmatplotlib.pyplotÚpyplotr\   Úplotly.expressÚexpressrµ   Úscipyr   Úsklearn.decompositionr   Úsklearn.manifoldr   Úsklearn.metricsr   r	   Útenacityr
   r   r   r#   Úopenai.datalib.numpy_helperr   r8   Úopenai.datalib.pandas_helperr   rS   rZ   Úfloatr)   r-   r4   r6   r>   r€   r�   Úndarrayr’   r™   r    r½   ÚintrÂ   r!   r*   r(   ú<module>rÖ      sœ  ðÛ ß !å Ý Ý Ý %Ý !ß Kß GÑ Gã Ý 3Ý 5ñ Ñ#¨¨rÔ2Ñ9KÈAÓ9NÔOñb˜ð bÐPTÐUZÑP[ò bó Pðbñ Ñ#¨¨rÔ2Ñ9KÈAÓ9NÔOà3ñ	Ø
ð	à	ˆ%�[ò	ó Pð	ñ Ñ#¨¨rÔ2Ñ9KÈAÓ9NÔOà$Añ	*Ø�s‘)ð	*à	ˆ$ˆu‰+Ñò	*ó Pð	*ñ Ñ#¨¨rÔ2Ñ9KÈAÓ9NÔOà$Añ	*Ø�s‘)ð	*à	ˆ$ˆu‰+Ñò	*ó Pð	*òBòCðR ñØ˜%‘[ðà�T˜%‘[Ñ!ðð 
ˆ$�Zó	ð&!¸b¿j¹jó !ð 12ñ2Ø�T˜%‘[Ñ!ð2à‡Z�Zó2ð 12ñ3Ø�T˜%‘[Ñ!ð3à‡Z�Zó3ð  #'Ø#'ØØØñØ—
‘
ðà�T˜#‘YÑðð �d˜3‘iÑ óðF #'Ø#'Ø Ø Ø!Øñ!Ø—
‘
ð!à�T˜#‘YÑð!ð �d˜3‘iÑ ð!ð ð	!ð
 ð!ð ð!ð ô!r*   