
    7|h1                     j    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	e
      Zy)
zUtil that calls Golden.    N)AnyDictOptionalget_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorzhttps://golden.comi  c                   z    e Zd ZU dZdZee   ed<    ed      Z	 e
d      eded	efd
              Zded	efdZy)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                 *    t        |dd      }||d<   |S )z?Validate that api key and python package exists in environment.r   GOLDEN_API_KEYr   )clsr   r   s      i/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/golden_query.pyvalidate_environmentz*GoldenQueryAPIWrapper.validate_environment   s)     .$&6
 $2     queryc                 T   d| j                   xs di}t        j                  t         dd|i|t              }|j
                  dk7  r|j                  S t        j                  |j                        }|d   }t        j                  t         d| d|t        	      }|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_ids         r   runzGoldenQueryAPIWrapper.run*   s     T006B7==67E""	
 3&== **X--.4=<<"##:8* E  "
 }}r   )__name__
__module____qualname____doc__r   r   str__annotations__r	   model_configr
   classmethodr   r   r   r0    r   r   r   r      sf     %)NHSM(L (#$ 3   $  r   r   )r4   r   typingr   r   r   r$   langchain_core.utilsr   pydanticr   r	   r
   r&   r'   r   r9   r   r   <module>r=      s3      & &  5 ; ;&5I 5r   