
    [Th              	       	   d dl Z d dlZd dlmZmZmZ d dlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	l
mZ dd
l
mZ ddlmZmZ  ej*                  d      Z	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ	 d6deeeef   ef   deeeef      deeef   fdZ 	 d6deeeef   ef   deeeef      deeef   fdZ!	 d6deeeef   ef   deeeef      deeef   fdZ"	 d6deeeef   ef   deeeef      deeef   fdZ#	 d6deeeef   ef   deeeef      deeef   fdZ$	 d6deeeef   ef   deeeef      deeef   fdZ%	 d6deeeef   ef   deeeef      deeef   fdZ&	 d6deeeef   ef   deeeef      deeef   fdZ'	 d6deeeef   ef   deeeef      deeef   fdZ(	 d6deeeef   ef   deeeef      deeef   fdZ)	 d6deeeef   ef   deeeef      deeef   fd Z*	 d6deeeef   ef   deeeef      deeef   fd!Z+	 d6deeeef   ef   deeeef      deeef   fd"Z,	 d6deeeef   ef   deeeef      deeef   fd#Z-	 d6deeeef   ef   deeeef      deeef   fd$Z.	 d6deeeef   ef   deeeef      deeef   fd%Z/	 d6deeeef   ef   deeeef      deeef   fd&Z0	 d6deeeef   ef   deeeef      deeef   fd'Z1	 d6deeeef   ef   deeeef      deeef   fd(Z2	 d6deeeef   ef   deeeef      deeef   fd)Z3	 d6deeeef   ef   deeeef      deeef   fd*Z4	 d6deeeef   ef   deeeef      deeef   fd+Z5	 d6deeeef   ef   deeeef      deeef   fd,Z6	 d6deeeef   ef   deeeef      deeef   fd-Z7	 d6deeeef   ef   deeeef      deeef   fd.Z8	 d6deeeef   ef   deeeef      deeef   fd/Z9 G d0 d1e	jt                        Z; G d2 d3e	jt                        Z< G d4 d5      Z=y)7    N)AnyOptionalUnion)	urlencode   )_api_module)_common)_transformers)types)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.tuningsfrom_objectparent_objectreturnc                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             |S Nname_urlconfiggetvsetvr   r   	to_objects      Y/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/google/genai/tunings.py _GetTuningJobParameters_to_mldevr   #   ^     !)	+x ,VV$d;&AB	+z".XJ[8* =>	    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             |S N	page_size_querypageSize
page_token	pageTokenfilterr   r   s      r   _ListTuningJobsConfig_to_mldevr)   1        !)	+}%1*-tK+/O 
+~&2	;[<.) 
+z".8,d;
.KL	r    c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S Nr   )r   r   r)   r   s      r   "_ListTuningJobsParameters_to_mldevr-   I   sF     !)	+z".	
&xj)9	
 
