
    6pj!:                     *   S SK r S SKJrJrJrJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJrJrJrJr  S S	KJr  S S
KJr  S SKJr  S SKJrJrJ r   S SK!J"r"J#r#  S SK$J%r%  SSK&J'r'  SSK(J)r)  \"" S5      r*\" 5       r+  S-S jr,  S-S\S\-S\.4S jjr/SSSSSSS\SS4
S\-S\\-\\-   \\\   4   S\-S\-S\-S\-S\\-   S \\-   S!\0S"\'4S# jjr1  S.S\-S$\-S%\-S&\04S' jjr2S( r3S\\-\\-   \\\   4   S)\\-   S*\\-\4   S"\\-   4S+ jr4S*\S\-4S, jr5g)/    N)AnyDictListOptionalUnion)snapshot_downloadDEFAULT_MODEL_FOR_PIPELINE)Model)check_model_from_owner_group)
ConfigDictcheck_config)DEFAULT_MODEL_REVISIONInvokeTasks
ThirdParty)read_config)is_transformers_available)
get_logger)filter_plugin_in_whitelistregister_modelhub_reporegister_plugins_repo)Registrybuild_from_cfg)is_embedding_task   )Pipeline)is_official_hub_path	pipelinesc                    [        U [        5      (       aw  [        X5      (       ag  [        R                  R                  U 5      (       dA  [        R                  [        R                  0nUb  X$[        R                  '   [        U UUUS9n U $ [        U [        5      (       a  [        U S   [        5      (       a  [        [        U 5      5       H  n[        X   U5      (       d  M  [        R                  R                  X   5      (       a  M@  [        R                  [        R                  0nUb  X$[        R                  '   [        X   XS9X'   M     U $ )znormalize the input model, to ensure that a model str is a valid local path: in other words,
for model represented by a model id, the model shall be downloaded locally
)revision
user_agentignore_file_patternr   )r!   r"   )
isinstancestrr   ospathexistsr   KEYPIPELINEr   r   listrangelen)modelmodel_revisionthird_partyr#   r"   idxs         X/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/pipelines/builder.pynormalize_model_inputr3      s    %"6u"M"Mww~~e$$ **foo6J&-8:>>*%'%$7	9E L 
E4	 	 Za#%>%>U$C#J"$ $,.GGNN5:,F,F$jj&//:
*1<z~~..JP
 % L    cfg	task_namedefault_argsc                      [        U [        XS9$ )a
  build pipeline given model config dict.

Args:
    cfg (:obj:`ConfigDict`): config dict for model object.
    task_name (str, optional):  task name, refer to
        :obj:`Tasks` for more details.
    default_args (dict, optional): Default initialization arguments.
)	group_keyr7   )r   	PIPELINES)r5   r6   r7   s      r2   build_pipeliner;   <   s     Y)H Hr4   Ftaskr.   config_filepipeline_name	frameworkdevicer/   r#   trust_remote_codereturnc
                 H	   U c  Uc  [        S5      e[        U[        5      (       a  [        U5      S:  a  US   OUn[	        U5      nU	=(       d    Un	SnUGc  [        U[
        5      (       d/  [        U[        5      (       Ga  [        US   [
        5      (       Ga  [        XS9(       Ga  [        U[
        5      (       a	  [        XS9O[        US   US9nU(       a"  UR                  S0 5      R                  SS5      nUcu  U
R                  S5      nU b7  U R                  5       [        R                  [        R                  4;   a  Uc  SnU(       a#  U
R                  S	5      c  S
U
S	'   [        XU
5      nUb  US:w  a  U
R                  [        R                   5      nUb  U
R#                  [        R                   5        [%        UUUUS9nU(       a  UR                  S5      nUR                  SS5      n['        U5      (       d  U(       a  U	(       d  [)        S5      e[+        U5        [        U[
        5      (       a  UOUS   n[-        UU	=(       a    U5        U(       a  SU0nO [/        U5        UR0                  nOOUb  [        U[        5      (       a  US   OUn[9        US5      (       d2  [        UR:                  5      n [/        U5        UR0                  Ul        UR<                  R                  S5      (       a  UR0                  nO#[?        U 5      u  nn[%        UU5      nSU0nOSU0nU(       d!  [A        U 5      (       a   SSK!J"n  U" SSU0U
D6$ U(       d#  [K        5       (       a   SSK!J&n  U" SU UUUS.U
D6$ U(       d  SnXS'   XmS'   [Q        U5      n[S        X5        U
(       a  URU                  U
5        Ub  X.l+        U(       a	  [Y        XS9$ [Y        UU SU	0S9$ ! [2         a(  n[4        R7                  [        U5      5         SnANSnAff = f! [2         a)  n[4        R7                  [        U5      5         SnAGNjSnAff = f! [F         a    [4        RI                  S5        e f = f! [F         a  n[4        RO                  S5        UeSnAff = f)a  Factory method to build an obj:`Pipeline`.


Args:
    task (str): Task name defining which pipeline will be returned.
    model (str or List[str] or obj:`Model` or obj:list[`Model`]): (list of) model name or model object.
    preprocessor: preprocessor object.
    config_file (str, optional): path to config file.
    pipeline_name (str, optional): pipeline class name or alias name.
    framework (str, optional): framework type.
    model_revision: revision of model(s) if getting from model hub, for multiple models, expecting
    all models to have the same revision
    device (str, optional): whether to use gpu or cpu is used to do inference.
    ignore_file_pattern(`str` or `List`, *optional*, default to `None`):
        Any file pattern to be ignored in downloading, like exact file names or file extensions.
    trust_remote_code (bool, optional): Whether to allow execution of remote code or
        plugins declared in the model configuration. Defaults to False.

Return:
    pipeline (obj:`Pipeline`): pipeline object for certain task.

Examples:
    >>> # Using default model for a task
    >>> p = pipeline('image-classification')
    >>> # Using pipeline with a model name
    >>> p = pipeline('text-classification', model='damo/distilbert-base-uncased')
    >>> # Using pipeline with a model object
    >>> resnet = Model.from_pretrained('Resnet')
    >>> p = pipeline('image-classification', model=resnet)
    >>> # Using pipeline with a list of model names
    >>> p = pipeline('audio-kws', model=['damo/audio-tts', 'damo/auto-tts2'])
Nz!task or pipeline_name is requiredr   )r!   pipelinetypeexternal_engine_for_llmTllm_frameworkswiftllm)r0   r#   pluginsallow_remoteFa  Detected plugins or allow_remote field in the model configuration file, but trust_remote_code=True was not explicitly set.
To prevent potential execution of malicious code, loading has been refused.
If you trust this model repository, please pass trust_remote_code=True to pipeline().)sentence_transformers_pipeliner.   zWe could not find a suitable pipeline from modelscope, so we tried to load it using the sentence_transformers, but that also failed.)hf_pipeline)r<   r.   r?   r@   z{We couldn't find a suitable pipeline from ms, so we tried to load it using the transformers pipeline, but that also failed.gpur@   )r6   rA   )r6   r7    )-
ValueErrorr$   r+   r-   r   r%   r   r   safe_getgetlowerr   text_generationchatexternal_engine_for_llm_checkerr   r)   popr3   r   RuntimeErrorr   r   r   rD   AssertionErrorloggerinfohasattr	model_dir__dict__get_default_pipeline_infor   modelscope.utils.hf_utilrL   	Exception	exceptionr   rM   errorr   clear_llm_infoupdatepreprocessorr;   )r<   r.   rf   r=   r>   r?   r@   r/   r#   rA   kwargsmodel_id_model_trustedpipeline_propsr5   prefer_llm_pipeliner0   rJ   rK   r]   efirst_modeldefault_model_reporL   rM   s                            r2   rD   rD   K   s   V |-<==%e&*, ,03E
Q QxDI 1(;N);^NeS!!%&&:eAh+D+D#ECC 8Bs8$ 8$ "4)4!!H~*?  $'LL13%558S5F " !(*0**5N*O''DJJL!115::= - /626/ +!::o6>6=F?3(G!6); !(MU,B"(**Z^^"<K".

:>>21&$/,?	AE "%,,y"9'*ww~u'E6w??#/9J".!H#I I .g6-78;.= .=EBG( ".%'8'I\K !&,m%<N,$S)),{ DB &0&=&=%(5K;
33!+"7"78( %+.<<K( ##''
33!,!5!50I$0O-M-)*<nME$m4N -0/55	O1HHHH 799	< #	
   #7%8
^
$C6)

6'c22-/@AC 	CA * ,CF++, & (KKA''(  	?@ 		  	LL)* G		sT   *O, 	P! Q 4Q; ,
P6PP!
Q+QQ!Q8;
R!RR!
model_namemodelhub_name	overwritec                 P    U(       d  U [         ;  d   SU  S35       eX4[         U '   g)zAdd default model for a task.

Args:
    task (str): task name.
    model_name (str): model_name.
    modelhub_name (str): name for default modelhub.
    overwrite (bool): overwrite default info.
ztask z already has default model.Nr	   )r<   ro   rp   rq   s       r2   add_default_pipeline_infors     s:     55 	6D645	65 )3'Bt$r4   c                     U [         ;  a2  [        [        R                  U    R	                  5       5      S   nSnX4$ [         U    u  pX4$ )zGet default info for certain task.

Args:
    task (str): task name.

Return:
    A tuple: first element is pipeline name(model_name), second element
        is modelhub name.
r   N)r
   r+   r:   moduleskeys)r<   r>   default_models      r2   r_   r_     sY     --Y..t499;<Q? '' (B$'G$''r4   r!   rg   c           	      ^   SSK JnJn  SSKJn  [        U [        5      (       a  U S   n [        U [        5      (       d  U R                  n UR                  SS5      nUS:X  aV   SS	K
Jn  [        R                  R!                  U 5      (       a	  U" U 5      nOU n U" U5      n	U	S   R"                  n
U
(       a  gUR                  XSSSS9n
UR+                  U
5      (       a  gg ! [         a	    SS	KJn   Nf = f! [$         a*  n[&        R)                  S
U SU SU 35        S n
 S nANwS nAff = f)Nr   )ModelTypeHelperLLMAdapterRegistry   )get_model_id_from_cacher   rG    rH   )get_model_info_metaz Cannot using llm_framework with z, ignoring llm_framework=z : rI   T-)with_adaptersplit	use_cache)nlp.llm_pipelinery   rz   hub.check_modelr|   r$   r+   r%   r]   rR   swift.modelr~   ImportError	swift.llmr&   r'   r(   
model_typera   rZ   warningcontains)r.   r!   rg   ry   rz   r|   rG   r~   rh   r[   r   rl   s               r2   rV   rV   -  s.    F9%aeS!!JJ3M	67 77>>%  .u5HH	&x0Da++J
  $$d# % GJ"":.. /)  	65	6  	NN=hZ H55BO3qcK LJ	s*   #C" C8 "C54C58
D, D''D,c                     SSK Jn  U R                  SS 5        US:w  a  U R                  SS 5        UR                  5         g )Nr   )ry   rF   rI   rG   )"modelscope.utils.model_type_helperry   rW   clear_cache)rg   r>   ry   s      r2   rd   rd   T  s6    B
JJ($/

?D)!r4   )NN)NF)6r&   typingr   r   r   r   r    modelscope.hub.snapshot_downloadr   modelscope.metainfor
   modelscope.models.baser    modelscope.utils.automodel_utilsr   modelscope.utils.configr   r   modelscope.utils.constantr   r   r   r   modelscope.utils.hubr   modelscope.utils.import_utilsr   modelscope.utils.loggerr   modelscope.utils.pluginsr   r   r   modelscope.utils.registryr   r   modelscope.utils.task_utilsr   baser   utilr   r:   rZ   r3   r%   dictr;   boolrD   rs   r_   rV   rd   rO   r4   r2   <module>r      s   
 3 3 > : ( I <3 3 , C .= = ? 9  &[!		
 '+.2B %)(,H
 H!H!%H @D $"&"-C.2',xC3 xC#tCy%e<=xC xC  	xC
 xC xC &c]xC #'s)xC !%xC #xCz 4805CC C*-C-0C *.C&(($5d3i15e2= ,> $.6sm$ -1cN$ @H}$N"4 " "r4   