§
    s�’jý  ã                  ó¨  — d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ  ej        d	¦  «        Z e¦   «         Z e¦   «         Ze                     d
e¬¦  «         e e
g d¢¦  «        ¦  «        fd$d„¦   «         Ze                     de¬¦  «         e e
g d¢¦  «        ¦  «        fd%d„¦   «         Ze                     d¦  «         e e
g d¢¦  «        ¦  «        fd&d„¦   «         Ze                     d¦  «         e e
g d¢¦  «        ¦  «        fd&d„¦   «         Ze                     d¦  «         e e
g d¢¦  «        ¦  «        fd&d„¦   «         Ze                     d ¦  «         e e
g d¢¦  «        ¦  «        fd&d!„¦   «         Ze                     d"¦  «         e e
g d¢¦  «        ¦  «        fd&d#„¦   «         Z dS )'é    )ÚannotationsN)ÚAny)Ú	APIRouterÚDependsÚHTTPException)Úrequire_role)ÚErpDatabaseClient)ÚAgentModelConfigItemÚAgentModelListResponseÚUpdateAgentModelRequest)ÚModelBenchmarkServicez%dscons.api.knowledge_agents.benchmarkz/v1/admin/agent-models)Úresponse_model)Ú
superadminÚdirectorÚadminÚcurrent_userúdict[str, Any]Úreturnr   c                óÎ   — t          ¦   «         }	 |                     ¦   «         }t          d„ |D ¦   «         dd¬¦  «        S # t          $ r}t	          dd|›�¬¦  «        |‚d}~ww xY w)	uo   Láº¥y danh sÃ¡ch cáº¥u hÃ¬nh LLM Model vÃ  Provider cá»§a toÃ n bá»™ AI Agents (DÃ nh cho Superadmin/Director).c                ó&   — g | ]}t          d i |¤Ž‘ŒS )© )r
   )Ú.0Úms     úMC:\Projects\DSCons\app\api\routers\knowledge_agent_routes\models_benchmark.pyú
<listcomp>z(list_ai_agent_models.<locals>.<listcomp>!   s'   € Ð>Ð>Ð>°!Õ(Ð-Ð-¨1Ð-Ð-Ð>Ð>Ð>ó    zstealth/ox-alphaÚ
openrouter)ÚagentsÚdefault_modelÚdefault_provideréô  u#   Lá»—i láº¥y cáº¥u hÃ¬nh AI models: ©Ústatus_codeÚdetailN)r	   Úlist_ai_agent_modelsr   Ú	Exceptionr   )r   ÚclientÚmodelsÚexcs       r   r%   r%      sœ   € õ Ñ Ô €Fð
Ø×,Ò,Ñ.Ô.ˆÝ%Ø>Ð>°vÐ>Ñ>Ô>Ø,Ø)ð
ñ 
ô 
ð 	
øõ
 ð ð ð ÝØÐ$QÈ#Ð$QÐ$Qð
ñ 
ô 
àð	øøøøðøøøs   �/A  Á 
A$Á
AÁA$z#/v1/admin/agent-models/{agent_code}Ú
agent_codeÚstrÚpayloadr   r
   c                óè  — t          ¦   «         }	 |                     | |j        |j        |j        |j        |j        |j        |j        |j	        |j
        ¬¦
  «
        }|                     ¦   «         }|r|d                              dg ¦  «        ng }||d<   t          d	i |¤ŽS # t          $ r$}t          dt!          |¦  «        ¬¦  «        |‚d}~wt"          $ r}t          dd|›�¬¦  «        |‚d}~ww xY w)
u|   Cáº­p nháº­t LLM Model, Provider, System Prompt vÃ  vÃ²ng Ä‘á»�i Stealth cho má»™t AI Agent (DÃ nh cho Superadmin/Director).)
r*   Ú
model_nameÚproviderÚtemperatureÚ
max_tokensÚsystem_prompt_customÚis_stealth_promoÚstealth_expires_atÚfallback_model_nameÚfallback_providerr   Úavailable_presetsi”  r"   Nr!   u   Lá»—i cáº­p nháº­t AI model: r   )r	   Úupdate_ai_agent_modelr.   r/   r0   r1   r2   r3   r4   r5   r6   r%   Úgetr
   Ú
