a
    bg1                     @   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                   @   sZ   e Zd ZU dZdZee ed< eddZ	e
dde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_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   x/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/golden_query.py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)__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   