§
     @g0  ã                   óò  — d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dlZd dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZ ddlmZmZmZ  ej        e¦  «        Zej                             d	¦  «        d
k    rdndZ G d„ d¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ de¦  «        Z% ee ¬¦  «        Z& G d„ de&¦  «        Z' G d„ d¦  «        Z(dS )é    )Úabstractmethod)ÚdatetimeN)Úsleep)ÚColumnÚIntegerÚStringÚNVARCHARÚFloatÚDateTimeÚcreate_engine)ÚsessionmakerÚdeclarative_baseÚdeclared_attrÚSessioné   )ÚDefaultQueueClientÚQueueItemBaseÚQueueClientBaseÚAIPROXY_USE_NVARCHARÚ1TFc                   ór  — e Zd ZeZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú_AccessLogBasec                 ó4   — | j                              ¦   «         S ©N)Ú__name__Úlower©Úclss    úE/var/www/piapp/venv/lib/python3.11/site-packages/aiproxy/accesslog.pyÚ__tablename__z_AccessLogBase.__tablename__   s   € àŒ|×!Ò!Ñ#Ô#Ð#ó    c                 ó.   — t          t          d¬¦  «        S )NT)Úprimary_key©r   r   r   s    r   Úidz_AccessLogBase.id   s   € å•g¨4Ð0Ñ0Ô0Ð0r!   c                 ó*   — t          t          ¦  «        S r   ©r   r   r   s    r   Ú
request_idz_AccessLogBase.request_id   ó   € å•f‰~Œ~Ðr!   c                 ó*   — t          t          ¦  «        S r   )r   r   r   s    r   Ú
created_atz_AccessLogBase.created_at!   s   € å•hÑÔÐr!   c                 ó*   — t          t          ¦  «        S r   r'   r   s    r   Ú	directionz_AccessLogBase.direction%   r)   r!   c                 ó*   — t          t          ¦  «        S r   r$   r   s    r   Ústatus_codez_AccessLogBase.status_code)   ó   € å•g‰ŒÐr!   c                 ó`   — | j         rt          t          ¦  «        nt          t          ¦  «        S r   ©Úuse_nvarcharr   r	   r   r   s    r   Úcontentz_AccessLogBase.content-   ó#   € à#&Ô#3ÐG�v•hÑÔÐ½Å¹¼ÐGr!   c                 ó`   — | j         rt          t          ¦  «        nt          t          ¦  «        S r   r2   r   s    r   Úfunction_callz_AccessLogBase.function_call1   r5   r!   c                 ó`   — | j         rt          t          ¦  «        nt          t          ¦  «        S r   r2   r   s    r   Ú
tool_callsz_AccessLogBase.tool_calls5   r5   r!   c                 ó`   — | j         rt          t          ¦  «        nt          t          ¦  «        S r   r2   r   s    r   Úraw_bodyz_AccessLogBase.raw_body9   r5   r!   c                 ó`   — | j         rt          t          ¦  «        nt          t          ¦  «        S r   r2   r   s    r   Úraw_headersz_AccessLogBase.raw_headers=   r5   r!   c                 ó*   — t          t          ¦  «        S r   r'   r   s    r   Úmodelz_AccessLogBase.modelA   r)   r!   c                 ó*   — t          t          ¦  «        S r   r$   r   s    r   Úprompt_tokensz_AccessLogBase.prompt_tokensE   r0   r!   c                 ó*   — t          t          ¦  «        S r   r$   r   s    r   Úcompletion_tokensz _AccessLogBase.completion_tokensI   r0   r!   c                 ó*   — t          t          ¦  «        S r   ©r   r
   r   s    r   Úrequest_timez_AccessLogBase.request_timeM   ó   € å•e‰}Œ}Ðr!   c                 ó*   — t          t          ¦  «        S r   rE   r   s    r   Úrequest_time_apiz_AccessLogBase.request_time_apiQ   rG   r!   N)r   Ú
