
    dh,                        S SK Jr  S SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJr  \R4                  " \5      r " S S	\5      rg)
    )annotationsN)	AnyCallableDictIteratorListLiteralOptionalTupleUnion)CallbackManagerForLLMRun)LLM)GenerationChunk)	BaseModelFieldmodel_validatorc                     \ rS rSr% SrSrS\S'   S\S'    SrS	\S
'    SrS\S'    Sr	S\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    \" \S9rS\S'    \" SS 9S+S! j5       rS+S" jr\S,S# j5       r\S-S$ j5       r\S-S% j5       r\S.S& j5       r  S/         S0S' jjr  S/         S1S( jjr\S.S) j5       rS*rg)2Outlines   z%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)modec                    [        [        U R                  5      [        U R                  5      [        U R                  5      [        U R
                  5      /5      nUS:  a  [        S5      eU R                  5       $ )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     Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/outlines.pyvalidate_environmentOutlines.validate_environment   st     TZZ T**+T%%&T\\"	
 Q;    ""    c                N    SS K Jn      SS jnU R                  S:X  ao  SU R                  ;   a'  U R                  R                  SS5      u  p4nU SU 3nO[        S5      eU" S	/5        UR                  " Xe40 U R                  D6U l	        U $ U R                  S
:X  a8  U" / SQ5        UR                  " U R                  40 U R                  D6U l	        U $ U R                  S:X  a\  U" / SQ5        SSK
Jn  [        US5      (       d  [        S5      eUR                  " U R                  4SU0U R                  D6U l	        U $ U R                  S:X  a[  [        R                  " 5       S:X  a  [        S5      eU" S/5        UR                   " U R                  40 U R                  D6U l	        U $ U R                  S:X  a7  U" S/5        UR"                  " U R                  40 U R                  D6U l	        U $ [        SU R                   35      e! [         a    [        S5      ef = f)Nr   zUCould not import the Outlines library. Please install it with `pip install outlines`.c           	     L   U  Vs/ sH]  n[         R                  R                  [        U[        5      (       a  US   OU5        b  MA  [        U[
        5      (       a  UOUS   PM_     nnU(       a/  [        SSR                  U5       SSR                  U5       35      eg s  snf )Nr-   r   zMissing packages: z, z.. You can install them with:

    pip install  )	importlibutil	find_spec
isinstancetupler   ImportErrorjoin)packagespkgmissing_packagess      r3   check_packages_installed7Outlines.build_client.<locals>.check_packages_installed   s    
 $ #C>>++je6L6LCFRUV 8z#s++Q7#     !(3C)D(E F''*xx0@'A&BD    s   ?B! B!llamacppz.gguf/   z.GGUF file_name must be provided for llama.cpp.)zllama-cpp-python	llama_cppr   )r   torchdatasetstransformers_vision)r   rK   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: )rA   z!List[Union[str, Tuple[str, str]]]returnNone)outlines.modelsmodelsr?   r   r   splitr/   rF   r)   r   r   rP   hasattrrL   platformsystemrR   rT   )r1   rY   rD   creator	repo_name	file_namerepo_idrP   s           r3   r0   Outlines.build_client   s3   	,	7		  <<:%$**$04

0@0@a0H-I$IQyk2 !QRR$&G%HI //'R@Q@QRDKJ I \\^+$%JK --djjND<M<MNDKD C \\22$ G6#899 C  !44

= ##DK   \\V# H, !JKK$fX. ++djjFD4E4EFDK  \\W$$eW- ,,tzzGT5F5FGDK  4T\\NCDDA  	A 	s   H H$c                    g)Noutlines r1   s    r3   	_llm_typeOutlines._llm_type   s    r6   c                L    U R                   U R                  S.U R                  E$ )N)r   stop_at)r   r   r)   rf   s    r3   _default_paramsOutlines._default_params   s,     //yy
 
 	
r6   c                    U R                   U R                  U R                  U R                  U R                  U R
                  S.U R                  E$ )N)r   r   r"   r#   r$   r%   )r   r   r"   r#   r$   r%   rk   rf   s    r3   _identifying_paramsOutlines._identifying_params   sL     ZZ||ZZ $ 5 5++||
 ""
 	
r6   c                &   SSK Jn  U R                  (       a  U R                  $ U R                  (       a$  UR                  U R                  U R                  S9$ U R
                  (       a$  UR                  U R                  U R
                  S9$ U R                  (       a$  UR                  U R                  U R                  S9$ U R                  (       a$  UR                  U R                  U R                  S9$ UR                  U R                  5      $ )Nr   )generate)	regex_str)python_type)schema_object)cfg_str)rd   rq   r&   r"   r   r#   formatr$   jsonr%   cfgtext)r1   rq   s     r3   
_generatorOutlines._generator   s    %  (((::>>$++>DD  ??4;;D<Q<Q?RR==D<L<L=MM<<<<T\\<BB}}T[[))r6   c                    0 U R                   EUEnU(       a  X%S'   SnU R                  (       a0  U R                  " SUUS   US.UD6 H  nXgR                  -  nM     U$ U R                  " U40 UD6nU$ )Nrj    )promptr   run_managerre   )rk   r!   _streamry   rz   )r1   r~   r   r   kwargsparamsresponsechunks           r3   _callOutlines._call  s     4D((3F3 $9>> I&' 	 JJ&  v88Hr6   c              +     #    0 U R                   EUEnU(       a  X%S'   U R                  R                  " U40 UD6 H&  nU(       a  UR                  U5        [	        US9v   M(     g 7f)Nrj   )ry   )rk   rz   streamon_llm_new_tokenr   )r1   r~   r   r   r   r   tokens          r3   r   Outlines._stream'  sa      4D((3F3 $9__++F=f=E,,U3!u-- >s   A$A&c                z    [        U R                  S5      (       a  U R                  R                  $ [        S5      e)zvAccess the tokenizer for the underlying model.

.encode() to tokenize text.
.decode() to convert tokens back to text.
	tokenizerzTokenizer not found)r[   r   r   r/   rf   s    r3   r   Outlines.tokenizer7  s1     4;;,,;;(((.//r6   )r   )rV   z
'Outlines')rV   r   )rV   r(   )rV   r   )NN)
r~   r   r   r   r   "Optional[CallbackManagerForLLMRun]r   r   rV   r   )
r~   r   r   r   r   r   r   r   rV   zIterator[GenerationChunk])__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r!   r"   r#   r$   r%   r&   r   dictr)   r   r4   r0   propertyrg   rk   rn   rz   r   r   r   __static_attributes__re   r6   r3   r   r      s   /FCJ 	    J3 $D
$@It8E= 4807	 ?CK;B$ "G]!0 '+m*R#(#>L.> '"# ##"EN   
 
 	
 	
 * *$ %):>	 " 8	
  
6 %):>	.. ". 8	.
 . 
#.  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   re   r6   r3   <module>r      sG    "    W W W = 3 2 6 6			8	$p0s p0r6   