Ë
    µŒjq  ã                   óÂ   — d dl Z d dlZd dlmZmZmZmZmZ d dl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 d dlmZ  e j0                  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Úpre_init)Ú
ConfigDictÚFieldÚ	SecretStrÚmodel_validator)Úenforce_stop_tokensc                   ó0  — e Zd ZU dZdZeed<   	  ee¬«      Z	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
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y)ÚStochasticAIa2  StochasticAI large language models.

    To use, you should have the environment variable ``STOCHASTICAI_API_KEY``
    set with your API key.

    Example:
        .. code-block:: python

            from langchain_community.llms import StochasticAI
            stochasticai = StochasticAI(api_url="")
    Ú Úapi_url)Údefault_factoryÚmodel_kwargsNÚstochasticai_api_keyÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ó:  — t        t        | j                  j                  «       «      «      }|j	                  di «      }t        |«      D ]I  }||vsŒ||v rt        d|› d�«      ‚t        j                  |› d|› d�«       |j                  |«      ||<   ŒK ||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        úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/stochasticai.pyÚbuild_extrazStochasticAI.build_extra*   s±   € ô $'¤t¨C×,<Ñ,<×,AÑ,AÓ,CÓ'DÓ#EÐ à—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØÐ!9Ò9Ø Ñ&Ü$ v¨j¨\Ð9IÐ%JÓKÐKÜ—‘Ø#˜ð %)Ø)3¨Ð4JðNôð %+§J¡J¨zÓ$:��jÒ!ð 'ð "'ˆˆ~ÑØˆó    c                 ó<   — t        t        |dd«      «      }||d<   |S )z,Validate that api key exists in environment.r   ÚSTOCHASTICAI_API_KEY)r
   r   )r)   r   r   s      r,   Úvalidate_environmentz!StochasticAI.validate_environment=   s/   € ô  5Ü  Ð)?ÐAWÓXó 
Ðð *>ˆÐ%Ñ&Øˆr.   c                 ó>   — i d| j                   i¥d| j                  i¥S )zGet the identifying parameters.Úendpoint_urlr   )r   r   ©Úselfs    r,   Ú_identifying_paramsz StochasticAI._identifying_paramsF   s0   € ð
Ø˜tŸ|™|Ð,ð
à˜t×0Ñ0Ð1ð
ð 	
r.   c                  ó   — y)zReturn type of llm.Ústochasticai© r4   s    r,   Ú	_llm_typezStochasticAI._llm_typeN   s   € ð r.   ÚpromptÚstopÚrun_managerÚkwargsc                 ó8  — | j                   xs i }i |¥|¥}t        j                  | j                  ||dœ| j                  j                  «       › dddœ¬«      }|j                  «        |j                  «       }d}|sŠt        j                  |d   d   | j                  j                  «       › dddœ¬«      }	|	j                  «        |	j                  «       d   }
|
j                  d	«      }|d
u}t        j                  d«       |sŒŠd   }|�t        ||«      }|S )at  Call out to StochasticAI's complete endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = StochasticAI("Tell me a joke.")
        )r;   Úparamszapplication/json)ÚapiKeyÚAcceptzContent-Type)ÚurlÚjsonÚheadersFÚdataÚresponseUrl)rC   rE   Ú
completionNg      à?r   )r   ÚrequestsÚpostr   r   Úget_secret_valueÚraise_for_statusrD   r$   ÚtimeÚsleepr   )r5   r;   r<   r=   r>   r@   Úresponse_postÚresponse_post_jsonÚ	completedÚresponse_getÚresponse_get_jsonÚtexts               r,   Ú_callzStochasticAI._callS   s0  € ð* ×"Ñ"Ò( bˆØ%�FÐ%˜fÐ%ˆÜ Ÿ™Ø—‘Ø"¨fÑ5à!×6Ñ6×GÑGÓIÐJØ,Ø 2ñô
ˆð 	×&Ñ&Ô(Ø*×/Ñ/Ó1ÐØˆ	ÙÜ#Ÿ<™<Ø& vÑ.¨}Ñ=à!%×!:Ñ!:×!KÑ!KÓ!MÐ NØ0Ø$6ñôˆLð ×)Ñ)Ô+Ø ,× 1Ñ 1Ó 3°FÑ ;ÐØ$×(Ñ(¨Ó6ˆDØ DÐ(ˆIÜ�J‰J�sŒOò ð �A‰wˆØÐô ' t¨TÓ2ˆDØˆr.   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   Údictr   r   r   r   r   r   r   Úmodel_configr   Úclassmethodr-   r   r1   Úpropertyr   r6   r:   r   r   rU   r9   r.   r,   r   r      s5  … ñ
ð €GˆSÓØá#(¸Ô#>€L�$�s˜C�x‘.Ó>ðð 15Ð˜( 9Ñ-Ó4áØô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðð" ð¨$ð °4ò ó ðð ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ðð %)Ø:>ñ	6àð6ð �t˜C‘yÑ!ð6ð Ð6Ñ7ð	6ð
 ð6ð 
ô6r.   r   )ÚloggingrM   Útypingr   r   r   r   r   rI   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.utilsr
   r   r   Úpydanticr   r   r   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrV   r&   r   r9   r.   r,   Ú<module>rh      sI   ðÛ Û ß 5Õ 5ã Ý =Ý 3ß VÑ Vß BÓ Bå >à	ˆ×	Ñ	˜8Ó	$€ôy�3õ yr.   