
    9i                         S SK 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
  S SKJrJr  S SKJr  S S	KJr  S S
KJrJr  S/r\
R,                  " \R.                  \R0                  S9 " S S\5      5       rg)    N)Dict)Models)
TorchModel)Tensor)MODELS)SpaceGeneratorSpaceModelBase)MultiWOZBPETextField)Config)	ModelFileTasksSpaceForDialogModeling)module_namec                   V   ^  \ rS rSrS\4U 4S jjrS\\\4   S\\\4   4S jrSr	U =r
$ )r      	model_dirc           	      f  >^  [         TT ]  " U/UQ70 UD6  SSKJn  UT l        UR                  S[        R                  " [        R                  R                  T R                  [        R                  5      5      5      T l        SSKnSU;  d	  US   S:X  a!  UR                  R!                  5       (       a  SOST R                  l        UR                  S	[%        T R                  T R                  S
95      T l        [(        R*                  " T R                  T R&                  S9T l        [.        R*                  " UT R                  T R&                  T R,                  S9T l        U 4S jnU" T R0                  UT R                  T R&                  SS9T l        T R2                  R5                  5         g)a7  initialize the test generation model from the `model_dir` path.

Args:
    model_dir (`str`):
        The model path.
    text_field (`BPETextField`, *optional*, defaults to `MultiWOZBPETextField`):
        The text field.
    config (`Config`, *optional*, defaults to config in model hub):
        The config.
r   )MultiWOZTrainerconfigNdevicegpuTF
text_field)r   r   )reader)r   r   r   	generatorc                    > SSK nUR                  U 5      n TR                  R                  (       a  U R	                  5       $ U $ )z
numpy array -> tensor
r   N)torchtensorr   use_gpucuda)arrayr   selfs     k/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/space/dialog_modeling.py	to_tensor2SpaceForDialogModeling.__init__.<locals>.to_tensor:   s3     LL'E#';;#6#65::<AEA    )modelr#   r   r   	evaluator)super__init__1modelscope.trainers.nlp.space.trainer.gen_trainerr   r   popr   	from_fileospathjoinr   CONFIGURATIONr   r   r   is_availabler   r
   r   r   creater   r	   r&   trainerload)r!   r   argskwargsr   r   r#   	__class__s   `      r"   r)   SpaceForDialogModeling.__init__   s\    	4T4V4U"jjT^^Y-D-DEGH
 	F"fX&6'**1133 #9> 	 !** t~~NP (..KK1#**;;??nn	&
	B '**;;?? 	r%   inputreturnc                 r    US   nUS   nUS   nUS   nUS   nU R                   R                  UUUUUS9nU$ )a{  return the result by the model

Args:
    input (Dict[str, Tensor]): the preprocessed data

Returns:
    Dict[str, Tensor]: results
        Example:
            {
                'labels': array([1,192,321,12]), # label
                'resp': array([293,1023,123,1123]), #vocab label for response
                'bspn': array([123,321,2,24,1 ]),
                'aspn': array([47,8345,32,29,1983]),
                'db': array([19, 24, 20]),
            }

Examples:
    >>> from modelscope.hub.snapshot_download import snapshot_download
    >>> from modelscope.models.nlp import SpaceForDialogModeling
    >>> from modelscope.preprocessors import DialogModelingPreprocessor
    >>> cache_path = snapshot_download('damo/nlp_space_dialog-modeling')
    >>> preprocessor = DialogModelingPreprocessor(model_dir=cache_path)
    >>> model = SpaceForDialogModeling(model_dir=cache_path,
            text_field=preprocessor.text_field,
            config=preprocessor.config)
    >>> print(model(preprocessor({
            'user_input': 'i would like a taxi from saint john 's college to pizza hut fen ditton .',
            'history': {}
        })))

first_turnbatch	prompt_idlabelshistory)r<   r=   r>   r?   old_pv_turn)r3   forward)r!   r9   r<   r=   r>   r?   rA   pv_turns           r"   rB   SpaceForDialogModeling.forwardJ   sd    @ <(
g+&	xI&,,&&!# ' % r%   )r   r   r&   r   r   r3   )__name__
__module____qualname____firstlineno__strr)   r   r   rB   __static_attributes____classcell__)r7   s   @r"   r   r      s:    2# 2h-T#v+. -4V3D - -r%   )r-   typingr   modelscope.metainfor   modelscope.modelsr   modelscope.models.baser   modelscope.models.builderr   modelscope.models.nlp.spacer   r	   modelscope.preprocessors.nlpr
   modelscope.utils.configr   modelscope.utils.constantr   r   __all__register_moduletask_oriented_conversationspace_modelingr    r%   r"   <module>rZ      si    
  & ( ) , F = * 6#
$ 	$$&2G2GIcZ cIcr%   