§
    šŠtj�,  ã                  óÊ   — d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ  ej        e¦  «        Z G d„ d	e¦  «        ZdS )
é    )ÚannotationsN)	ÚAnyÚCallableÚDictÚIteratorÚListÚLiteralÚOptionalÚTupleÚUnion)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)Ú	BaseModelÚFieldÚmodel_validatorc                  óª  — e Zd ZU dZdZded<   ded<   	 dZded	<   	 d
Zded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	  ee¬¦  «        Zded<   	  ed¬¦  «        d0d"„¦   «         Zd0d#„Zed1d$„¦   «         Zed2d%„¦   «         Zed2d&„¦   «         Zed3d'„¦   «         Z	 	 d4d5d,„Z	 	 d4d6d.„Zed3d/„¦   «         ZdS )7ÚOutlinesz%LLM wrapper for the Outlines library.Nr   ÚclientÚstrÚmodelÚtransformerszKLiteral['llamacpp', 'transformers', 'transformers_vision', 'vllm', 'mlxlm']Úbackendé   ÚintÚ
max_tokensúOptional[List[str]]ÚstopTÚboolÚ	streamingzOptional[str]ÚregexzOptional[Union[type, str]]Útype_constraintsz*Optional[Union[BaseModel, Dict, Callable]]Újson_schemaÚgrammarzOptional[Any]Úcustom_generator)Údefault_factoryúDict[str, Any]Úmodel_kwargsÚafter)ÚmodeÚreturnú
'Outlines'c                ó
  — t          t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        t          | j        ¦  «        g¦  «        }|dk    rt          d¦  «        ‚|                      ¦   «         S )z@Validate that outlines is installed and create a model instance.é   z_Either none or exactly one of regex, type_constraints, json_schema, or grammar can be provided.)Úsumr   r!   r"   r#   r$   Ú
ValueErrorÚbuild_client)ÚselfÚnum_constraintss     ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/outlines.pyÚvalidate_environmentzOutlines.validate_environmentŽ   s†   € õ å�T”ZÑ Ô Ý�TÔ*Ñ+Ô+Ý�TÔ%Ñ&Ô&Ý�T”\Ñ"Ô"ð	ñ
ô 
ˆð ˜QÒÐÝð;ñô ð ð × Ò Ñ"Ô"Ð"ó    c                ó°  — 	 dd l m} n# t          $ r t          d¦  «        ‚w xY wdd„}| j        dk    rfd	| j        v r'| j                             d
d¦  «        \  }}}|› d
|› �}nt          d¦  «        ‚ |dg¦  «          |j        ||fi | j        ¤Ž| _	        �n;| j        dk    r, |g d¢¦  «          |j
        | j        fi | j        ¤Ž| _	        �n| j        dk    rR |g d¢¦  «         ddl
m} t          |d¦  «        st          d¦  «        ‚ |j        | j        fd|i| j        ¤Ž| _	        n§| j        dk    rPt          j        ¦   «         dk    rt          d¦  «        ‚ |dg¦  «          |j        | j        fi | j        ¤Ž| _	        nL| j        dk    r* |dg¦  «          |j        | j        fi | j        ¤Ž| _	        nt          d| j        › �¦  «        ‚| S )Nr   zUCould not import the Outlines library. Please install it with `pip install outlines`.Úpackagesú!List[Union[str, Tuple[str, str]]]r+   ÚNonec                ó˜   — d„ | D ¦   «         }|r;t          dd                     |¦  «        › dd                     |¦  «        › �¦  «        ‚d S )Nc                óÆ   — g | ]^}t           j                             t          |t          ¦  «        r|d          n|¦  «        	 ­?t          |t
          ¦  «        r|n|d         ‘Œ_S )r.   Nr   )Ú	importlibÚutilÚ	find_specÚ
isinstanceÚtupler   )Ú.0Úpkgs     r4   ú
<listcomp>zKOutlines.build_client.<locals>.check_packages_installed.<locals>.<listcomp>¬   sr   € ð  ð  ð  àÝ”>×+Ò+µjÀÅeÑ6LÔ6LÐ,U¨C°¬F¨FÐRUÑVÔVØðõ " #¥sÑ+Ô+Ð7��°°Q´ðð ð r6   zMissing packages: z, z.. You can install them with:

    pip install ú )ÚImportErrorÚjoin)r8   Úmissing_packagess     r4   Úcheck_packages_installedz7Outlines.build_client.<locals>.check_packages_installed©   s„   € ð ð  à#ð ñ  ô  Ðð  ð Ý!ðD¨¯ªÐ3CÑ)DÔ)Dð Dð Dà'*§x¢xÐ0@Ñ'AÔ'AðDð Dñô ð ðð r6   Úllamacppz.ggufú/é   z.GGUF file_name must be provided for llama.cpp.)zllama-cpp-pythonÚ	llama_cppr   )r   ÚtorchÚdatasetsÚtransformers_vision)r   rO   ÚtorchvisionÚPILÚ
