
    Ngt                         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 d dlmZmZmZmZ d dlmZ  e j        e          Z G d d	e          ZdS )
    N)AnyDictListMappingOptionalcast)CallbackManagerForLLMRun)LLM)secret_from_env)
ConfigDictField	SecretStrmodel_validator)enforce_stop_tokensc                      e Zd ZU dZdZeed<   	 dZeed<   	  ee	          Z
eeef         ed<   	  e edd	                    Zee         ed
<    ed          Z ed          edeeef         defd                        Zedeeef         fd            Zedefd            Z	 	 ddedeee                  dee         dedef
dZdS )Bananaa  Banana large language models.

    To use, you should have the ``banana-dev`` python package installed,
    and the environment variable ``BANANA_API_KEY`` set with your API key.
    This is the team API key available in the Banana dashboard.

    Any parameters that are valid to be passed to the call can be passed
    in, even if not explicitly saved on this class.

    Example:
        .. code-block:: python

            from langchain_community.llms import Banana
            banana = Banana(model_key="", model_url_slug="")
     	model_keymodel_url_slug)default_factorymodel_kwargsBANANA_API_KEYN)defaultbanana_api_keyforbid)extrabefore)modevaluesreturnc                 l   t          t          | j                                                            }|                    di           }t          |          D ]U}||vrO||v rt          d| d          t                              | d| d           |                    |          ||<   V||d<   |S )z>Build extra kwargs from additional params that were passed in.r   zFound z supplied twice.zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.)	setlistmodel_fieldskeysget
ValueErrorloggerwarningpop)clsr   all_required_field_namesr   
field_names        ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/bananadev.pybuild_extrazBanana.build_extra3   s     $'tC,<,A,A,C,C'D'D#E#E 

>2..v,, 	; 	;J!999&&$%Jj%J%J%JKKK# N N)3N N N   %+JJz$:$:j!!&~    c                 <    i d| j         id| j        id| j        iS )zGet the identifying parameters.r   r   r   )r   r   r   selfs    r.   _identifying_paramszBanana._identifying_paramsE   s=    
DN+
!45
 t01
 	
r0   c                     dS )zReturn type of llm.	bananadev r2   s    r.   	_llm_typezBanana._llm_typeN   s	     {r0   promptstoprun_managerkwargsc                    	 ddl m} n# t          $ r t          d          w xY w| j        pi }i ||}t	          t
          | j                  }| j        }| j        }	d|i|}
 ||	                                |d|	 d          }|
                    d|
          \  }}	 |d	         }n$# t          t          f$ r t          d
          w xY w|t          ||          }|S )zCall to Banana endpoint.r   )Clientz\Could not import banana-dev python package. Please install it with `pip install banana-dev`.r9   zhttps://z.run.banana.dev)api_keyr   url/outputszResponse should be of schema: {'outputs': 'text'}.
To fix this:
- fork the source repo of the Banana model
- modify app.py to return the above schema
- deploy that as a custom repo)
banana_devr>   ImportErrorr   r   r   r   r   r   get_secret_valuecallKeyError	TypeErrorr'   r   )r3   r9   r:   r;   r<   r>   paramsr?   r   r   model_inputsmodelresponsemetatexts                  r.   _callzBanana._callS   s]   	))))))) 	 	 	C  	
 "(b%F%f%y$"566N	, f
 

 ,,..:>:::
 
 
 C66$		I&DD)$ 	 	 	3  	  'tT22Ds   	 #!B* *!C)NN)__name__
__module____qualname____doc__r   str__annotations__r   r   dictr   r   r   r   r   r   r   r   model_configr   classmethodr/   propertyr   r4   r8   r   r	   rO   r7   r0   r.   r   r      s           IsNC#(5#>#>#>L$sCx.>>> +0%'(8$GGG+ + +NHY'    :  L _(###c3h C    [ $#  
WS#X%6 
 
 
 X
 3    X %):>	/ // tCy!/ 67	/
 / 
/ / / / / /r0   r   )loggingtypingr   r   r   r   r   r   langchain_core.callbacksr	   #langchain_core.language_models.llmsr
   langchain_core.utilsr   pydanticr   r   r   r   langchain_community.llms.utilsr   	getLoggerrP   r(   r   r7   r0   r.   <module>rb      s	    ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; = = = = = = 3 3 3 3 3 3      C B B B B B B B B B B B > > > > > >		8	$	$r r r r rS r r r r rr0   