o
    Zh1                     @   sd   d Z ddlZddlmZmZmZ ddlZddlmZ ddl	m
Z
mZmZ dZdZG dd	 d	e
ZdS )
zUtil that calls Golden.    N)AnyDictOptionalget_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorzhttps://golden.comi  c                   @   s^   e Zd ZU dZ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 )GoldenQueryAPIWrapperzWrapper for Golden.

    Docs for using:

    1. Go to https://golden.com and sign up for an account
    2. Get your API Key from https://golden.com/settings/api
    3. Save your API Key into GOLDEN_API_KEY env variable

    Ngolden_api_keyZforbid)extrabefore)modevaluesreturnc                 C   s   t |dd}||d< |S )z?Validate that api key and python package exists in environment.r   ZGOLDEN_API_KEYr   )clsr   r    r   a/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/utilities/golden_query.pyvalidate_environment   s
   z*GoldenQueryAPIWrapper.validate_environmentqueryc                 C   sp   d| j pdi}tjt dd|i|td}|jdkr|jS t|j	}|d }tj
t d| d|td	}|jS )
zBRun query through Golden Query API and return the JSON raw result.Zapikey z/api/v2/public/queries/prompt)jsonheaderstimeout   idz/results/?pageSize=10)r   r   )r   requestspostGOLDEN_BASE_URLGOLDEN_TIMEOUTstatus_codetextr   loadscontentget)selfr   r   responser$   Zquery_idr   r   r   run*   s"   
zGoldenQueryAPIWrapper.run)__name__
__module____qualname____doc__r   r   str__annotations__r   Zmodel_configr	   classmethodr   r   r   r(   r   r   r   r   r
      s   
 
	r
   )r,   r   typingr   r   r   r   Zlangchain_core.utilsr   Zpydanticr   r   r	   r   r    r
   r   r   r   r   <module>   s    