flash_attn)Ú!LlavaNextForConditionalGenerationzZtransformers_vision backend is not supported, please install the correct outlines version.Úmodel_classÚvllmÚDarwinz'vLLM backend is not supported on macOS.ÚmlxlmÚmlxzUnsupported backend: )r8   r9   r+   r:   )Úoutlines.modelsÚmodelsrF   r   r   Úsplitr0   rJ   r(   r   r   rT   ÚhasattrrP   ÚplatformÚsystemrV   rX   )r2   r[   rI   ÚcreatorÚ	repo_nameÚ	file_nameÚrepo_idrT   s           r4   r1   zOutlines.build_client    s±  € ð	Ø,Ð,Ð,Ð,Ð,Ð,Ð,øÝð 	ð 	ð 	ÝðAñô ð ð	øøøð	ð 	ð 	ð 	ð  Œ<˜:Ò%Ð%Ø˜$œ*Ð$Ð$Ø04´
×0@Ò0@ÀÀaÑ0HÔ0HÑ-�˜ IØ$Ð2Ð2 yÐ2Ð2��å Ð!QÑRÔRÐRØ$Ð$Ð&GÐ%HÑIÔIÐIØ)˜&œ/¨'°9ÐRÐRÀÔ@QÐRÐRˆDŒK‰KØŒ\˜^Ò+Ð+Ø$Ð$Ð%JÐ%JÐ%JÑKÔKÐKØ-˜&Ô-¨d¬jÐNÐN¸DÔ<MÐNÐNˆDŒK‰KØŒ\Ð2Ò2Ð2Ø$Ð$ðð ð ñô ð ð GÐFÐFÐFÐFÐFå˜6Ð#8Ñ9Ô9ð Ý ðCñô ð ð 5˜&Ô4Ø”
ðð à=ðð Ô#ðð ˆDŒKˆKð
 Œ\˜VÒ#Ð#ÝŒÑ Ô  HÒ,Ð,Ý Ð!JÑKÔKÐKØ$Ð$ f XÑ.Ô.Ð.Ø%˜&œ+ d¤jÐFÐF°DÔ4EÐFÐFˆDŒKˆKØŒ\˜WÒ$Ð$Ø$Ð$ e WÑ-Ô-Ð-Ø&˜&œ, t¤zÐGÐG°TÔ5FÐGÐGˆDŒKˆKåÐC°T´\ÐCÐCÑDÔDÐDàˆs   ‚	 ‰#c                ó   — dS )NÚoutlines© ©r2   s    r4   Ú	_llm_typezOutlines._llm_typeç   s   € àˆzr6   c                ó.   — | j         | j        dœ| j        ¥S )N)r   Ústop_at)r   r   r(   rg   s    r4   Ú_default_paramszOutlines._default_paramsë   s*   € ð œ/Ø”yð
ð 
ð Ôð
ð 	
r6   c                ó^   — | j         | j        | j        | j        | j        | j        dœ| j        ¥S )N)r   r   r!   r"   r#   r$   )r   r   r!   r"   r#   r$   rk   rg   s    r4   Ú_identifying_paramszOutlines._identifying_paramsó   s@   € ð ”ZØ”|Ø”ZØ $Ô 5ØÔ+Ø”|ð
ð 
ð Ô"ð
ð 	
r6   c                óž  — ddl m} | j        r| j        S | j        r!|                     | j        | j        ¬¦  «        S | j        r!|                     | j        | j        ¬¦  «        S | j        r!|                     | j        | j        ¬¦  «        S | j	        r!| 
                    | j        | j	        ¬¦  «        S |                     | j        ¦  «        S )Nr   )Úgenerate)Ú	regex_str)Úpython_type)Úschema_object)Úcfg_str)re   ro   r%   r!   r   r"   Úformatr#   Újsonr$   ÚcfgÚtext)r2   ro   s     r4   Ú
