
     `i                     ~    	 d dl mZ n# e$ r  ed          w xY wd dlZd dlmZmZ d dlmZ  G d de          Z	dS )    )
PromptNodezMhaystack is not installed. Please install it with "pip install farm-haystack"N)CallableOptional)CharacterLevelParserc                        e Zd ZdZ G d dej                  Zdddee         f fdZ	dee
         fd	Zdefd
Z fdZ xZS )LMFormatEnforcerPromptNodez[A prompt node for Haystack V1 API that activates the LMFormatEnforcer on the generated textc                       e Zd ZdZdS )$LMFormatEnforcerPromptNode.ModelTypeHFLocalInvocationLayerN)__name__
__module____qualname__HUGGINGFACE     |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/lmformatenforcer/integrations/haystackv1.py	ModelTyper
      s        .r   r   N)character_level_parserr   c                     t                      j        |i | || _        |                                 | _        |                                 | _        dS )a  Create a new prompt node that activates the LMFormatEnforcer on the generated text. See PromptNode
        documentation for all of the regular arguments.
        :param character_level_parser: A CharacterLevelParser that will be used to enforce the format of the generatedN)super__init__r   _resolve_model_type
model_type_prepare_token_enforcer_fntoken_enforcer_fn)selfr   argskwargs	__class__s       r   r   z#LMFormatEnforcerPromptNode.__init__   sV     	$)&)))&<#2244!%!@!@!B!Br   returnc                     | j         sd S | j        t          j        j        k    r-| j        j        j        j        }ddl	m
}  ||| j                   S t          d| j        j                   )Nr   )+build_transformers_prefix_allowed_tokens_fnz.Token enforcer not implemented for model type )r   r   r   r   r   prompt_modelmodel_invocation_layerpipe	tokenizer*lmformatenforcer.integrations.transformersr"   NotImplementedErrorname)r   r&   r"   s      r   r   z5LMFormatEnforcerPromptNode._prepare_token_enforcer_fn   s}    * 	4?8BNNN)@EOInnnnnn>>y$Jefff!"iSWSbSg"i"ijjjr   c                     | j         j        j        j        }	 t                              |          S # t          $ r? d                    d t          j        D                       }t          d| d|           w xY w)N,c              3   >   K   | ]}t          |j                  V  d S )N)strr)   ).0ts     r   	<genexpr>zALMFormatEnforcerPromptNode._resolve_model_type.<locals>.<genexpr>'   s*      (c(cQV(c(c(c(c(c(cr   zUnsupported invocation layer: z. Must be one of )r#   r$   r   r   r   r   
ValueErrorjoin)r   invocation_layer_namesupported_stringss      r   r   z.LMFormatEnforcerPromptNode._resolve_model_type"   s     $ 1 H R [	D-778MNNN 	D 	D 	D #(c(c>X>b(c(c(c c c C>S C C/@C C D D D	Ds
   2 A	A;c                     t                                                      }| j        r3| j        t          j        j        k    rd|vri |d<   | j        |d         d<   |S )Ngeneration_kwargsprefix_allowed_tokens_fn)r   _prepare_model_kwargsr   r   r   r   r   )r   model_kwargsr   s     r   r8   z0LMFormatEnforcerPromptNode._prepare_model_kwargs+   sh    ww4466! 	g"<"F"RRR&l::8:L!45PTPf012LMr   )r   r   r   __doc__enumEnumr   r   r   r   r   r   r   r8   __classcell__)r   s   @r   r   r   
   s        ee/ / / / /DI / / / X\ C C Ch?S6T C C C C C CkHX,> k k k kDY D D D D        r   r   )
haystack.nodesr   ImportErrorr;   typingr   r   lmformatenforcerr   r   r   r   r   <module>rB      s   g))))))) g g g
+e
f
ffg  % % % % % % % % 1 1 1 1 1 1( ( ( ( ( ( ( ( ( (s   	 