
    7|hr!                     j    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y)    N)AnyDictListMappingOptionalUnion)CallbackManagerForLLMRun)LLM)Field	SecretStrc                      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y)	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                      y)N	predibase selfs    a/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/predibase.py	_llm_typezPredibase._llm_type(   s        promptstoprun_managerkwargsc                 4   i | j                   | j                  xs i |xs i }| j                         r	 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"                  j%                         dd	
      } ||      }|j+                  d| j,                         }| j.                  rY	 	 |j1                  | j.                  | j2                  d       }|j5                  |      j7                  ||      }|j8                  S |j7                  ||      }|j8                  S ddlm} dt<        j>                  d<    || j"                  j%                               }dd l }ddl!m"} ddl#m$} ddl%m&} |jN                  jQ                  | j,                        }| j.                  rs	 | j2                  rD| j.                   d| j2                   }|jS                  dd        	  |j6                  d(||d|}n7	  |j6                  d(|| j.                  d!d"|}n	  |j6                  d(d%|i|}|jV                  }|S # t&        $ r}t'        d      |d }~wt(        $ r}t)        d      |d }~ww xY w# |$ r# |j+                  d| j.                         }Y w xY w# |$ r}t)        d| d       |d }~ww xY w# |$ r}t)        d#| j.                   d$      |d }~ww xY w# |jT                  $ r}t)        d&| j,                   d'      |d }~ww xY w))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1
  &B1
 |1

 **,Y55 N:#.00AAC>%@$
 '6g&F 24'

|4 28 2 J$&LL!__ $ 4 4!% %1 %M -999NWW!# X  ??"	 -55!# 6  ??"'*I

&'(,,==? 
	 	60($-$9$9$@$@:: %A %

 ?? ##(,'8$:N:N9O%P
4|44  %#0  " H4|44  %#'??',  "	 H0<00 ! !//_  !F   Y !PQWXXY( + J$&FFt6G/HF$IMJ` ' $4]O D: =  ' $;DOO;L M 
  ++  7

| D  s~   AI 7(I: *J%  K #K) 	I7II7&I22I7:$J"!J"%J?*J::J?K&K!!K&)L8LLc                 "    i d| j                   iS )zGet the identifying parameters.r   )r   r   s    r    _identifying_paramszPredibase._identifying_params   s    
t001
 	
r"   c                     	 dd l }ddlm} ddlm} |j	                  d      }| j
                  xs |}|j	                  |      }||kD  xs 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5-=-E-E) .F .! +/*D*D*W"*:*B*B5 +C + $&;; 644   	S 	s   AA 	A,A''A,)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   " J  +/8C=/ $J$%)OXc])#(#>L$sCx.>+0!	
,"D  3   %):>	PP tCy!P 67	P
 P 
Pd 
WS#X%6 
 
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 %Q Qr"   