o
    ȳg1                     @   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_key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   GOLDEN_API_KEYr   )clsr   r    r   f/var/www/html/chatdoc2/venv/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.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'   query_idr   r   r   run*   s"   
zGoldenQueryAPIWrapper.run)__name__
__module____qualname____doc__r   r   str__annotations__r   model_configr	   classmethodr   r   r   r,   r   r   r   r   r
      s   
 
	r
   )r0   r   typingr   r   r   r    langchain_core.utilsr   pydanticr   r   r	   r"   r#   r
   r   r   r   r   <module>   s    