__module__Ú__qualname__Ú_use_nvarcharr3   r   r    r%   r(   r+   r-   r/   r4   r7   r9   r;   r=   r?   rA   rC   rF   rI   © r!   r   r   r      sÖ  € € € € € Ø €Làð$ð $ñ „]ð$ð ð1ð 1ñ „]ð1ð ðð ñ „]ðð ð ð  ñ „]ð ð ðð ñ „]ðð ðð ñ „]ðð ðHð Hñ „]ðHð ðHð Hñ „]ðHð ðHð Hñ „]ðHð ðHð Hñ „]ðHð ðHð Hñ „]ðHð ðð ñ „]ðð ðð ñ „]ðð ðð ñ „]ðð ðð ñ „]ðð ðð ñ „]ðð ð r!   r   c                   óF   — e Zd Zdedededdfd„Zededefd„¦   «         ZdS )	ÚRequestItemBaser(   Úrequest_jsonÚrequest_headersÚreturnNc                 ó0   — || _         || _        || _        d S r   )r(   rP   rQ   )Úselfr(   rP   rQ   s       r   Ú__init__zRequestItemBase.__init__X   s   € Ø$ˆŒØ(ˆÔØ.ˆÔÐÐr!   Úaccesslog_clsc                 ó   — d S r   rM   ©rT   rV   s     r   Úto_accesslogzRequestItemBase.to_accesslog]   ó   € àˆr!   )	r   rJ   rK   ÚstrÚdictrU   r   r   rY   rM   r!   r   rO   rO   W   ss   € € € € € ð/ 3ð /°dð /ÈTð /ÐVZð /ð /ð /ð /ð
 ð¨.ð ¸^ð ð ð ñ „^ðð ð r!   rO   c                   óT   — e Zd Zddedededededed	dfd
„Zede	d	e	fd„¦   «         Z
dS )ÚResponseItemBaseNr   r(   Úresponse_jsonÚresponse_headersÚdurationÚduration_apir/   rR   c                 óZ   — || _         || _        || _        || _        || _        || _        d S r   )r(   r_   r`   ra   rb   r/   )rT   r(   r_   r`   ra   rb   r/   s          r   rU   zResponseItemBase.__init__c   s6   € Ø$ˆŒØ*ˆÔØ 0ˆÔØ ˆŒØ(ˆÔØ&ˆÔÐÐr!   rV   c                 ó   — d S r   rM   rX   s     r   rY   zResponseItemBase.to_accesslogk   rZ   r!   )Nr   r   r   ©r   rJ   rK   r[   r\   ÚfloatÚintrU   r   r   rY   rM   r!   r   r^   r^   b   sœ   € € € € € ð'ð ' 3ð '°tð 'Ètð 'Ðfkð 'ð  @Eð 'ð  X[ð 'ð  dhð 'ð 'ð 'ð 'ð ð¨.ð ¸^ð ð ð ñ „^ðð ð r!   r^   c                   óT   — e Zd Zddedededededed	dfd
„Zede	d	e	fd„¦   «         Z
dS )ÚStreamChunkItemBaseNr   r(   Úresponse_contentr`   ra   rb   r/   rR   c                 óZ   — || _         || _        || _        || _        || _        || _        d S r   )r(   rj   r`   ra   rb   r/   )rT   r(   rj   r`   ra   rb   r/   s          r   rU   zStreamChunkItemBase.__init__q   s6   € Ø$ˆŒØ 0ˆÔØ 0ˆÔØ ˆŒØ(ˆÔØ&ˆÔÐÐr!   rV   c                 ó   — d S r   rM   rX   s     r   rY   z StreamChunkItemBase.to_accesslogy   rZ   r!   )NNr   r   r   re   rM   r!   r   ri   ri   p   s�   € € € € € ð'ð ' 3ð '¸#ð 'ÐX\ð 'Ðotð 'ð  INð 'ð  adð 'ð  mqð 'ð 'ð 'ð 'ð ð¨.ð ¸^ð ð ð ñ „^ðð ð r!   ri   c                   óP   — e Zd Zddedededededed	dfd
„Zded	efd„Z	d	efd„Z
dS )ÚErrorItemBaseNr   r(   Ú	exceptionÚtraceback_infor_   r`   r/   rR   c                 óZ   — || _         || _        || _        || _        || _        || _        d S r   )r(   ro   rp   r_   r`   r/   )rT   r(   ro   rp   r_   r`   r/   s          r   rU   zErrorItemBase.__init__   s6   € Ø$ˆŒØ"ˆŒØ,ˆÔØ*ˆÔØ 0ˆÔØ&ˆÔÐÐr!   rV   c                 óž  — t          | j        t          ¦  «        rA	 t          j        | j        d¬¦  «        }n8# t
          $ r t          | j        ¦  «        }Y nw xY wt          | j        ¦  «        } || j        t          j	        ¦   «         d| j
        › d| j        › �|| j        rt          j        | j        d¬¦  «        nd d| j        ¬¦  «        S )NF)Úensure_asciiÚerrorú
