§
    XÅj‡  ã                   ó  — d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ  ee¦  «        Z edg¬¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z e !                    d¦  «         ee¦  «         e ed¦  «        ¦  «        fde"dededefd„¦   «         Z#e $                    d¦  «         ee¦  «         e ed¦  «        ¦  «        fde"dedededef
d„¦   «         Z%e &                    d¦  «         ee¦  «         e ed¦  «        ¦  «        fde"de dededef
d„¦   «         Z'e !                    d¦  «         e ed¦  «        ¦  «        fdedefd„¦   «         Z(d S )!é    )ÚAny)Ú	APIRouterÚDependsÚHTTPExceptionÚRequest)Ú	BaseModelÚField)ÚSession)Úget_db)Úrequire_readÚrequire_update)ÚKnowledgeBaseNotFoundError)Úget_translator)ÚKnowledgeBaseÚUser)Úget_document_processor)Ú
get_loggerzknowledge-pipeline)Útagsc                   óø   — e Zd ZU  edd¬¦  «        Zeed<    edddd¬	¦  «        Zeed
<    edddd¬	¦  «        Z	eed<    edd¬¦  «        Z
eeef         dz  ed<    edd¬¦  «        Zeeef         dz  ed<   dS )ÚPipelineConfigÚ	recursiveõ   åˆ†å—ç­–ç•¥©ÚdefaultÚdescriptionÚchunk_strategyéè  éd   é'  õ	   å—å¤§å°©r   ÚgeÚler   Ú
chunk_sizeéÈ   r   õ   é‡å å¤§å°Úchunk_overlapNu   é¢„å¤„ç†è§„åˆ™Úpreprocessing_rulesu   å‘é‡åŒ–é…ç½®Úvectorization_config)Ú__name__Ú
__module__Ú__qualname__r	   r   ÚstrÚ__annotations__r$   Úintr'   r(   Údictr   r)   © ó    úE/lsinfo/ai/hellotax_ai/base_platform/app/api/v1/knowledge/pipeline.pyr   r      sÓ   € € € € € € Ø˜%¨ÀÐPÑPÔP€NCÐPÐPÑPØe D¨S°UÈÐTÑTÔT€JÐTÐTÑTØ˜ s¨q°TÀ~ÐVÑVÔV€M3ÐVÐVÑVØ16°¸tÐQbÐ1cÑ1cÔ1cÐ˜˜c 3˜hœ¨$Ñ.ÐcÐcÑcØ27°%ÀÐRcÐ2dÑ2dÔ2dÐ˜$˜s C˜xœ.¨4Ñ/ÐdÐdÑdÐdÐdr2   r   c                   ó¨   — e Zd ZU  edd¬¦  «        Zeed<    edd¬¦  «        Zeed<    ed	d
dd¬¦  «        Ze	ed<    eddd	d¬¦  «        Z
e	ed<   dS )ÚPreviewRequest.u   ç¤ºä¾‹æ–‡æœ¬)r   Útextr   r   r   r   r   r   r   r    r!   r$   r%   r   r&   r'   N)r*   r+   r,   r	   r6   r-   r.   r   r$   r/   r'   r1   r2   r3   r5   r5      s–   € € € € € € Øc ~Ð6Ñ6Ô6€Dˆ#Ð6Ð6Ñ6Ø˜%¨ÀÐPÑPÔP€NCÐPÐPÑPØe D¨S°UÈÐTÑTÔT€JÐTÐTÑTØ˜ s¨q°TÀ~ÐVÑVÔV€M3ÐVÐVÑVÐVÐVr2   r5   z/{base_id}/pipeline-configÚknowledge_basesÚbase_idÚrequestÚdbÚcurrent_userc                 óø   — t          |¦  «         |                     t          ¦  «                             t          j        | k    ¦  «                             ¦   «         }|st          | ¦  «        ‚ddddddœdddœd	œS )
Nr   r   r%   TF)Úremove_extra_whitespaceÚremove_special_charsé
   )Úauto_vectorizeÚ
batch_size)r   r$   r'   r(   r)   )r   Úqueryr   ÚfilterÚidÚfirstr   )r8   r9   r:   r;   Úkbs        r3   Úget_pipeline_configrG   $   sŠ   € õ 7ÑÔÐØ	Š•-Ñ	 Ô	 ×	'Ò	'­Ô(8¸GÒ(CÑ	DÔ	D×	JÒ	JÑ	LÔ	L€BØð 2Ý(¨Ñ1Ô1Ð1à%ØØØ;?ÐY^Ð_Ð_Ø37ÀrÐ JÐ Jðð ð r2   Úconfigc                 óŽ  — t          |¦  «        }|                     t          ¦  «                             t          j        | k    ¦  «                             ¦   «         }|st          | ¦  «        ‚t                               | ¬¦  «         	                    d¦  «         d| 
                    d¦  «        |                     ¦   «         dœS )N©Úpipeline_idzpipeline config updatedTzpipeline.config_updated)ÚsuccessÚmessagerH   )r   rB   r   rC   rD   rE   r   ÚloggerÚbindÚinfoÚtÚ
