
    *i(                     l    S SK r S SKJr  S SKrS SKJr   " S S\ R                  5      r " S S\5      r	g)    N)Anyc                       \ rS rSr\R
                  S\R                  \R                     S\
S\R                  \R                     4S j5       rSrg)LlamaDraftModel	   	input_idskwargsreturnc                    [        5       eN)NotImplementedErrorselfr   r   s      Y/var/www/html/ai-backend/venv/lib/python3.13/site-packages/llama_cpp/llama_speculative.py__call__LlamaDraftModel.__call__
   s     "##     N)__name__
__module____qualname____firstlineno__abcabstractmethodnptNDArraynpintcr   r   __static_attributes__r   r   r   r   r   	   sL    $RWW-$<?$	RWW	$ $r   r   c                       \ rS rSrSrSS\S\4S jjr\S\R                  \
R                     S\S\4S j5       rS\R                  \
R                     S\S	\R                  \
R                     4S
 jrSrg)LlamaPromptLookupDecoding   z>Based on https://github.com/apoorvumang/prompt-lookup-decodingmax_ngram_sizenum_pred_tokensc                     Xl         X l        g r   r"   r#   )r   r"   r#   s      r   __init__"LlamaPromptLookupDecoding.__init__   s    ,.r   r   c                    U R                   S   n[        [        XS-
  5      SS5       H  n[        R                  R
                  R                  X45      nX* S  n[        R                  " XV:H  SS9n[        R                  " U5      S   nU H#  n	X-   n
X-   n[        X5      nX:  d  M  X
U s  s  $    M     [        R                  " / [        R                  S9$ )Nr      )axis)dtype)shaperangeminr   libstride_trickssliding_window_viewallnonzeroarrayr   )r   r"   r#   input_length
ngram_sizewindowsngram_arraymatchesmatch_indicesidx	start_idxend_idxs               r   find_candidate_pred_tokens4LlamaPromptLookupDecoding.find_candidate_pred_tokens   s     !q)N14D Eq"MJff**>>y-XG $KL1K ffW3!<G JJw/2M %,	#5g4&$w77 % N. xx"''**r   r   r	   c                L    U R                  UU R                  U R                  S9$ )N)r   r"   r#   )r?   r"   r#   r   s      r   r   "LlamaPromptLookupDecoding.__call__9   s1     .... 00 / 
 	
r   r%   N)   
   )r   r   r   r   __doc__intr&   staticmethodr   r   r   r   r?   r   r   r   r   r   r   r    r       s    H/s / / +;;rww'++ + +@
RWW-
<?
	RWW	
r   r    )
r   typingr   numpyr   numpy.typingr   ABCr   r    r   r   r   <module>rL      s-    
   $cgg $/
 /
r   