
    jH              
       ~   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ ddlmZ  ej                  e      Zeeef   Zdeeeef      deeej(                        deeeeef      eee      f   fd	Z	 	 dd
eej(                     deeej(                        deeej(                        fdZdee   defdZy)    N)AnyDictListMappingOptionalTuple)
id_helpers   )base_promptexperiment_configpromptsreturnc                 B   d }| i } nt        j                  |       } t        | t              st        j                  d|        i } |+t        |      dkD  rd| v rt        j                  d       | d fS |t        |      dkD  rg }i | d<   |D ]t  }|j                  d|j                  i       |j                         }d|v s5d|d   v r|d   d   | d   |j                  <   Ud|d   v s]|d   d   | d   |j                  <   v | i k(  ry	t        j                  |       }||fS )
Nz[Experiment config must be dictionary, but %s was provided. Provided config will be ignored.r   r   zwThe `prompts` parameter will not be added to experiment since there is already `prompts` specified in experiment_configidversiontemplatemessagesNN)copydeepcopy
isinstancer   LOGGERerrorlenwarningappend__internal_api__version_id____internal_api__to_info_dict__namejsonable_encoderencode)r   r   prompt_versions
prompt_objprompt_infometadatas         |/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/api_objects/experiment/helpers.py"build_metadata_and_prompt_versionsr'      sm    6:O  MM*;<'1i	
 s7|a/IAR4R F	
 !$&&s7|a/'))$!J""D**Q*Q#RS$CCEKK'Y!77DO!E E"%i0A  ;y#99DO!E E"%i0A " B&&'89H_$$    promptc                     |'t        |      dkD  r| t        j                  d       |S | | g}|S |t        |      dk(  rd }|S )Nr   zQArguments `prompt` and `prompts` are mutually exclusive, `prompts` will be used`.)r   r   r   )r)   r   s     r&   handle_prompt_argsr+   C   sc     s7|a/F4F_	
 N 
	( N 
	W!2Nr(   experiment_name_prefixc                 d    | t        j                  d      S |  dt        j                  d       S )N   -   )r	   #generate_random_alphanumeric_string)r,   s    r&   generate_unique_experiment_namer2   S   s<    %==bAA "
"!J$R$RST$U#VWr(   r   )r   loggingtypingr   r   r   r   r   r   opikr	   opik.jsonable_encoderr    r)   r   	getLogger__name__r   strPromptVersion
BasePromptr'   r+   r2    r(   r&   <module>r=      s     < <  0   
		8	$S#X0%S#X/0%d;11230% 8DcN#Xd=.A%BBC0%h 046:[++,d;1123 d;))*+ HSM c r(   