Úerror_handler)r(   r+   r-   r4   r;   r=   r?   r/   )Ú
isinstancer_   r\   ÚjsonÚdumpsÚ	Exceptionr[   r(   r   Úutcnowro   rp   r`   r/   )rT   rV   r;   s      r   rY   zErrorItemBase.to_accesslog‡   sç   € Ý�dÔ(­$Ñ/Ô/ð 	/ð3Ýœ: dÔ&8ÀuÐMÑMÔM��øÝð 3ð 3ð 3Ý˜tÔ1Ñ2Ô2���ð3øøøõ ˜4Ô-Ñ.Ô.ˆHàˆ}Ø”Ý”Ñ(Ô(ØØ”~Ð>Ð>¨Ô)<Ð>Ð>ØØQUÔQfÐp�œ
 4Ô#8ÀuÐMÑMÔMÐMÐlpØ!ØÔ(ð	
ñ 	
ô 	
ð 		
s   œ8 ¸AÁAc                 ót   — | j         j        | j        t          | j        ¦  «        | j        | j        | j        dœS )N)Útyper(   ro   rp   r_   r`   )Ú	__class__r   r(   r[   ro   rp   r_   r`   )rT   s    r   Úto_dictzErrorItemBase.to_dict›   s=   € à”NÔ+Øœ/Ý˜Tœ^Ñ,Ô,Ø"Ô1Ø!Ô/Ø $Ô 5ð
ð 
ð 	
r!   )NNr   )r   rJ   rK   r[   rz   r\   rg   rU   r   rY   r   rM   r!   r   rn   rn   ~   s«   € € € € € ð'ð ' 3ð '°9ð 'Ècð 'Ðbfð 'ð  BFð 'ð  \_ð 'ð  hlð 'ð 'ð 'ð 'ð
¨.ð 
¸^ð 
ð 
ð 
ð 
ð(
˜ð 
ð 
ð 
ð 
ð 
ð 
r!   rn   c                   ó   — e Zd ZdS )ÚWorkerShutdownItemN©r   rJ   rK   rM   r!   r   r�   r�   ¦   s   € € € € € Ø€Cr!   r�   r   c                   ó   — e Zd ZdS )Ú	AccessLogNr‚   rM   r!   r   r„   r„   ­   s   € € € € € € € r!   r„   c                   ó`   — e Zd Zddeddœdedefd„Zdedefd	„Z	dedefd
„Z
dedefd„Zd„ ZdS )ÚAccessLogWorkerzsqlite:///aiproxy.dbN)Úconnection_strÚ	db_enginerV   Úqueue_clientr‡   r‰   c                óü   — |r|| _         nt          |¦  «        | _         || _        | j        j                             | j         ¬¦  «         t          dd| j         ¬¦  «        | _        |pt          ¦   «         | _        d S )N)ÚbindF)Ú
autocommitÚ	autoflushr‹   )	rˆ   r   rV   ÚmetadataÚ
create_allr   Úget_sessionr   r‰   )rT   r‡   rˆ   rV   r‰   s        r   rU   zAccessLogWorker.__init__±   s~   € Øð 	;Ø&ˆDŒNˆNå*¨>Ñ:Ô:ˆDŒNØ*ˆÔØÔÔ#×.Ò.°D´NÐ.ÑCÔCÐCÝ'°5ÀEÐPTÔP^Ð_Ñ_Ô_ˆÔØ(Ð@Õ,>Ñ,@Ô,@ˆÔÐÐr!   Ú	accesslogÚdbc                 óX   — |                      |¦  «         |                     ¦   «          d S r   ©ÚaddÚcommit©rT   r‘   r’   s      r   Úinsert_requestzAccessLogWorker.insert_request»   ó%   € Ø
�ŠˆyÑÔÐØ
�	Š	‰Œˆˆˆr!   c                 óX   — |                      |¦  «         |                     ¦   «          d S r   r”   r—   s      r   Úinsert_responsezAccessLogWorker.insert_response¿   r™   r!   Úitemc                 óö   — 	 |                       |                     | j        ¦  «        |¦  «         d S # t          $ r<}t                               d|› dt          j        ¦   «         › �¦  «         Y d }~d S d }~ww xY w)Nz Error at processing queue item: ru   )r›   rY   rV   rz   Úloggerrt   Ú	tracebackÚ
format_exc)rT   rœ   r’   Úexs       r   Úprocess_itemzAccessLogWorker.process_itemÃ   s–   € ð	\Ø× Ò  ×!2Ò!2°4Ô3EÑ!FÔ!FÈÑKÔKÐKÐKÐKøÝð 	\ð 	\ð 	\Ý�LŠLÐZ¸BÐZÐZÅ)ÔBVÑBXÔBXÐZÐZÑ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[øøøøð	\øøøs   ‚.2 ²
A8¼1A3Á3A8c           	      ó°  — 	 t          | j        j        ¦  «         d }	 | j                             ¦   «         }nH# t          $ r;}t
                               d|› dt          j        ¦   «         › �¦  «         Y d }~Œwd }~ww xY w|D ]ó}	 t          |t          ¦  «        s|€ d S |€|                      ¦   «         }|                      ||¦  «         ŒJ# t          $ r�}t
                               d|› dt          j        ¦   «         › �¦  «         	 t
                               d|                     ¦   «         › �¦  «         n1#  t
                               dt          |¦  «        › �¦  «         Y nxY wY d }~Œìd }~ww xY w|�^	 |                     ¦   «          nH# t          $ r;}t
                               d|› dt          j        ¦   «         › �¦  «         Y d }~nd }~ww xY w�ŒÖ)NTz*Error at getting items from queue client: ru   zError at processing loop: zdata: zdata(to_json() failed): zError at closing db session: )r   r‰   Údequeue_intervalÚgetrz   rž   rt   rŸ   r    rw   r�   r�   r¢   Úto_jsonr[   Úclose)rT   r’   Úitemsr¡   rœ   ÚpexÚdbexs          r   ÚrunzAccessLogWorker.runÉ   s*  € ð 	cÝ�$Ô#Ô4Ñ5Ô5Ð5ØˆBðØÔ)×-Ò-Ñ/Ô/��øÝð ð ð Ý—’ÐhÈ"ÐhÐhÕPYÔPdÑPfÔPfÐhÐhÑiÔiÐiØ����øøøøðøøøð ð Mð M�ðMÝ! $Õ(:Ñ;Ô;ð ¸t¸|Ø˜˜à�zà!×-Ò-Ñ/Ô/˜à×%Ò% d¨BÑ/Ô/Ð/Ð/øå ð Mð Mð MÝ—L’LÐ!]¸cÐ!]Ð!]ÅYÔEYÑE[ÔE[Ð!]Ð!]Ñ^Ô^Ð^ðMÝŸšÐ%>¨d¯lªl©n¬nÐ%>Ð%>Ñ?Ô?Ð?Ð?øðMÝŸšÐ%KÅÀDÁ	Ä	Ð%KÐ%KÑLÔLÐLÐLÐLøøøøøøøøøøøøðMøøøð ˆ~ðcØ—H’H‘J”J�J�JøÝ ð cð cð cÝ—L’LÐ!aÀÐ!aÐ!aÍÔI]ÑI_ÔI_Ð!aÐ!aÑbÔbÐbÐbÐbÐbÐbÐbøøøøðcøøøñ? 	csc   ž8 ¸
