
    7|hL                         d dl Z d dl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mZ d dlmZmZmZmZ  e j(                  e      Z G d de
      Zy)	    N)AnyDictListMappingOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envget_pydantic_field_names)
ConfigDictField	SecretStrmodel_validatorc                      e Zd ZU dZdZeed<   dZeed<   	 dZ	e
ed<   	 dZeed	<   	 d
Ze
ed<   	 d
Zeed<   	 dZe
ed<   	 dZe
ed<   	 d
Zeed<   	  ee      Zeeef   ed<   	  ee      Zeeee
f      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!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&y)%GooseAIa  GooseAI large language models.

    To use, you should have the ``openai`` python package installed, and the
    environment variable ``GOOSEAI_API_KEY`` set with your API key.

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

    Example:
        .. code-block:: python

            from langchain_community.llms import GooseAI
            gooseai = GooseAI(model_name="gpt-neo-20b")

    Nclientzgpt-neo-20b
model_namegffffff?temperature   
max_tokens   top_p
min_tokensr   frequency_penaltypresence_penaltyn)default_factorymodel_kwargs
logit_biasgooseai_api_keyignore)extrabefore)modevaluesreturnc           
         t        |       }|j                  di       }t        |      D ]M  }||vs||v rt        d| d      t        j                  d| d| d| d       |j                  |      ||<   O ||d<   t        t        |dd	            }||d<   	 d
dl	}|j                         |_        d|_        |j                  |d<   |S # t        $ r t        d      w xY w)z>Build extra kwargs from additional params that were passed in.r   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.r!   GOOSEAI_API_KEYr   Nzhttps://api.goose.ai/v1r   zTCould not import openai python package. Please install it with `pip install openai`.)r   getlist
ValueErrorloggerwarningpopr
   r   openaiget_secret_valueapi_keyapi_base
CompletionImportError)clsr&   all_required_field_namesr#   
field_namer!   r0   s          _/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/gooseai.pybuild_extrazGooseAI.build_extraI   s'    $<C#@ 

>2.v, 		;J!99&$vj\9I%JKK!* .L !))34JN
 %+JJz$:j!		; "'~/ ):<MN
 %4 !
	,==?FN7FO%00F8   	? 	s   /C C c           	          | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  d}i || j                  S )z3Get the default parameters for calling GooseAI API.)r   r   r   r   r   r   r   r    )	r   r   r   r   r   r   r   r    r   )selfnormal_paramss     r9   _default_paramszGooseAI._default_paramsm   sa      ++//ZZ//!%!7!7 $ 5 5//	
 6-54#4#455    c                 :    i d| j                   i| j                  S )zGet the identifying parameters.r   )r   r>   r<   s    r9   _identifying_paramszGooseAI._identifying_params|   s$     K<1JT5I5IJJr?   c                      y)zReturn type of llm.gooseai rA   s    r9   	_llm_typezGooseAI._llm_type   s     r?   promptstoprun_managerkwargsc                     | j                   }|d|v rt        d      ||d<   i ||} | j                  j                  d| j                  |d|}|j
                  d   j                  }|S )zCall the GooseAI API.rH   z2`stop` found in both the input and default params.)enginerG   r   rE   )r>   r,   r   creater   choicestext)r<   rG   rH   rI   rJ   paramsresponserO   s           r9   _callzGooseAI._call   s     %% !UVV!F6N%F%f%%4;;%%VT__VVvV"''r?   )NN)'__name__
__module____qualname____doc__r   r   __annotations__r   strr   floatr   intr   r   r   r   r   r   dictr   r   r    r   r!   r   r   model_configr   classmethodr:   propertyr>   r   rB   rF   r   r   rR   rE   r?   r9   r   r      s     FC#J#K*J( E5DJE u ;e$AsJ;#(#>L$sCx.>V-24-HJc5j)*HD+/OXi(/L (# c3h  C    $ D 6c3h 6 6 KWS#X%6 K K 3   %):>	 tCy! 67	
  
r?   r   )loggingtypingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   r   r   	getLoggerrS   r-   r   rE   r?   r9   <module>rf      sG     5 5 = 3 
 C B			8	$Hc Hr?   