r    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             |S r   r   r   s      r   #_CancelTuningJobParameters_to_mldevr/   Z   r   r    c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )N
text_input	textInputoutputr   r   s      r   _TuningExample_to_mldevr4   h   s[     !)	+~&2[M4l^#DE	+z".XJ[8* =>	r    c                     i }t        | dg      t        d      t        | dg      t        d      t        | dg      2t        |ddgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Ngcs_uriz1gcs_uri parameter is not supported in Gemini API.vertex_dataset_resourcezAvertex_dataset_resource parameter is not supported in Gemini API.examples)r   
ValueErrorr   r4   r   r   r   items       r   _TuningDataset_to_mldevr<   v   s     !)	+	{#/
H
II	+123?
K  
+
|$0	Z  [:,7	
 $D)4	
 
	
s   A4c                    i }t        | dg      t        d      t        | dg      t        |dgt        | dg             t        | dg      t        d      t        | dg      t        |g dt        | dg             t        | d	g      t        |g d
t        | d	g             t        | dg      t        d      t        | dg      t        d      t        | dg      t        d      t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        d      t        | dg      t        d      |S )Nvalidation_datasetz<validation_dataset parameter is not supported in Gemini API.tuned_model_display_namedisplayNamedescriptionz5description parameter is not supported in Gemini API.epoch_count)
tuningTaskhyperparameters
epochCountlearning_rate_multiplier)rC   rD   learningRateMultiplierexport_last_checkpoint_onlyzEexport_last_checkpoint_only parameter is not supported in Gemini API.pre_tuned_model_checkpoint_idzGpre_tuned_model_checkpoint_id parameter is not supported in Gemini API.adapter_sizez6adapter_size parameter is not supported in Gemini API.
batch_size)rC   rD   	batchSizelearning_rate)rC   rD   learningRateevaluation_configz;evaluation_config parameter is not supported in Gemini API.labelsz0labels parameter is not supported in Gemini API.)r   r9   r   r   s      r   _CreateTuningJobConfig_to_mldevrQ      s    !)	+,-.:
F  
+234@	[567 
+'3
L
MM	+'37[=/* 
+234@C[567 
+567C
O  
+789E
	 
 
+'(4
M
NN	+~&26[<.) 
+()59[?+, 
++,-9
E  
+z".
G
HH	r    c           
      d   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      #t        |dgt        t        | dg      |             |S )	N
base_model	baseModelpre_tuned_modelpreTunedModeltraining_datasetrC   trainingDatar   )r   r   r<   rQ   r   s      r   *_CreateTuningJobParametersPrivate_to_mldevrY      s     !)	+~&2[M4l^#DE	+)*+7_%tK:K9L'MN	+*+,8	~&123Y	
 
+z".	
'xj)9	
 
r    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             |S r   r   r   s      r   !_GetTuningJobParameters_to_vertexr[      r   r    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             |S r"   r   r   s      r   _ListTuningJobsConfig_to_vertexr]     r*   r    c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S r,   )r   r   r]   r   s      r   #_ListTuningJobsParameters_to_vertexr_      sF     !)	+z".	
'xj)9	
 
r    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             |S r   r   r   s      r   $_CancelTuningJobParameters_to_vertexra   1  r   r    c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        d      |S )Nr6   supervisedTuningSpectrainingDatasetUrir7   r8   z1examples parameter is not supported in Vertex AI.)r   r   r9   r   s      r   _TuningDataset_to_vertexre   ?  s     !)	+	{#/	!56[9+& 
+123?	!56[456 
+
|$0
H
II	r    c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |ddgt        | dg             |S )Nr6   validationDatasetUrir7   rc   rd   r   r   s      r   "_TuningValidationDataset_to_vertexrh   X  sl     !)	+	{#/+,d;.LM	+123?	!56[456 
r    c                 V    i }t        | dg      t        |dgt        | dg             |S )Noutput_uri_prefixoutputUriPrefixr   r   s      r   _GcsDestination_to_vertexrl   j  s@     !)	++,-9%&[;N:O(P 
r    c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Ngcs_destinationgcsDestination)r   r   rl   r   s      r   _OutputConfig_to_vertexrp   w  sK     !)	+)*+7	!012I	
 
r    c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nsampling_countsamplingCountflip_enabledflipEnabledautorater_modelautoraterModelr   r   s      r   _AutoraterConfig_to_vertexrx     s     !)	+()*6_%tK:J9K'LM	+'(4]OT+7G%HI	+)*+7%&[;L:M(NO	r    c           
      <   i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      #t        |dgt	        t        | dg      |             t        | dg      #t        |dgt        t        | dg      |             |S )Nmetricsoutput_configoutputConfigautorater_configautoraterConfig)r   r   t	t_metricsrp   rx   r   s      r   _EvaluationConfig_to_vertexr     s     !)	+	{#/YKT+	{-K!LM	+()5	/0)	
 
+*+,8	"123Y	
 
r    c           
         i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g d	t        | dg             t        | d
g      t        |ddgt        | d
g             t        | dg      t        |ddgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        d      t        | dg      t        d      t        | dg      $t        |ddgt	        t        | dg      |             t        | dg      t        |dgt        | dg             |S )Nr>   rc   r?   tunedModelDisplayNamerA   rB   )rc   hyperParametersrE   rF   )rc   r   rG   rH   exportLastCheckpointOnlyrI   rV   checkpointIdrJ   )rc   r   adapterSizerK   z3batch_size parameter is not supported in Vertex AI.rM   z6learning_rate parameter is not supported in Vertex AI.rO   evaluationConfigrP   )r   r   rh   r9   r   r   s      r    _CreateTuningJobConfig_to_vertexr     s/    !)	+,-.:	 *345y	
 