A=Á1A8Á8A=ÂCÂ,CÃ
E3Ã1E.Ä/D8Ä7E.Ä8,E&Å$E.Å.E3Å9F Æ
GÆ1GÇG)r   rJ   rK   r„   r[   r   rU   r   r   r˜   r›   r   r¢   r«   rM   r!   r   r†   r†   °   sÝ   € € € € € Ø0FÐTXÐjsð  VZð Að Að A¨#ð Að  DSð Að Að Að Að¨ð ¸Gð ð ð ð ð¨ð ¸Wð ð ð ð ð\ ð \°Gð \ð \ð \ð \ð!cð !cð !cð !cð !cr!   r†   ))Úabcr   r   rx   ÚloggingÚosÚtimer   rŸ   Ú
sqlalchemyr   r   r   r	   r
   r   r   Úsqlalchemy.ormr   r   r   r   Úqueueclientr   r   r   Ú	getLoggerr   rž   Úenvironr¥   rL   r   rO   r^   ri   rn   r�   ÚAccessLogBaser„   r†   rM   r!   r   ú<module>r¶      s�  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kð 
ˆÔ	˜8Ñ	$Ô	$€àœ
ŸšÐ'=Ñ>Ô>À#ÒEÐE��È5€ðAð Að Að Að Añ Aô Að AðJð ð ð ð �mñ ô ð ðð ð ð ð �}ñ ô ð ðð ð ð ð ˜-ñ ô ð ð%
ð %
ð %
ð %
ð %
�Mñ %
ô %
ð %
ðPð ð ð ð ˜ñ ô ð ð !Ð  ^Ð4Ñ4Ô4€ð $Ð #Ð #Ð #Ð #�Ñ #Ô #Ð #ð:cð :cð :cð :cð :cñ :cô :cð :cð :cð :cr!   