o
    ȳg                     @   sL   d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 G dd deZdS )zUtil that calls WolframAlpha.    )AnyDictOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                   @   sj   e Zd ZU dZdZeed< dZee	 ed< e
ddZedded	ed
efddZde	d
e	fddZdS )WolframAlphaAPIWrapperzWrapper for Wolfram Alpha.

    Docs for using:

    1. Go to wolfram alpha and sign up for a developer account
    2. Create an app and get your APP ID
    3. Save your APP ID into WOLFRAM_ALPHA_APPID env variable
    4. pip install wolframalpha

    Nwolfram_clientwolfram_alpha_appidforbid)extrabefore)modevaluesreturnc                 C   sN   t |dd}||d< zddl}W n ty   tdw ||}||d< |S )z?Validate that api key and python package exists in environment.r   WOLFRAM_ALPHA_APPIDr   NzPwolframalpha is not installed. Please install it with `pip install wolframalpha`r
   )r   wolframalphaImportErrorClient)clsr   r   r   client r   g/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain_community/utilities/wolfram_alpha.pyvalidate_environment   s   
z+WolframAlphaAPIWrapper.validate_environmentqueryc                 C   sb   | j |}zt|jj}t|jj}W n
 ty   Y dS w |du s'|dkr)dS d| d| S )z0Run query through WolframAlpha and parse result.z&Wolfram Alpha wasn't able to answer itN z&No good Wolfram Alpha Result was foundzAssumption: z
 
Answer: )r
   r   nextpodstextresultsStopIteration)selfr   res
assumptionanswerr   r   r   run2   s   zWolframAlphaAPIWrapper.run)__name__
__module____qualname____doc__r
   r   __annotations__r   r   strr   model_configr   classmethodr   r   r&   r   r   r   r   r	   	   s   
 r	   N)r*   typingr   r   r   langchain_core.utilsr   pydanticr   r   r   r	   r   r   r   r   <module>   s
    