U
    h	                     @   s\   d Z ddlZddlmZmZ ddlZddlmZmZ ddl	m
Z
 dZdZG dd	 d	eZdS )
zUtil that calls Golden.    N)DictOptional)	BaseModelroot_validatorget_from_dict_or_envzhttps://golden.comi  c                   @   sZ   e Zd ZU dZdZee ed< G dd dZe	dde
e
dd	d
Zeed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_keyc                   @   s   e Zd ZdZdS )zGoldenQueryAPIWrapper.ConfigZforbidN)__name__
__module____qualname__extra r   r   N/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/utilities/golden_query.pyConfig   s   r   T)pre)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   r   r   validate_environment   s      z*GoldenQueryAPIWrapper.validate_environment)queryr   c                 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)r
   r   r   __doc__r	   r   str__annotations__r   r   r   r   r)   r   r   r   r   r      s   

	r   )r*   r   typingr   r   r   Zlangchain_core.pydantic_v1r   r   Zlangchain_core.utilsr   r    r!   r   r   r   r   r   <module>   s   