ValueErrorr   r+   r&   )r*   r,   r   r'   ÚupdatedÚ
all_modelsÚpresetsr)   s           r   r8   r8   +   s9  € õ Ñ Ô €FðØ×.Ò.Ø!ØÔ)ØÔ%ØÔ+ØÔ)Ø!(Ô!=Ø$Ô5Ø&Ô9Ø 'Ô ;Ø%Ô7ð /ñ 
ô 
ˆð ×0Ò0Ñ2Ô2ˆ
Ø@JÐR�*˜Q”-×#Ò#Ð$7¸Ñ<Ô<Ð<ÐPRˆØ'.ˆÐ#Ñ$Ý#Ð.Ð. gÐ.Ð.Ð.øÝð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøÝð ð ð ÝØÐ$KÀCÐ$KÐ$Kð
ñ 
ô 
àð	øøøøðøøøs$   �BB! Â!
C1Â+C
Ã
C1ÃC,Ã,C1z/v1/admin/model-benchmark/runc                óª   — 	 t                                ¦   «         }dt          |¦  «        |dœS # t          $ r}t	          dd|›�¬¦  «        |‚d}~ww xY w)u‚   KÃ­ch hoáº¡t bÃ i kiá»ƒm tra Ä‘o lÆ°á»�ng thá»±c táº¿ TPS, Latency (TTFT) vÃ  Cháº¥t lÆ°á»£ng cÃ¢u tráº£ lá»�i chuyÃªn ngÃ nh AEC.ÚSUCCESS)ÚstatusÚtested_models_countÚresultsr!   u"   Lá»—i cháº¡y benchmark mÃ´ hÃ¬nh: r"   N)Úbenchmark_serviceÚrun_benchmarkÚlenr&   r   ©r   rB   r)   s      r   Úrun_model_benchmarkrG   N   s   € ð
Ý#×1Ò1Ñ3Ô3ˆàÝ#& w¡<¤<Øð
ð 
ð 	
øõ
 ð ð ð ÝØÐ$PÈÐ$PÐ$Pð