model_dump)r8   rH   r9   r:   r;   rQ   rF   s          r3   Úupdate_pipeline_configrS   8   s®   € õ 	wÑÔ€AØ	Š•-Ñ	 Ô	 ×	'Ò	'­Ô(8¸GÒ(CÑ	DÔ	D×	JÒ	JÑ	LÔ	L€BØð 2Ý(¨Ñ1Ô1Ð1Ý
‡K‚K˜G€KÑ$Ô$×)Ò)Ð*CÑDÔDÐDàØ—3’3Ð0Ñ1Ô1Ø×#Ò#Ñ%Ô%ðð ð r2   z/{base_id}/pipeline-previewÚpreview_requestc           	      ód  — t          |¦  «        }|                     t          ¦  «                             t          j        | k    ¦  «                             ¦   «         }|st          | ¦  «        ‚	 t          ¦   «         }|                     |j	        |j
        |j        |j        ¬¦  «        }|S # t          $ ry}	t                               | ¬¦  «                             dt#          |	¦  «        ¬¦  «         t%          d|                     d¦  «        › dt#          |	¦  «        › ¬¦  «        d ‚d }	~	ww xY w)	N)r6   Ústrategyr$   r'   rJ   z pipeline preview failed: {error})Úerroréô  zpipeline.preview_failedz: )Ústatus_codeÚdetail)r   rB   r   rC   rD   rE   r   r   Úpreview_chunkingr6   r   r$   r'   Ú	ExceptionrN   rO   Úwarningr-   r   rQ   )
r8   rT   r9   r:   r;   rQ   rF   Ú	processorÚresultÚes
             r3   Úpreview_pipelinera   L   s4  € õ 	wÑÔ€AØ	Š•-Ñ	 Ô	 ×	'Ò	'­Ô(8¸GÒ(CÑ	DÔ	D×	JÒ	JÑ	LÔ	L€BØð 2Ý(¨Ñ1Ô1Ð1ðmÝ*Ñ,Ô,ˆ	Ø×+Ò+Ø Ô%Ø$Ô3Ø&Ô1Ø)Ô7ð	 ,ñ 
ô 
ˆð ˆøÝð mð mð mÝŠ ˆÑ(Ô(×0Ò0Ð1SÕ[^Ð_`Ñ[aÔ[aÐ0ÑbÔbÐbÝ¨°q·s²sÐ;TÑ7UÔ7UÐ4aÐ4aÕY\Ð]^ÑY_ÔY_Ð4aÐ4aÐbÑbÔbÐhlÐløøøøðmøøøs   Á/<B, Â,
D/Â6A4D*Ä*D/z/chunking-strategiesc           	      ó4   — dddddddœdd	d
dddœddddddœgiS )NÚ
strategiesr   u   é€’å½’å­—ç¬¦åˆ†å‰²u?   æ ¹æ®å¤šä¸ªåˆ†éš”ç¬¦é€’å½’åˆ†å‰²æ–‡æœ¬ï¼Œé€‚åˆå¤§å¤šæ•°åœºæ™¯r   r%   )rD   Únamer   Údefault_chunk_sizeÚdefault_overlapÚ	characteru   å­—ç¬¦åˆ†å‰²u'   æŒ‰å›ºå®šå­—ç¬¦æ•°åˆ†å‰²ï¼Œç®€å•ç›´æŽ¥Útokenu   Tokenåˆ†å‰²u2   æŒ‰Tokenæ•°é‡åˆ†å‰²ï¼Œé€‚åˆæŽ§åˆ¶APIè°ƒç”¨æˆæœ¬rX   é2   r1   )r9   r;   s     r3   Úget_chunking_strategiesrj   f   se   € ð
 	à!Ø,Ø`Ø&*Ø#&ðð ð "Ø&ØHØ&*Ø#&ðð ð Ø%ØSØ&)Ø#%ðð ð
ðð r2   N))Útypingr   Úfastapir   r   r   r   Úpydanticr   r	   Úsqlalchemy.ormr
   Úapp.api.depsr   Úapp.api.permissionsr   r   Úapp.core.exceptionsr   Úapp.core.i18nr   Ú
app.modelsr   r   Ú-app.services.rag.langchain_document_processorr   Úcommon_loggingr   r*   rN   Úrouterr   r5   Úgetr/   rG   ÚputrS   Úpostra   rj   r1   r2   r3   ú<module>rz      so  ðØ Ð Ð Ð Ð Ð à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø :Ð :Ð :Ð :Ð :Ð :Ø (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø PÐ PÐ PÐ PÐ PÐ Pà %Ð %Ð %Ð %Ð %Ð %à	ˆHÑ	Ô	€à	ˆÐ-Ð.Ð	/Ñ	/Ô	/€ðeð eð eð eð eYñ eô eð eðWð Wð Wð Wð WYñ Wô Wð Wð ‡‚Ð(Ñ)Ô)ð '˜&‘/”/Ø ˜  Ð.?Ñ!@Ô!@ÑAÔAð	ð Øðàðð 	ðð ð	ð ð ñ *Ô)ðð& ‡‚Ð(Ñ)Ô)ð
 '˜&‘/”/Ø ˜  Ð0AÑ!BÔ!BÑCÔCðð Øðàðð ðð 	ð	ð
 ðð ð ñ *Ô)ðð& ‡‚Ð*Ñ+Ô+ð
 '˜&‘/”/Ø ˜  Ð.?Ñ!@Ô!@ÑAÔAðmð mØðmà#ðmð ðmð 	ð	mð
 ðmð mð mñ ,Ô+ðmð2 ‡‚Ð"Ñ#Ô#à+2¨7°<°<Ð@QÑ3RÔ3RÑ+SÔ+Sðð ØðØ$(ðð ð ñ $Ô#ðð ð r2   