
    ci              	           d Z ddlmZ ddlmZ ddlmZ dZdZdZ		 dd	ej                  d
eeeeej                  f         dej                  fdZdej"                  dej                  fdZd	ej                  ddfdZy)z(Utility functions for prompt management.    )Optional)types   z1.0.0zKgs://google-cloud-aiplatform/schema/dataset/metadata/text_prompt_1.0.0.yamlmultimodal_freeformNprompt	variablesreturnc                    t        j                         }t        j                         }t        j                  | j                        |_        t        |_        t        |      |_	        |rg }|D ]~  }t        j                         }i |_        |j                         D ]=  \  }}t        j                  t        j                  |g            |j                  |<   ? |j                  |        ||_        |j
                  j"                  rL|j
                  j"                  j%                  dgd      }	t        j&                  di |	|j
                  _        ||_        t*        |_        |S )zBConvert a types.Prompt into types.SchemaTextPromptDatasetMetadata.)prompt_message)parts)	part_listr   T)excludeexclude_none )r   SchemaTextPromptDatasetMetadataSchemaPromptApiSchema SchemaPromptSpecMultimodalPromptprompt_datamultimodal_promptDEFAULT_API_SCHEMA_VERSIONapi_schema_versionboolhas_prompt_variable#SchemaPromptInstancePromptExecution	argumentsitems!SchemaPromptInstanceVariableValueSchemaPromptSpecPartListappend
executionsr   
model_dumpSchemaPromptSpecPromptMessageprompt_api_schemaPROMPT_TYPEprompt_type)
r   r   prompt_metadatar#   prompt_execution_list
prompt_varprompt_instance_executionkeyvalprompt_message_dicts
             O/tmp/pip-target-z3e9_cxr/lib/python/vertexai/_genai/_prompt_management_utils.py$_create_dataset_metadata_from_promptr.      se    ;;=O335*/*P*P))+' ,F(*.y/O' "# 		DJ(-(Q(Q(S%24%/&,,. S;;"'"@"@u"M *33C8 "(()BC		D (=$ **99//>>II$D J  	 //F2EF 	++: ):O%"-O    datasetc                 N   t        | d      r0| j                  $t        | j                  t        j                        st        d      | j                  j                  }t        j                         }||S |j                  r"|j                  j                  }||_
        |j                  r|j                  }|r|j                  g |j                  _        |D ]  }|j                  s|j                  }i }|j                         D ]Z  \  }}	|	j                  |	j                  j                   *|	j                  j                   }
|
sC|
d   j"                  sS|
d   ||<   \ |s|j                  j                  |j                  j                  j%                  |        |S )zConstructs a types.Prompt from a types.Dataset resource returned from the API.

    Args:
      dataset: The types.Dataset object containing the prompt metadata.

    Returns:
      A types.Prompt object reconstructed from the dataset metadata.
    metadatazGError retrieving prompt: prompt dataset resource is missing 'metadata'.r   )hasattrr2   
isinstancer   r   
ValueErrorr#   Promptr   r   r   r    r   r   r   r   r   textr   )r0   
api_schemar   r   r    	executionargsvar_mapr*   r+   r   s              r-   $_create_prompt_from_dataset_metadatar<   P   s|    GZ(#'**E,Q,QRU
 	
 !!33J\\^F###55DD+  #..Jf00</1"",!+ II **(22"$(,

 @HC # 9$'MM$7$7$C,/MM,?,?	#,11B1B3<Q<GCL@ #v'9'9'C'C'O"..88??HI Mr/   c                 X   | j                   st        d      | j                   j                  st        d      | j                   j                  st        d      | j                   rE| j                   j                  r.t	        | j                   j                        dkD  rt        d      y y y )NzPrompt data must be provided.z!Prompt contents must be provided.zModel name must be provided.r   z/Multi-turn prompts are not currently supported.)r   r5   contentsmodellen)r   s    r-   _raise_for_invalid_promptrA      s     899&&<==##788''""++,q0JKK 1 ( 	r/   )N)__doc__typingr   google.genair   genai_types r   PROMPT_SCHEMA_URIr$   r6   listdictstrPartr   r.   Datasetr<   rA   r   r/   r-   <module>rM      s    /  -  % Q  $
 >B.LL.T#{'7'7"789:. **.b1]]1
\\1hLLLL	Lr/   