ñ 
ô 
àð	øøøøðøøøs   ‚+. ®
A¸AÁAz!/v1/admin/model-benchmark/results)r   r   r   ÚpmÚqsc                ó¨   — 	 t                                ¦   «         }t          |¦  «        |dœS # t          $ r}t	          dd|›�¬¦  «        |‚d}~ww xY w)u]   Truy xuáº¥t káº¿t quáº£ benchmark so sÃ¡nh giá»¯a OpenRouter Free Models vÃ  Local LM Studio.)rA   rB   r!   u#   Lá»—i láº¥y káº¿t quáº£ benchmark: r"   N)rC   Úget_benchmark_resultsrE   r&   r   rF   s      r   Úget_model_benchmark_resultsrL   b   s|   € ð	Ý#×9Ò9Ñ;Ô;ˆå#& w¡<¤<Øð
ð 
ð 	
øõ ð ð ð ÝØÐ$QÈ#Ð$QÐ$Qð
ñ 
ô 
àð	øøøøðøøøó   ‚*- ­
A·AÁAz)/v1/admin/model-benchmark/recommendationsc                ó¨   — 	 t                                ¦   «         }t          |¦  «        |dœS # t          $ r}t	          dd|›�¬¦  «        |‚d}~ww xY w)uq   Láº¥y ma tráº­n Ä‘á»� xuáº¥t gÃ¡n model tá»‘i Æ°u nháº¥t cho tá»«ng vá»‹ trÃ­ trong 9 nhÃ¢n sá»± AI cá»§a DSCons.)Útotal_personasÚrecommendationsr!   u*   Lá»—i táº¡o Ä‘á»� xuáº¥t model tá»‘i Æ°u: r"   N)rC   Úgenerate_recommendationsrE   r&   r   )r   rP   r)   s      r   Ú!get_optimal_model_recommendationsrR   u   s   € ð	Ý+×DÒDÑFÔFˆå! /Ñ2Ô2Ø.ð
ð 
ð 	
øõ ð ð ð ÝØÐ$XÐQTÐ$XÐ$Xð
ñ 
ô 
àð	øøøøðøøørM   z//v1/admin/model-benchmark/apply-recommendationsc                ó„   — 	 t                                ¦   «         S # t          $ r}t          dd|›�¬¦  «        |‚d}~ww xY w)un   1-Click: Tá»± Ä‘á»™ng cáº­p nháº­t vÃ  Ã¡p dá»¥ng toÃ n bá»™ cáº¥u hÃ¬nh model tá»‘i Æ°u cho 9 nhÃ¢n viÃªn AI.r!   u(   Lá»—i Ã¡p dá»¥ng cáº¥u hÃ¬nh tá»‘i Æ°u: r"   N)rC   Úapply_optimal_recommendationsr&   r   ©r   r)   s     r   Ú#apply_optimal_model_recommendationsrV   ˆ   s`   € ðÝ ×>Ò>Ñ@Ô@Ð@øÝð ð ð ÝØÐ$VÈsÐ$VÐ$Vð
ñ 
ô 
àð	øøøøðøøøó   ‚ ›
?¥:º?z2/v1/admin/model-benchmark/check-stealth-expirationc                ó„   — 	 t                                ¦   «         S # t          $ r}t          dd|›�¬¦  «        |‚d}~ww xY w)u   Kiá»ƒm tra vÃ  tá»± Ä‘á»™ng chuyá»ƒn Ä‘á»•i toÃ n bá»™ mÃ´ hÃ¬nh Stealth / Promo Ä‘Ã£ háº¿t háº¡n vá»� Fallback Model an toÃ n.r!   u-   Lá»—i kiá»ƒm tra háº¿t háº¡n Stealth models: r"   N)rC   Ú)check_and_fallback_expired_stealth_modelsr&   r   rU   s     r   Úcheck_stealth_models_expirationrZ   —   sa   € ðÝ ×JÒJÑLÔLÐLøÝð ð ð ÝØÐ$[ÐTWÐ$[Ð$[ð
ñ 
ô 
àð	øøøøðøøørW   )r   r   r   r   )r*   r+   r,   r   r   r   r   r
   )r   r   r   r   )!Ú
__future__r   ÚloggingÚtypingr   Úfastapir   r   r   Úapp.api.routers.authr   Úapp.core.postgres.erp_clientr	   Úapp.models.schemasr
   r   r   Ú$app.services.model_benchmark_servicer   Ú	getLoggerÚloggerÚrouterrC   r9   r%   Úputr8   ÚpostrG   rL   rR   rV   rZ   r   r   r   ú<module>rh      s]  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à -Ð -Ð -Ð -Ð -Ð -Ø :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð
 GÐ FÐ FÐ FÐ FÐ Fà	ˆÔ	ÐBÑ	CÔ	C€Ø	ˆ‰Œ€Ø)Ð)Ñ+Ô+Ð ð ‡‚Ð$Ð5K€ÑLÔLà#* 7ØˆÐ8Ð8Ð8Ñ9Ô9ñ$ô $ðð ð ð ñ MÔLðð( ‡‚Ð1ÐBV€ÑWÔWð $+ 7ØˆÐ8Ð8Ð8Ñ9Ô9ñ$ô $ðð ð ð ñ XÔWððD ‡‚Ð,Ñ-Ô-à#* 7ØˆÐ8Ð8Ð8Ñ9Ô9ñ$ô $ðð ð ð ñ .Ô-ðð& ‡‚Ð/Ñ0Ô0à#* 7ØˆÐDÐDÐDÑEÔEñ$ô $ðð ð ð ñ 1Ô0ðð$ ‡‚Ð7Ñ8Ô8à#* 7ØˆÐDÐDÐDÑEÔEñ$ô $ðð ð ð ñ 9Ô8ðð$ ‡‚Ð>Ñ?Ô?à#* 7ØˆÐ8Ð8Ð8Ñ9Ô9ñ$ô $ðð ð ð ñ @Ô?ðð ‡‚ÐAÑBÔBà#* 7ØˆÐ8Ð8Ð8Ñ9Ô9ñ$ô $ðð ð ð ñ CÔBðð ð r   