_generatorzOutlines._generatorÿ   sÔ   € à%Ð%Ð%Ð%Ð%Ð%àÔ ð 	)ØÔ(Ð(ØŒ:ð 	EØ—>’> $¤+¸¼�>ÑDÔDÐDØÔ ð 	SØ—?’? 4¤;¸DÔ<Q�?ÑRÔRÐRØÔð 	NØ—=’= ¤¸DÔ<L�=ÑMÔMÐMØŒ<ð 	CØ—<’< ¤°T´\�<ÑBÔBÐBØ�}Š}˜Tœ[Ñ)Ô)Ð)r6   ÚpromptÚrun_managerú"Optional[CallbackManagerForLLMRun]Úkwargsc                ó¢   — i | j         ¥|¥}|r||d<   d}| j        r% | j        d||d         |dœ|¤ŽD ]}||j        z  }Œn | j        |fi |¤Ž}|S )Nrj   Ú )ry   r   rz   rf   )rk   r    Ú_streamrw   rx   )r2   ry   r   rz   r|   ÚparamsÚresponseÚchunks           r4   Ú_callzOutlines._call  s«   € ð 4�DÔ(Ð3¨FÐ3ˆØð 	%Ø $ˆF�9ÑàˆØŒ>ð 		9Ø%˜œð ØØ˜IÔ&Ø'ðð ð ð	ð ð 'ð '�ð ˜EœJÑ&��ð'ð '�t” vÐ8Ð8°Ð8Ð8ˆHØˆr6   úIterator[GenerationChunk]c              +  ó¬   K  — i | j         ¥|¥}|r||d<    | j        j        |fi |¤ŽD ]+}|r|                     |¦  «         t	          |¬¦  «        V — Œ,d S )Nrj   )rw   )rk   rx   ÚstreamÚon_llm_new_tokenr   )r2   ry   r   rz   r|   r€   Útokens          r4   r   zOutlines._stream'  s’   è è € ð 4�DÔ(Ð3¨FÐ3ˆØð 	%Ø $ˆF�9Ñà+�T”_Ô+¨FÐ=Ð=°fÐ=Ð=ð 	.ð 	.ˆEØð 4Ø×,Ò,¨UÑ3Ô3Ð3Ý! uÐ-Ñ-Ô-Ð-Ð-Ð-Ð-ð	.ð 	.r6   c                ób   — t          | j        d¦  «        r| j        j        S t          d¦  «        ‚)zŽAccess the tokenizer for the underlying model.

        .encode() to tokenize text.
        .decode() to convert tokens back to text.
        Ú	tokenizerzTokenizer not found)r]   r   rŠ   r0   rg   s    r4   rŠ   zOutlines.tokenizer7  s2   € õ �4”; Ñ,Ô,ð 	)Ø”;Ô(Ð(ÝÐ.Ñ/Ô/Ð/r6   )r+   r,   )r+   r   )r+   r'   )r+   r   )NN)
ry   r   r   r   rz   r{   r|   r   r+   r   )
ry   r   r   r   rz   r{   r|   r   r+   r„   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r    r!   r"   r#   r$   r%   r   Údictr(   r   r5   r1   Úpropertyrh   rk   rm   rx   rƒ   r   rŠ   rf   r6   r4   r   r      s_  € € € € € € Ø/Ð/à€FÐÐÐÑà€J€J�Jðð 	ð ð ð ð ñ ðð €JÐÐÐÑØ3à $€DÐ$Ð$Ð$Ñ$Ø@à€IÐÐÐÑØ8à€EÐÐÐÑðð 48ÐÐ7Ð7Ð7Ñ7ð	ð ?C€KÐBÐBÐBÑBðð$ "€GÐ!Ð!Ð!Ñ!ðð0 '+ÐÐ*Ð*Ð*Ñ*ØRà#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ðð €_˜'Ð"Ñ"Ô"ð#ð #ð #ñ #Ô"ð#ð"Eð Eð Eð EðN ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð ð	
ð 	
ð 	
ñ „Xð	
ð ð*ð *ð *ñ „Xð*ð$ %)Ø:>ð	ð ð ð ð ð6 %)Ø:>ð	.ð .ð .ð .ð .ð  ð0ð 0ð 0ñ „Xð0ð 0ð 0r6   r   )Ú
__future__r   Úimportlib.utilr=   Úloggingr^   Útypingr   r   r   r   r   r	   r
   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úpydanticr   r   r   Ú	getLoggerr‹   Úloggerr   rf   r6   r4   ú<module>rœ      s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wà =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à	ˆÔ	˜8Ñ	$Ô	$€ðp0ð p0ð p0ð p0ð p0ˆsñ p0ô p0ð p0ð p0ð p0r6   