
    9i2                        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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  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4	S\*S\\*\\*   \\\   4   S\*S\*S\*S\*S\\*   S\\*   S\$4S  jjr-  S+S\*S!\*S"\*S#\.4S$ jjr/S% r0S\\*\\*   \\\   4   S&\\*   S'\\*\4   S\\*   4S( jr1S'\S\*4S) jr2g),    N)AnyDictListOptionalUnion)snapshot_downloadDEFAULT_MODEL_FOR_PIPELINE)Model)
ConfigDictcheck_config)DEFAULT_MODEL_REVISIONInvokeTasks
ThirdParty)read_config)is_transformers_available)
get_logger)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         \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/builder.pynormalize_model_inputr1      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_keyr5   )r   	PIPELINES)r3   r4   r5   s      r0   build_pipeliner9   :   s     Y)H Hr2   taskr,   config_filepipeline_name	frameworkdevicer-   r!   returnc	                    U c  Uc  [        S5      e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R                  S5      5        [%        UUR                  SS5      5        U(       a  SU0n
O ['        U5        UR(                  n
OOUb  [        U[        5      (       a  US   OUn[1        US5      (       d2  [        UR2                  5      n ['        U5        UR(                  Ul        UR4                  R                  S5      (       a  UR(                  n
O#[7        U 5      u  nn[!        UU5      nSU0n
OSU0n
U
(       d!  [9        U 5      (       a   SSKJn  U" SSU0U	D6$ U
(       d#  [C        5       (       a   SSKJ"n  U" SU UUUS.U	D6$ U(       d  SnXS'   XjS'   [I        U
5      n[K        X5        U	(       a  URM                  U	5        Ub  X+l'        [Q        XS9$ ! [*         a(  n[,        R/                  [        U5      5         SnANSnAff = f! [*         a)  n[,        R/                  [        U5      5         SnAGNVSnAff = f! [>         a    [,        RA                  S5        e f = f! [>         a  n[,        RG                  S5        UeSnAff = f)ay  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.

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)r.   r!   pluginsallow_remoteF)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>   )r4    ))
ValueErrorr"   r#   r)   r   r   safe_getgetlowerr   text_generationchatexternal_engine_for_llm_checkerr   r'   popr1   r   r   r   rA   AssertionErrorloggerinfohasattr	model_dir__dict__get_default_pipeline_infor   modelscope.utils.hf_utilrI   	Exception	exceptionr   rJ   errorr   clear_llm_infoupdatepreprocessorr9   )r:   r,   rb   r;   r<   r=   r>   r-   r!   kwargspipeline_propsr3   prefer_llm_pipeliner.   efirst_modeldefault_model_reporI   rJ   s                      r0   rA   rA   I   s   P |-<==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*AB*5+.77>5+IK !&,m%<N,$S)),] Dd &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F++, & (KKA''(  	?@ 		  	LL)* G		sT   L> /M3 3N) O >
M0M++M03
N&=N!!N&)!O

O3O..O3
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:   ri   rj   rk   s       r0   add_default_pipeline_inform      s:     55 	6D645	65 )3'Bt$r2   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)   r8   moduleskeys)r:   r<   default_models      r0   r[   r[      sY     --Y..t499;<Q? '' (B$'G$''r2   r   rc   c           	      0   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  aU  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*  n["        R%                  S
U SU SU 35        S n
 S nANaS nAff = f)Nr   )ModelTypeHelperLLMAdapterRegistry   )get_model_id_from_cacher   rD    rE   )get_model_info_metaz Cannot using llm_framework with z, ignoring llm_framework=z : rF   T-)with_adaptersplit	use_cache)nlp.llm_pipeliners   rt   hub.check_modelrv   r"   r)   r#   rY   rO   	swift.llmrx   r$   r%   r&   
model_typer]   rV   warningcontains)r,   r   rc   rs   rt   rv   rD   rx   model_idrW   r   rf   s               r0   rS   rS     s    F9%aeS!!JJ3M177>>%  .u5HH	&x0Da++J
  $$d# % GJ"":.. /  	NN=hZ H55BO3qcK LJ	s   C! !
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   )rs   rC   rF   rD   )"modelscope.utils.model_type_helperrs   rT   clear_cache)rc   r<   rs   s      r0   r`   r`   3  s6    B
JJ($/

?D)!r2   )NN)NF)3r$   typingr   r   r   r   r    modelscope.hub.snapshot_downloadr   modelscope.metainfor
   modelscope.models.baser   modelscope.utils.configr   r   modelscope.utils.constantr   r   r   r   modelscope.utils.hubr   modelscope.utils.import_utilsr   modelscope.utils.loggerr   modelscope.utils.pluginsr   r   modelscope.utils.registryr   r   modelscope.utils.task_utilsr   baser   utilr   r8   rV   r1   r#   dictr9   rA   boolrm   r[   rS   r`   rL   r2   r0   <module>r      s   
 3 3 > : ( <3 3 , C .= > 9  &[!		
 '+.2B %)(,H
 H!H!%H @D $"&"-C.2\/3 \/#tCy%e<=\/ \/  	\/
 \/ \/ &c]\/ #'s)\/ #\/B 4805CC C*-C-0C *.C&((!5d3i15e2= ,> !.6sm! -1cN! @H}!H"4 " "r2   