§
    æ˜ºhµ  ã                   ó¦   — 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mZ d dlmZmZ  e j        e¦  «        Z G d„ de
¦  «        ZdS )	é    N)ÚAnyÚDictÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚFieldÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_envc                   ó„  — e Zd ZU 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<    G d„ d¦  «        Z ed¬¦  «        deeef         deeef         fd„¦   «         Z e¦   «         de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$dS )&Ú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")

    Úclientzgpt-neo-20bÚ
model_namegffffffæ?Útemperatureé   Ú
max_tokensé   Útop_pÚ
min_tokensr   Úfrequency_penaltyÚpresence_penaltyÚn)Údefault_factoryÚmodel_kwargsÚ
logit_biasNÚgooseai_api_keyc                   ó    — e Zd ZdZej        ZdS )úGooseAI.Configz'Configuration for this pydantic config.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚignoreÚextra© ó    úh/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/gooseai.pyÚConfigr"   A   s   € € € € € Ø5Ð5à”ˆˆˆr*   r,   T)ÚpreÚvaluesÚreturnc           
      óT  — d„ | j                              ¦   «         D ¦   «         }|                     di ¦  «        }t          |¦  «        D ]Y}||vrS||v rt	          d|› d�¦  «        ‚t
                               d|› d|› d|› d�¦  «         |                     |¦  «        ||<   ŒZ||d<   |S )	z>Build extra kwargs from additional params that were passed in.c                 ó   — h | ]	}|j         ’Œ
S r)   )Úalias)Ú.0Úfields     r+   ú	<setcomp>z&GooseAI.build_extra.<locals>.<setcomp>I   s   € Ð#UÐ#UÐ#U°E E¤KÐ#UÐ#UÐ#Ur*   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.)Ú
__fields__r.   ÚgetÚlistÚ
ValueErrorÚloggerÚwarningÚpop)Úclsr.   Úall_required_field_namesr(   Ú
field_names        r+   Úbuild_extrazGooseAI.build_extraF   sö   € ð $VÐ#U¸S¼^×=RÒ=RÑ=TÔ=TÐ#UÑ#UÔ#UÐ à—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 		;ð 		;ˆJØÐ!9Ð9Ð9Ø Ð&Ð&Ý$Ð%J¨jÐ%JÐ%JÐ%JÑKÔKÐKÝ—’ðN *ð Nð NØðNð Nà)3ðNð Nð Nñô ð ð
 %+§J¢J¨zÑ$:Ô$:��jÑ!øØ!&ˆˆ~ÑØˆr*   c                 óæ   — t          t          |dd¦  «        ¦  «        }||d<   	 ddl}|                     ¦   «         |_        d|_        |j        |d<   n# t          $ r t          d¦  «        ‚w xY w|S )z?Validate that api key and python package exists in environment.r    ÚGOOSEAI_API_KEYr   Nzhttps://api.goose.ai/v1r   zTCould not import openai python package. Please install it with `pip install openai`.)r   r   ÚopenaiÚget_secret_valueÚapi_keyÚapi_baseÚ
CompletionÚImportError)r=   r.   r    rC   s       r+   Úvalidate_environmentzGooseAI.validate_environmentY   s¢   € õ 0Ý  Ð):Ð<MÑNÔNñ
ô 
ˆð %4ˆÐ Ñ!ð
	ØˆMˆMˆMà,×=Ò=Ñ?Ô?ˆFŒNØ7ˆFŒOØ%Ô0ˆF�8ÑÐøÝð 	ð 	ð 	Ýð?ñô ð ð	øøøð
 ˆs   ¥.A ÁA.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     r+   Ú_default_paramszGooseAI._default_paramsm   sP   € ð  Ô+Øœ/Ø”ZØœ/Ø!%Ô!7Ø $Ô 5Ø”Øœ/ð	
ð 	
ˆð 6�-Ð5 4Ô#4Ð5Ð5r*   c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   rM   ©rK   s    r+   Ú_identifying_paramszGooseAI._identifying_params|   s   € ð K�< ¤Ð1ÐJ°TÔ5IÐJÐJr*   c                 ó   — dS )zReturn type of llm.Úgooseair)   rO   s    r+   Ú	_llm_typezGooseAI._llm_type�   s	   € ð ˆyr*   Ú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.NrU   z2`stop` found in both the input and default params.)ÚenginerT   r   r)   )rM   r9   r   Úcreater   ÚchoicesÚtext)rK   rT   rU   rV   rW   ÚparamsÚresponser\   s           r+   Ú_callzGooseAI._call†   s|   € ð Ô%ˆØÐØ˜ÐÐÝ Ð!UÑVÔVÐVØ!ˆF�6‰Nà%�FÐ%˜fÐ%ˆà%�4”;Ô%ÐV¨T¬_ÀVÐVÐVÈvÐVÐVˆØÔ Ô"Ô'ˆØˆr*   )NN)%r#   r$   r%   r&   r   Ú__annotations__r   Ústrr   Úfloatr   Úintr   r   r   r   r   r   Údictr   r   r   r   r    r   r,   r   r@   rI   ÚpropertyrM   r   rP   rS   r   r   r_   r)   r*   r+   r   r      sÇ  € € € € € € ðð ð  €K€K�Kà#€J�Ð#Ð#Ñ#Øà€K�ÐÐÑØ*à€J�ÐÐÑð(ð €Eˆ5ÐÐÑØDà€J�ÐÐÑØEà Ð�uÐ Ð Ñ Ø;àÐ�eÐÐÑØ$à€A€s€J€J�JØ;à#( 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>ØVà-2¨UÀ4Ð-HÑ-HÔ-H€J�˜˜c 5˜jÔ)Ô*ÐHÐHÑHØDà+/€O�X˜iÔ(Ð/Ð/Ñ/ðð ð ð ð ñ ô ð ð
 €^˜ÐÑÔð  c¨3 h¤ð °D¸¸c¸´Nð ð ð ñ Ôðð$ €^ÑÔð¨$ð °4ð ð ð ñ Ôðð& ð6  c¨3 h¤ð 6ð 6ð 6ñ „Xð6ð ðK W¨S°#¨XÔ%6ð Kð Kð Kñ „XðKð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	ð àðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
ðð ð ð ð ð r*   r   )ÚloggingÚtypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   r   r   Úlangchain_core.utilsr   r   Ú	getLoggerr#   r:   r   r)   r*   r+   ú<module>rm      sè   ðØ €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là	ˆÔ	˜8Ñ	$Ô	$€ðLð Lð Lð Lð Lˆcñ Lô Lð Lð Lð Lr*   