+234@	 ![567 
+'3kM?)KL	+'3A[=/* 
+234@M[567 
+567C	!;<[89: 
+789E	.)[:;< 
+'(4B[>*+ 
+~&2
J
KK	+()5
M
NN	++,-9	!34#234i	
 
+z".
Dxj$AB	r    c           
      d   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      #t        |dgt        t        | dg      |             |S )	NrS   rT   rU   rV   rW   rc   rd   r   )r   r   re   r   r   s      r   +_CreateTuningJobParametersPrivate_to_vertexr     s     !)	+~&2[M4l^#DE	+)*+7_%tK:K9L'MN	+*+,8	!56 123Y	
 
+z".	
(xj)9	
 
r    c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   modelendpointr   r   s      r   _TunedModel_from_mldevr   '  s[     !)	+x ,WItK&:;	+x ,ZL${VH"=>	r    c           
      X   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | ddg      t        |d	gt        | ddg             t        | dd
g      t        |dgt        | dd
g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt	        t        | dg      |             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )NsdkHttpResponsesdk_http_responser   state
createTimecreate_timerC   	startTime
start_timecompleteTimeend_time
updateTimeupdate_timerA   rT   rS   _selftuned_modelcustomBaseModelcustom_base_model
experimentrP   	outputUri
output_uripipelineJobpipeline_jobserviceAccountservice_accountr   r?   )r   r   r   t_tuning_job_statusr   r   s      r   _TuningJob_from_mldevr   5  s    !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+y!-			d;	:; 
+~&2]OT+~%FG	+k23?	[<56 
+n56B	[<89 
+~&2]OT+~%FG	+'3]OT+%GH	+}%1\ND{m$DE	+y!-	tK';YG 
+)*+7'(${=N<O*P 
+~&2\ND|n$EF	+z".XJ[8* =>	+}%1\ND{m$DE	+'3^$d;&HI	+()*6&'k<L;M)NO	+/01=	#$[234 
r    c                 (   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   r   nextPageTokennext_page_tokentunedModelstuning_jobs)r   r   r   r:   s       r   "_ListTuningJobsResponse_from_mldevr     s     !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+'3	 [=/:	
 "$	2	
 
	
   3Bc                    i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   r   r   metadatadoneerrorr   r   s      r   _TuningOperation_from_mldevr     s     !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+
|$0ZL${ZL"AB	+x ,VHd;9:	+y!-WItK';<	r    c                 :   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   checkpoint_idepochstepr   r   r   s      r   !_TunedModelCheckpoint_from_vertexr     s     !)	+'(4_%tK.9I'JK	+y!-WItK';<	+x ,VHd;9:	+
|$0ZL${ZL"AB	r    c                 (   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   r   checkpoints)r   r   r   r:   s       r   _TunedModel_from_vertexr     s     !)	+y!-WItK';<	+
|$0ZL${ZL"AB	+'3	 [=/:	
 .dI>	
 
	
r   c                 V    i }t        | dg      t        |dgt        | dg             |S )Nrk   rj   r   r   s      r   _GcsDestination_from_vertexr     s@     !)	+)*+7'(${=N<O*P 
r    c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Nro   rn   )r   r   r   r   s      r   _OutputConfig_from_vertexr     sK     !)	+()*6	#/019	
 
r    c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nrs   rr   ru   rt   rw   rv   r   r   s      r   _AutoraterConfig_from_vertexr     s     !)	+()5%&[?:K(LM	+'3^$d;&HI	+()*6&'k<L;M)NO	r    c           
      <   i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      #t        |dgt	        t        | dg      |             t        | dg      #t        |dgt        t        | dg      |             |S )Nrz   r|   r{   r~   r}   )r   r   r   r   r   r   r   s      r   _EvaluationConfig_from_vertexr     s     !)	+	{#/YKT+	{-K!LM	+'(4	!~./	
 
+)*+7	$012I	
 
r    c           
      x   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | d	g      t        |d
gt        | d	g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt	        t        | dg      |             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |d gt        | dg             t        | d!g      t        |d!gt        | d!g             t        | d"g      t        |d"gt        | d"g             t        | d#g      t        |d$gt        | d#g             t        | d%g      t        |d&gt        | d%g             t        | d'g      t        |d(gt        | d'g             t        | d)g      t        |d*gt        | d)g             |S )+Nr   r   r   r   r   r   r   r   endTimer   r   r   r   rA   rT   rS   
tunedModelr   rV   rU   rc   supervised_tuning_spectuningDataStatstuning_data_statsencryptionSpecencryption_specpartnerModelTuningSpecpartner_model_tuning_specr   rO   r   r   r   rP   r   r   r   r   r   r   r   r?   )r   r   r   r   r   r   r   s      r   _TuningJob_from_vertexr   3  s+    !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+y!-			d;	:; 
+~&2]OT+~%FG	+}%1\ND{m$DE	+	{#/ZL${YK"@A	+~&2]OT+~%FG	+y!-WItK';<	+'3]OT+%GH	+}%1\ND{m$DE	+~&2	[<. A9M 
+()5&'kO;L)MN	+./0<	!"[123 
+)*+7'(${=N<O*P 
+()*6&'k<L;M)NO	+012>	$%[345 
+*+,8	%123Y	
 
+)*+7'(${=N<O*P 
+~&2\ND|n$EF	+z".XJ[8* =>	+}%1\ND{m$DE	+'3^$d;&HI	+()*6&'k<L;M)NO	+/01=	#$[234 
r    c                 (   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   r   r   r   
tuningJobsr   )r   r   r   r:   s       r   #_ListTuningJobsResponse_from_vertexr     s     !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+~&2	 [<.9	
 #43	
 
	
r   c                      e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZdddedeej                     ddfdZdddd	d
ee   deej                     dej                  deej                      dej                  f
dZdddd	d
ee   deej                     dej                  deej                      dej$                  f
dZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej0                  d      ddd
edej                  deej                      dej                  fd       Zy)TuningsNr   r   r   r   c                *   t        j                  ||      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	|	j                   sd	nt#        j$                  |	j                         }
| j                  j                  rt'        |
      }
nt)        |
      }
t         j*                  j-                  |
|j/                         
      }t        j0                  |	j2                        |_        | j                  j7                  |       |S zzGets a TuningJob.

    Args:
      name: The resource name of the tuning job.

    Returns:
      A TuningJob object.
    r   r   r   z{name}r$   ?r   Nget responsekwargsheaders)r   _GetTuningJobParameters_api_clientvertexair[   r   
format_mapr   r   popr   http_optionsr	   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsr   r   	TuningJob_from_response
model_dumpHttpResponser   r   _verify_responseselfr   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr   r   response_dictreturn_values               r   _getzTunings._get  s    33O   6Gl%))&1	""#345oFl%))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  ,];m ,M:m??11'A'A'C 2 L &+%7%7  &L" 	%%l3r    c                (   t        j                  |      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||      }|j                   sd
nt#        j$                  |j                         }	| j                  j                  rt'        |	      }	nt)        |	      }	t         j*                  j-                  |	|j/                               }
t        j0                  |j2                        |
_        | j                  j7                  |
       |
S zLists `TuningJob` objects.

    Args:
      config: The configuration for the list request.

    Returns:
      A list of `TuningJob` objects.
    r   r   r   r   r$   r   r   Nr   r   r   r   )r   _ListTuningJobsParametersr   r   r_   r   r   r-   r   r   r   r   r	   r   r   r   r   r   r   r   r   ListTuningJobsResponser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s              r   _listzTunings._list  s    55O   8Il%))&1	&&'787Hl%))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  9-Hm 9Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3r    c                   t        j                  ||      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	y)	zPCancels a tuning job.

    Args:
      name (str): TuningJob resource name.
    r   r   {name}:cancelr$   r   r   Npost)r   _CancelTuningJobParametersr   r   ra   r   r   r/   r   r   r   r   r	   r   r   r   
r   r   r   r   r   r   r   r   r   r   s
             r   cancelzTunings.cancelI  s?    66O   9/Jl%))&1	))*:;8Il%))&1	))*:;##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLHr    rS   rU   r   rS   rU   rW   c                   t        j                  ||||      }| j                  j                  st	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
      }|j                   sd
nt#        j$                  |j                         }| j                  j                  rt'        |      }t         j(                  j+                  ||j-                               }t        j.                  |j0                        |_        | j                  j5                  |       |S a  Creates a supervised fine-tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob object.
    rS   rU   rW   r   z6This method is only supported in the Vertex AI client.r   r   r$   r   r   Nr  r   r   r   )r   !_CreateTuningJobParametersPrivater   r   r9   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   rU   rW   r   r   r   r   r   r   r   r   r   r   s                 r   _tunezTunings._tune~  s   & ==')	O $$OPP@
l &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  ,];m??11'A'A'C 2 L &+%7%7  &L" 	%%l3r    c                   t        j                  ||||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
      }|j                   sd
nt#        j$                  |j                         }| j                  j                  st'        |      }t         j(                  j+                  ||j-                               }t        j.                  |j0                        |_        | j                  j5                  |       |S a"  Creates a supervised fine-tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob operation.
    r  z=This method is only supported in the Gemini Developer client.r   r   r$   r   r   Nr  r   r   r   )r   r  r   r   r9   rY   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   TuningOperationr   r   r   r   r   r   r  s                 r   _tune_mldevzTunings._tune_mldev  s   & ==')	O   
I  @Pl%))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM$$1-@m((77'A'A'C 8 L &+%7%7  &L" 	%%l3r    c                R    t        d| j                  | j                  |      |      S Nr   r   )r   r  r   r   s     r   listzTunings.list  s,     



&
!	 r    c                   | j                  ||      }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S Nr   )r   projectr   r   r   r   r  _IpythonUtilsdisplay_experiment_buttonr   r   r   jobs       r   r   zTunings.get  sn     ))f)
-C%%$$0--^^""** .  Jr    SThe SDK's tuning implementation is experimental, and may change in future versions.c                   | j                   j                  rf|j                  d      r,t        j                  |      }| j                  |||      }nd }|t        |dd       t        |d      }t        |t              rt        j                  di |}|j                  r|j                  st        d      t        t        |j                              D ]Y  }t        |j                  |   t              s!t        j                  j!                  |j                  |         |j                  |<   [ t        |t              r||d<   n||_        |}| j                  |||      }|t        |dd       ||_        n| j%                  |||      }	|	j&                  d|	j&                  v r|	j&                  d   }
n5|	j(                  t        d      |	j(                  j+                  d	      d
   }
t        j,                  |
t        j.                  j0                        }|j(                  r6| j                   j                  r t2        j5                  |j(                         |S Nz	projects/)tuned_model_name)rU   rW   r   rO   zEEvaluation config must have at least one metric and an output config.)rS   rW   r   r   zOperation name is required.z/operations/r   )r   r   )tuning_job_resource r   r   
startswithr   PreTunedModelr  getattr
isinstancedictEvaluationConfigrz   r{   r9   rangelenMetricmodel_validaterO   r  r   r   	partitionr   JobStateJOB_STATE_QUEUEDr  display_model_tuning_button)r   rS   rW   r   rU   
tuning_jobvalidated_evaluation_configrO   i	operationr"  s              r   tunezTunings.tune,  sW      			{	+--zJZZ+-   

 IM# 3T:F%f.AB
)40 % 6 6 K9J K#++&44  .6678 a+33A6=-2\\-H-H#++A..''*
 %*;F&''8F$(9
%ZZ!-   

  3T:F)D*
&""+ # i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  r    )__name__
__module____qualname__strr   r   GetTuningJobConfigOrDictr   r   ListTuningJobsConfigOrDictr   r  CancelTuningJobConfigOrDictr  PreTunedModelOrDictTuningDatasetOrDictCreateTuningJobConfigOrDictr  r  r  r   r  r   r	   experimental_warningr8  r$  r    r   r   r     sV    :>	E E u556	E
 EP EIA @ @AA##AN =A	3 3 u889	3
 3p #'=A<@G 3-G   9 9:	G
 11G u889G GX #'=A<@G 3-G   9 9:	G
 11G u889G GT EI @ @AU__ :>	  u556	
 $  7+ =AH H 11	H
 u889H H	Hr    r   c                      e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZdddedeej                     ddfdZdddd	d
ee   deej                     dej                  deej                      dej                  f
dZdddd	d
ee   deej                     dej                  deej                      dej$                  f
dZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej0                  d      ddd
edej                  deej                      dej                  fd       Zy)AsyncTuningsNr   r   r   r   c                F  K   t        j                  ||      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d{   }	|	j                   sd	nt#        j$                  |	j                         }
| j                  j                  rt'        |
      }
nt)        |
      }
t         j*                  j-                  |
|j/                         
      }t        j0                  |	j2                        |_        | j                  j7                  |       |S 7 ϭwr   )r   r   r   r   r[   r   r   r   r   r   r   r   r	   r   r   async_requestr   r   r   r   r   r   r   r   r   r   r   r   r   s               r   r   zAsyncTunings._get}  s     33O   6Gl%))&1	""#345oFl%))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  ,];m ,M:m??11'A'A'C 2 L &+%7%7  &L" 	%%l3's   EH!HCH!c                D  K   t        j                  |      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||       d{   }|j                   sd
nt#        j$                  |j                         }	| j                  j                  rt'        |	      }	nt)        |	      }	t         j*                  j-                  |	|j/                               }
t        j0                  |j2                        |
_        | j                  j7                  |
       |
S 7 ϭwr   )r   r   r   r   r_   r   r   r-   r   r   r   r   r	   r   r   rG  r   r   r   r   r   r   r   r   r   r   r   r   r   s              r   r  zAsyncTunings._list  s     55O   8Il%))&1	&&'787Hl%))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  9-Hm 9Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3's   EH HCH c                  K   t        j                  ||      }| j                  j                  r3t	        |      }|j                  d      }|rdj                  |      }n5d}n2t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d{   }	y7 w)	zaCancels a tuning job asynchronously.

    Args:
      name (str): A TuningJob resource name.
    r   r   r  r$   r   r   Nr  )r   r  r   r   ra   r   r   r/   r   r   r   r   r	   r   r   rG  r  s
             r   r  zAsyncTunings.cancel  sM     66O   9/Jl%))&1	))*:;8Il%))&1	))*:;##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H s   EEEEr  rS   rU   rW   c                  K   t        j                  ||||      }| j                  j                  st	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
       d{   }|j                   sd
nt#        j$                  |j                         }| j                  j                  rt'        |      }t         j(                  j+                  ||j-                               }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íwr
  )r   r  r   r   r9   r   r   r   r   r   r   r   r	   r   r   rG  r   r   r   r   r   r   r   r   r   r   r   r  s                 r   r  zAsyncTunings._tune@  s    & ==')	O $$OPP@
l &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  ,];m??11'A'A'C 2 L &+%7%7  &L" 	%%l3!   D'G/)G-*CG/c                  K   t        j                  ||||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
       d{   }|j                   sd
nt#        j$                  |j                         }| j                  j                  st'        |      }t         j(                  j+                  ||j-                               }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íwr  )r   r  r   r   r9   rY   r   r   r   r   r   r   r	   r   r   rG  r   r   r   r   r  r   r   r   r   r   r   r  s                 r   r  zAsyncTunings._tune_mldev  s    & ==')	O   
I  @Pl%))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM$$1-@m((77'A'A'C 8 L &+%7%7  &L" 	%%l3!rK  c                n   K   t        d| j                  | j                  |       d {   |      S 7 	wr  )r   r  r  s     r   r  zAsyncTunings.list  s8      

jjj''	  	(s   '53
5c                "  K   | j                  ||       d {   }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S 7 swr  r  r  s       r   r   zAsyncTunings.get  sz      		tF	3
3C%%$$0--^^""** .  J 4s   BBA4Br  c                  K   | j                   j                  r\|j                  d      r4t        j                  |      }| j                  |||       d {   }n|t        |dd       t        |d      }t        |t              rt        j                  di |}|j                  r|j                  st        d      t        t        |j                              D ]Y  }t        |j                  |   t              s!t        j                  j!                  |j                  |         |j                  |<   [ t        |t              r||d<   n||_        | j                  |||       d {   }n| j%                  |||       d {   }|j&                  d|j&                  v r|j&                  d   }	n5|j(                  t        d      |j(                  j+                  d	      d
   }	t        j,                  |	t        j.                  j0                        }|j(                  r6| j                   j                  r t2        j5                  |j(                         |S 7 7 7 ۭwr!  r%  )
r   rS   rW   r   rU   r4  rO   r6  r7  r"  s
             r   r8  zAsyncTunings.tune  sP       			{	+--zJ::+- & 
 

  3T:F%f.AB
)40 % 6 6 K9J K#++&44  .6678 a+33A6=-2\\-H-H#++A..''*
 %*;F&''8F$::!- & 
 

 ((+ )  i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  o
<
s?   AI+I$B'I+A/I+0I'1I+I)CI+'I+)I+)r9  r:  r;  r<  r   r   r=  r   r   r>  r   r  r?  r  r@  rA  rB  r  r  r  r   r  r   r	   rC  r8  r$  r    r   rE  rE  {  sV    :>	G G u556	G
 GT EIC @ @AC##CR =A	3 3 u889	3
 3p #'=A<@G 3-G   9 9:	G
 11G u889G GX #'=A<@G 3-G   9 9:	G
 11G u889G GT EI @ @A%//" :>	  u556	
 $  7+ =AB B 11	B
 u889B B	Br    rE  c            
          e Zd ZU dZ e       Zee   ed<   ede	ee
f   fd       Zedefd       Zedefd       Zededee   defd	       Ze	 dd
ededee   ddfd       Zedededdfd       Zededdfd       Zy)r  z6Temporary class to hold the IPython related functions.displayed_experimentsr   c                  j    dd l } d| j                  v r!ddlm}  |       j                  j
                  S y)Nr   IPython)get_ipythonr   )sysmodulesrS  rT  	__class__r9  )rU  rT  s     r   _get_ipython_shell_namez%_IpythonUtils._get_ipython_shell_name<  s+    CKK%]$$---r    c                  <    t        t        j                               S N)boolr  rX  r$  r    r   is_ipython_availablez"_IpythonUtils.is_ipython_availableF  s    55788r    c                       y)z8Returns the HTML style markup to support custom buttons.a  
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <style>
      .view-vertex-resource,
      .view-vertex-resource:hover,
      .view-vertex-resource:visited {
        position: relative;
        display: inline-flex;
        flex-direction: row;
        height: 32px;
        padding: 0 12px;
          margin: 4px 18px;
        gap: 4px;
        border-radius: 4px;

        align-items: center;
        justify-content: center;
        background-color: rgb(255, 255, 255);
        color: rgb(51, 103, 214);

        font-family: Roboto,"Helvetica Neue",sans-serif;
        font-size: 13px;
        font-weight: 500;
        text-transform: uppercase;
        text-decoration: none !important;

        transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
        box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active {
        box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active .view-vertex-ripple::before {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        border-radius: 4px;
        pointer-events: none;

        content: '';
        background-color: rgb(51, 103, 214);
        opacity: 0.12;
      }
      .view-vertex-icon {
        font-size: 18px;
      }
    </style>
  r$  r$  r    r   _get_stylesz_IpythonUtils._get_stylesJ  s    1r    markerresource_partsc                 ~    t        t        |            D ]&  }||   | k(  s|dz   t        |      k  s||dz      c S  y)z,Returns the part after the marker text part.r   r   )r,  r-  )r_  r`  r6  s      r   _parse_resource_namez"_IpythonUtils._parse_resource_name  sN     3~&' %		f	$Q^1D)Da!e$$% r    texturliconNc                 "   d}|j                  |      st        d| d      ddl}dt        |j	                                }dt
        j                          d| d	| d
| d|  d}|d| d| d| dz  }ddlm} ddlm	}  | ||             y)a&  Creates and displays the link to open the Vertex resource.

    Args:
      text: The text displayed on the clickable button.
      url: The url that the button will lead to. Only cloud console URIs are
        allowed.
      icon: The icon name on the button (from material-icons library)
    z https://console.cloud.google.comzOnly urls starting with z are allowed.r   Nzview-vertex-resource-z	
        z-
        <a class="view-vertex-resource" id="z" href="#view-z;">
          <span class="material-icons view-vertex-icon">z</span>
          <span>z</span>
        </a>
        z]
        <script>
          (function () {
            const link = document.getElementById('z');
            link.addEventListener('click', (e) => {
              if (window.google?.colab?.openUrl) {
                window.google.colab.openUrl('z8');
              } else {
                window.open('z', '_blank');
              }
              e.stopPropagation();
              e.preventDefault();
            });
          })();
        </script>
    )display)HTML)
r&  r9   uuidr<  uuid4r  r^  IPython.displayrg  rh  )	rc  rd  re  CLOUD_UI_URLri  	button_idhtmlrg  rh  s	            r   _display_linkz_IpythonUtils._display_link  s     6L>>,'1,}MNN'DJJL(9':;I			"	"	$% &--6K~i[ Q99= ? 		D 	 3 4=+ >. /2U 3!U # D" ($DJr    r   r  c                    t         j                         r| t         j                  v ry| j                  d      }|d   }|d   }d| d| dz   d| z   }t         j	                  d|d	       t         j                  j                  |        y)
a  Function to generate a link bound to the Vertex experiment.

    Args:
      experiment: The Vertex experiment name. Example format:
        projects/{project_id}/locations/{location}/metadataStores/default/contexts/{experiment_name}
      project: The project (alphanumeric) name.
    N/   zAhttps://console.cloud.google.com/vertex-ai/experiments/locations/z/experiments/zruns?project=zView Experimentscience)r  r\  rQ  splitro  add)r   r  r`  locationexperiment_nameuris         r   r  z'_IpythonUtils.display_experiment_button  s     ..0<<<  %%c*Na H$R(O 	LJmO#4A
6	7'
#	$ 
  13	B ''++J7r    r#  c                     t         j                         sy| j                  d      }|d   }|d   }|d   }dd| d| z   d	| z   }t         j                  d
|d       y)zFunction to generate a link bound to the Vertex model tuning job.

    Args:
      tuning_job_resource: The Vertex tuning job name. Example format:
        projects/{project_id}/locations/{location}/tuningJobs/{tuning_job_id}
    Nrq  r   rr  rs  z?https://console.cloud.google.com/vertex-ai/generative/language/z
locations/z/tuning/tuningJob/z	?project=zView Tuning Jobr8  )r  r\  ru  ro  )r#  r`  r  rw  tuning_job_idry  s         r   r3  z)_IpythonUtils.display_model_tuning_button  s     --/(..s3NQGa H"2&M 	Jxj 2=/
B	CgY
	  
  13?r    )open_in_new)r9  r:  r;  __doc__setrQ  r<  __annotations__staticmethodr   r   rX  r[  r\  r^  r  rb  r   ro  r  r3  r$  r    r   r  r  7  s&   >$'ES)5c?   9 9 9 3s 3 3j 3 S	 c   1>111!)#11 1f 8C 8# 8$ 8 8: @s @t @ @r    r  rZ  )>r   loggingtypingr   r   r   urllib.parser   r   r   r	   r
   r   r   r   r   r   r   pagersr   r   	getLoggerloggerr*  r<  objectr   r)   r-   r/   r4   r<   rQ   rY   r[   r]   r_   ra   re   rh   rl   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
BaseModuler   rE  r  r$  r    r   <module>r     s	  $   ' ' "      . . % 
		1	2
 /3tCH~v-.DcN+ 
#s(^  /3tCH~v-.DcN+ 
#s(^4 /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^  /3tCH~v-.DcN+ 
#s(^  /3tCH~v-.DcN+ 
#s(^8 /3GtCH~v-.GDcN+G 
#s(^GX /3tCH~v-.DcN+ 
#s(^D /3tCH~v-.DcN+ 
#s(^  /3tCH~v-.DcN+ 
#s(^4 /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^  /3tCH~v-.DcN+ 
#s(^6 /3tCH~v-.DcN+ 
#s(^( /3
tCH~v-.
DcN+
 
#s(^
 /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^> /3NtCH~v-.NDcN+N 
#s(^Nf /3tCH~v-.DcN+ 
#s(^D /3tCH~v-.DcN+ 
#s(^  /3PtCH~v-.PDcN+P 
#s(^Pj /3tCH~v-.DcN+ 
#s(^8 /3tCH~v-.DcN+ 
#s(^6 /3tCH~v-.DcN+ 
#s(^, /3tCH~v-.DcN+ 
#s(^4 /3
tCH~v-.
DcN+
 
#s(^
 /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^& /3tCH~v-.DcN+ 
#s(^> /3mtCH~v-.mDcN+m 
#s(^md /3tCH~v-.DcN+ 
#s(^4{k$$ {|y;)) yxx@ x@r    