
    Ngr!                     r    d dl Z d dl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mZ  G d de          ZdS )    N)AnyDictListMappingOptionalUnion)CallbackManagerForLLMRun)LLM)Field	SecretStrc                   h   e Zd ZU dZeed<   eed<   dZee         ed<   dZ	ee         ed<   dZ
ee         ed<    ee          Zeeef         ed	<    ed
dd          Zeed<   edefd            Z	 	 ddedeee                  dee         dedef
dZedeeef         fd            ZdefdZdS )	Predibasea  Use your Predibase models with Langchain.

    To use, you should have the ``predibase`` python package installed,
    and have your Predibase API key.

    The `model` parameter is the Predibase "serverless" base_model ID
    (see https://docs.predibase.com/user-guide/inference/models for the catalog).

    An optional `adapter_id` parameter is the Predibase ID or HuggingFace ID of a
    fine-tuned LLM adapter, whose base model is the `model` parameter; the
    fine-tuned adapter must be compatible with its base model;
    otherwise, an error is raised.  If the fine-tuned adapter is hosted at Predibase,
    then `adapter_version` in the adapter repository must be specified.

    An optional `predibase_sdk_version` parameter defaults to latest SDK version.
    modelpredibase_api_keyNpredibase_sdk_version
adapter_idadapter_version)default_factorymodel_kwargs   g?)max_new_tokenstemperaturedefault_options_for_generationreturnc                     dS )N	predibase selfs    ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/predibase.py	_llm_typezPredibase._llm_type(   s    {    promptstoprun_managerkwargsc                    i | j         | j        pi |pi }|                                 rW	 ddlm} ddlm} ddlm}m	}	 ddl
m}
m} ddlm} ddlm}  || j                                        dd	
          } ||          }n?# t&          $ r}t'          d          |d }~wt(          $ r}t)          d          |d }~ww xY w|                    d| j                   }| j        rz	 	 |                    | j        | j        d           }n)# |$ r! |                    d| j                   }Y nw xY w|                    |                              ||          }n|                    ||          }|j        S ddlm} dt<          j        d<    || j                                                  }dd l }ddl!m"} ddl#m$} ddl%m&} |j'        (                    | j                  }| j        r	 | j        rZ| j         d| j         }|)                    dd            	  |j        d(||d|}n# |$ r}t)          d| d           |d }~ww xY w	  |j        d(|| j        d!d"|}nb# |$ r}t)          d#| j         d$          |d }~ww xY w	  |j        d(d%|i|}n+# |j*        $ r}t)          d&| j         d'          |d }~ww xY w|j+        }|S ))Nr   )PredibaseClient)get_session)ServerResponseErrorSession)HuggingFaceLLMLLMDeployment)GeneratedResponse)Modelz https://api.app.predibase.com/v1zserving.app.predibase.com)tokengatewayserving_endpoint)sessionzZCould not import Predibase Python package. Please install it with `pip install predibase`.z-Your API key is not correct. Please try againzpb://deployments/)uri)nameversionmodel_idzhf://)r   )r#   options)r   zhttps://api.app.predibase.comPREDIBASE_GATEWAY)	api_token)Client)GenerationError)Response)deployment_ref/r:   )r#   r   zAn adapter with the ID "zE" cannot be found in the Predibase repository of fine-tuned adapters.hub)r#   r   adapter_sourcezEither an adapter with the ID "z" cannot be found in a HuggingFace repository, or it is incompatible with the base model (please make sure that the adapter configuration is consistent).
r#   zAn LLM with the deployment ID "z" cannot be found at Predibase (please refer to "https://docs.predibase.com/user-guide/inference/models" for the list of supported models).
r   ),r   r   _is_deprecated_sdk_versionr   r(   predibase.pqlr)   predibase.pql.apir*   r+    predibase.resource.llm.interfacer,   r-   predibase.resource.llm.responser.   predibase.resource.modelr/   r   get_secret_valueImportError
ValueErrorr
   r   r   	get_modelr   with_adaptergenerateresponser   osenvironrequestslorax.clientr;   lorax.errorsr<   lorax.typesr=   deploymentsclientpopJSONDecodeErrorgenerated_text) r   r#   r$   r%   r&   r8   r(   r)   r*   r+   r,   r-   r.   r/   r3   pcebase_llm_deploymentadapter_modelresultr   r   rQ   LoraxClientr<   r=   lorax_clientpb_adapter_idrN   gejderesponse_texts                                    r    _callzPredibase._call,   s?   1
11
 &B1
 |1

 **,, :	#Y555555555555               NMMMMM::::::#.;0AACC>%@$ $ $
 '6og&F&F&F   !F    Y Y Y !PQQWXXY 244
44 28 2 2  J$&LL!_ $ 4!% %1 % %MM
 + J J J$&FF/Ht/H/HF$I$IMMMJ -999NNWW!# X  
 -55!# 6   ?"''''''*I
&'(y,==?? 
  
  
	 	666666000000(((((($-$9$@$@: %A %
 %

 ? 4	 # !(,%P%P$:N%P%P  
4|4  %#0    "   HH
 '   $=] = = =  4|4  %#'?',    "	   HH '   $DO    
 0<0  !  +    
      !/s~   AB 
CB!!C.B>>C-"D #D65D6(H9 9I>III2 2J7JJJ) )
K3KKc                     i d| j         iS )zGet the identifying parameters.r   )r   r   s    r    _identifying_paramszPredibase._identifying_params   s    
t01
 	
r"   c                     	 dd l }ddlm} ddlm} |                    d          }| j        p|}|                    |          }||k    pd|v  S # t          $ r}t          d          |d }~ww xY w)Nr   )__version__)Versionz2024.4.8)version_stringz+devzkCould not import Predibase Python package. Please install it with `pip install semantic_version predibase`.)semantic_versionpredibase.versionri   semantic_version.baserj   r   rI   )r   rl   current_versionrj   sdk_semver_deprecatedactual_current_versionsdk_semver_currentr[   s           r    rB   z$Predibase._is_deprecated_sdk_version   s    	####HHHHHH555555-=-E-E) .F . .! +/*D*W"*:*B*B5 +C + + $&;; 644   	 	 	S  	s   AA 
A1A,,A1)NN)__name__
__module____qualname____doc__str__annotations__r   r   r   r   r   intr   dictr   r   r   r   propertyr!   r   r	   re   r   rg   boolrB   r   r"   r    r   r   	   s         " JJJ    +/8C=/// $J$$$%)OXc])))#(5#>#>#>L$sCx.>>>+05!	
 	
, ,"D    3    X %):>	P PP tCy!P 67	P
 P 
P P P Pd 
WS#X%6 
 
 
 X
D      r"   r   )rO   typingr   r   r   r   r   r   langchain_core.callbacksr	   #langchain_core.language_models.llmsr
   pydanticr   r   r   r   r"   r    <module>r      s    				 < < < < < < < < < < < < < < < < = = = = = = 3 3 3 3 3 3 % % % % % % % %Q Q Q Q Q Q Q Q Q Qr"   