
    9i                         S SK JrJrJrJrJr  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  S	S
KJr  S\S\S\\\\4      S\4S jr\R0                  " \R2                  \
R4                  S9\R0                  " \R2                  \
R6                  S9\R0                  " \R8                  \
R4                  S9\R0                  " \R8                  \
R6                  S9 " S S\\\5      5       5       5       5       rg)    )DictListOptionalTupleUnionN)LlamaForCausalLM)Models)
TorchModel)MODELS)
OutputKeys)Tasks   )MsModelMixinsystemtexthistory
max_lengthc                    SU  S3nU" USSS9R                   nUR                  5        S3nU" USSS9R                   nUR                  S   UR                  S   -   n	X:  a  [        SU	 S	U 35      eS
n
/ nUS S S2    H  u  p[	        U[
        5      (       d   e[	        U[
        5      (       d   eUR                  5        SUR                  5        S3nU" USSS9R                   nXR                  S   -   U:  a    OX-   n
U/U-   nXR                  S   -  n	M     XZU/nU/U-   U/-   nS
R                  U5      [        R                  " USS94$ )Nz<s>[INST] <<SYS>>
z
<</SYS>>

Fpt)add_special_tokensreturn_tensorsz [/INST]zprepend prompt length z is bigger than max_length  z	 [/INST] z </s><s>[INST] r   )dim)		input_idsstripshapeRuntimeError
isinstancestrjointorchcat)r   r   r   r   	tokenizersystem_prompt
system_idstext_prompttext_idsprompt_lengthhistory_prompthistory_ids_listuserbotround_prompt	round_idsprompt_listprompt_ids_lists                     k/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/llama/text_generation.pyget_chat_promptr3   !   s   )&@M%FFOi  ZZ\N(+KdDDMI  $$R(8>>"+==M!$]O3Nzl[
 	
 NTrT]	$$$$$#s####**,y_MU!!* 	 ??2..;):N ){-==__R00M # !+>K!l%55
BO77;?!BBB    )module_namec                   &    \ rS rSrS\S\4S jrSrg)LlamaForTextGenerationJ   inputreturnc                 z   SS K nUR                  U5      nSU;  a  SnOUS   nUR                  S5        SU;  a  SnOUS   nUR                  S5        SU;  a  / nO%UR                  US   5      nUR                  S5        SU;  a  SUS'   [        UUUUS   US9u  pU	R                  U R                  5      n
U R
                  " U
40 UD6nUS S 2U
R                  S	   S 24   nUR                  US
SS9S   nUR                  5       nUR                  X\45        [        R                  U[        R                  U0$ )Nr   r   r   r   r   r   i   )r   r   r   r   r$   r   TF)skip_special_tokensclean_up_tokenization_spaces)copypopr3   todevicegenerater   batch_decoder   appendr   RESPONSEHISTORY)selfr9   r$   r>   
gen_kwargsr   r   r   prompt
prompt_idsr   generate_idsresponses                r2   chatLlamaForTextGeneration.chatP   sX   YYu%
DfDNN6"5 F/FNN8$E!G#'99U9-=#>GNN9%z)'+J|$,!,/! MM$++.	}}Y=*=#Ayq'9':$:;)) $). * 0 123 >>#'(##Xz/A/A7KKr4    N)__name__
__module____qualname____firstlineno__r   rM   __static_attributes__rO   r4   r2   r7   r7   J   s    )L$ )Ld )Lr4   r7   )typingr   r   r   r   r   r"   transformers.models.llamar   modelscope.metainfor	   modelscope.models.baser
   modelscope.models.builderr   modelscope.outputsr   modelscope.utils.constantr   backboner   r    intr3   register_modulerM   llama2llamatext_generationr7   rO   r4   r2   <module>rb      s   ( 6 5  6 & - , ) + "%CC %Cs %CT%S/5J %C #%CR 

>

=--6==I--6<<H+L\+;Z +L I J > ?+Lr4   