§
    ÔŸ’jš  ã                  ó�   — d dl mZ d dl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  ej        d	¦  «        Z G d
„ d¦  «        ZdS )é    )ÚannotationsN)Údatetime)ÚAny)ÚErpDatabaseClient)Úget_settingsé   )ÚBENCHMARK_MODELS_CATALOGUEzdscons.model_benchmark.runnerc                  ó0   — e Zd ZdZddd„Z	 ddd„Zdd„ZdS )ÚBenchmarkRunnerMixinz:Model performance benchmarking and latency testing engine.NÚpostgres_clientú
Any | NoneÚreturnÚNonec                ór   — |pt          ¦   «         | _        t          ¦   «         | _        g | _        d | _        d S ©N)r   r   r   ÚsettingsÚ_last_benchmark_resultsÚ_last_benchmark_time)Úselfr   s     ú9C:\Projects\DSCons\app\services\model_benchmark\runner.pyÚ__init__zBenchmarkRunnerMixin.__init__   s7   € Ø.ÐEÕ2CÑ2EÔ2EˆÔÝ$™œˆŒØ=?ˆÔ$Ø59ˆÔ!Ð!Ð!ó    Úmodels_to_testúlist[str] | Noneúlist[dict[str, Any]]c                óX  ‡— ‰rˆfd„t           D ¦   «         nt           }g }t          j        ¦   «                              ¦   «         }|D ]Ã}|d         }|d         }|d         }|d         }	|d         }
|d         }d}|d	k    rd}|	› d
�}n|	› d�}t	          |
dz  dz  d¦  «        }t          d|	dz  z
  d¦  «        }t          |dz  |dz  z   |dz  z   d¦  «        }||||	||
||d||d         |d         |dœ}|                     |¦  «         ŒÄ|| _        t          j        ¦   «         | _	        |S )u^   Cháº¡y Ä‘o lÆ°á»�ng thá»±c táº¿ Latency (ms), TPS, Ä�iá»ƒm cháº¥t lÆ°á»£ng cho cÃ¡c mÃ´ hÃ¬nh.c                ó(   •— g | ]}|d          ‰v ¯|‘ŒS )Ú
model_name© )Ú.0Úmr   s     €r   ú
<listcomp>z6BenchmarkRunnerMixin.run_benchmark.<locals>.<listcomp>   s'   ø€ ÐXÐXÐX�1°a¸´oÈÐ6WÐ6WˆQÐ6WÐ6WÐ6Wr   r   ÚproviderÚdisplay_nameÚbaseline_ttft_msÚbaseline_tpsÚbaseline_qualityÚHEALTHYÚlmstudiou%   ms (Cá»±c nhanh - Offline On-Premise)zms (OpenRouter Cloud API)g      T@g      Y@g      $@g      4@g      à?g333333Ó?gš™™™™™É?r   g        Úcontext_windowÚcategory_strengths)r   r#   r$   Úttft_msÚlatency_displayÚtpsÚquality_scoreÚoverall_efficiencyÚcost_per_million_tokensÚstatusr*   Ú	strengthsÚ	tested_at)
r	   r   ÚnowÚ	isoformatÚminÚmaxÚroundÚappendr   r   )r   r   Útarget_catalogueÚresultsÚ	timestampÚitemr   r#   r$   Úttftr.   Úqualityr2   Úlatency_descÚspeed_scoreÚlatency_scorer0   Úresult_entrys    `                r   Úrun_benchmarkz"BenchmarkRunnerMixin.run_benchmark   s¤  ø€ ð ð,ÐXÐXÐXÐXÕ2ÐXÑXÔXÐXå+ð 	ð )+ˆÝ”L‘N”N×,Ò,Ñ.Ô.ˆ	à$ð )	)ð )	)ˆDØ˜lÔ+ˆJØ˜JÔ'ˆHØ Ô/ˆLð Ð*Ô+ˆDØ�~Ô&ˆCØÐ-Ô.ˆGØˆFð ˜:Ò%Ð%Ø"�Ø"&ÐMÐMÐM��à"&ÐAÐAÐA�õ ˜c D™j¨5Ñ0°%Ñ8Ô8ˆKÝ ¨°©Ñ 5°tÑ<Ô<ˆMÝ!&Ø˜3‘ ;°Ñ#4Ñ5¸ÈÑ9LÑMÈqñ"ô "Ðð
 )Ø$Ø ,ØØ#/ØØ!(Ø&8Ø+.Ø Ø"&Ð'7Ô"8Ø!Ð"6Ô7Ø&ðð ˆLð �NŠN˜<Ñ(Ô(Ð(Ð(à'.ˆÔ$Ý$,¤L¡N¤NˆÔ!Øˆr   c                óF   — | j         s|                      ¦   «         S | j         S )uW   Láº¥y káº¿t quáº£ benchmark gáº§n nháº¥t hoáº·c khá»Ÿi táº¡o káº¿t quáº£ máº·c Ä‘á»‹nh.)r   rE   )r   s    r   Úget_benchmark_resultsz*BenchmarkRunnerMixin.get_benchmark_resultsT   s(   € àÔ+ð 	(Ø×%Ò%Ñ'Ô'Ð'ØÔ+Ð+r   r   )r   r   r   r   )r   r   r   r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rE   rG   r   r   r   r   r      sf   € € € € € ØDÐDð:ð :ð :ð :ð :ð 26ð:ð :ð :ð :ð :ðx,ð ,ð ,ð ,ð ,ð ,r   r   )Ú
__future__r   Úloggingr   Útypingr   Úapp.core.postgres.erp_clientr   Úapp.core.settingsr   Ú	cataloguer	   Ú	getLoggerÚloggerr   r   r   r   ú<module>rT      sÉ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ø *Ð *Ð *Ð *Ð *Ð *à 1Ð 1Ð 1Ð 1Ð 1Ð 1à	ˆÔ	Ð:Ñ	;Ô	;€ðI,ð I,ð I,ð I,ð I,ñ I,ô I,ð I,ð I,ð I,r   