o
    "iW                    @   sx  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dZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ		d[deeeef ef deeeef  deeeeef ef  deeef fddZ 		d[deeeef ef deeeef  deeeeef ef  deeef fdd Z!		d[deeeef ef deeeef  deeeeef ef  deeef fd!d"Z"		d[deeeef ef deeeef  deeeeef ef  deeef fd#d$Z#		d[deeeef ef deeeef  deeeeef ef  deeef fd%d&Z$		d[deeeef ef deeeef  deeeeef ef  deeef fd'd(Z%		d[deeeef ef deeeef  deeeeef ef  deeef fd)d*Z&		d[deeeef ef deeeef  deeeeef ef  deeef fd+d,Z'		d[deeeef ef deeeef  deeeeef ef  deeef fd-d.Z(		d[deeeef ef deeeef  deeeeef ef  deeef fd/d0Z)		d[deeeef ef deeeef  deeeeef ef  deeef fd1d2Z*		d[deeeef ef deeeef  deeeeef ef  deeef fd3d4Z+		d[deeeef ef deeeef  deeeeef ef  deeef fd5d6Z,		d[deeeef ef deeeef  deeeeef ef  deeef fd7d8Z-		d[deeeef ef deeeef  deeeeef ef  deeef fd9d:Z.		d[deeeef ef deeeef  deeeeef ef  deeef fd;d<Z/		d[deeeef ef deeeef  deeeeef ef  deeef fd=d>Z0		d[deeeef ef deeeef  deeeeef ef  deeef fd?d@Z1		d[deeeef ef deeeef  deeeeef ef  deeef fdAdBZ2		d[deeeef ef deeeef  deeeeef ef  deeef fdCdDZ3		d[deeeef ef deeeef  deeeeef ef  deeef fdEdFZ4		d[deeeef ef deeeef  deeeeef ef  deeef fdGdHZ5		d[deeeef ef deeeef  deeeeef ef  deeef fdIdJZ6		d[deeeef ef deeeef  deeeeef ef  deeef fdKdLZ7		d[deeeef ef deeeef  deeeeef ef  deeef fdMdNZ8		d[deeeef ef deeeef  deeeeef ef  deeef fdOdPZ9		d[deeeef ef deeeef  deeeeef ef  deeef fdQdRZ:		d[deeeef ef deeeef  deeeeef ef  deeef fdSdTZ;G dUdV dVe	j<Z=G dWdX dXe	j<Z>G dYdZ dZZ?dS )\    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root_objectreturnc                 C      i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urRt|dgtt | dg|| |S )	NsamplingCountsampling_countflipEnabledflip_enabledautoraterModelautorater_modelgenerationConfiggeneration_config)getvsetv_GenerationConfig_from_vertexr   r   r   	to_object r!   Y/var/www/html/crm_dreinet/venv_linux/lib/python3.10/site-packages/google/genai/tunings.py_AutoraterConfig_from_vertex#       r#   c                 C   r   )	Nr   r   r   r   r   r   r   r   )r   r   _GenerationConfig_to_vertexr   r!   r!   r"   _AutoraterConfig_to_vertex>   r$   r&   c                 C   0   i }t | dgd urt|ddgt | dg |S Nname_urlr   r   r   r!   r!   r"   #_CancelTuningJobParameters_to_mldevY      r,   c                 C   r'   r(   r+   r   r!   r!   r"   $_CancelTuningJobParameters_to_vertexe   r-   r.   c                 C   .   i }t | dgd urt|dgt | dg |S NsdkHttpResponsesdk_http_responser+   r   r!   r!   r"   #_CancelTuningJobResponse_from_mldevq      r3   c                 C   r/   r0   r+   r   r!   r!   r"   $_CancelTuningJobResponse_from_vertex   r4   r5   c                 C   s<  i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur-tdt | dgd urAt|g dt | dg t | d	gd urUt|g d
t | d	g t | dgd uratdt | dgd urmtdt | dgd urytdt | dgd urtdt | dgd urtdt | dgd urt|g dt | dg t | dgd urt|g dt | dg t | dgd urtdt | dgd urtdt | dgd urtdt | dgd urtd t | d!gd urtd"t | d#gd urtd$t | d%gd urtd&t | d'gd ur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)r;   r<   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.tuning_modez5tuning_mode parameter is not supported in Gemini API.custom_base_modelz;custom_base_model parameter is not supported in Gemini API.
batch_size)r;   r<   	batchSizelearning_rate)r;   r<   learningRateevaluation_configz;evaluation_config parameter is not supported in Gemini API.labelsz0labels parameter is not supported in Gemini API.betaz.beta parameter is not supported in Gemini API.base_teacher_modelz<base_teacher_model parameter is not supported in Gemini API.tuned_teacher_model_sourcezDtuned_teacher_model_source parameter is not supported in Gemini API.sft_loss_weight_multiplierzDsft_loss_weight_multiplier parameter is not supported in Gemini API.
output_uriz4output_uri parameter is not supported in Gemini API.encryption_specz9encryption_spec parameter is not supported in Gemini API.r   
ValueErrorr   r   r!   r!   r"   _CreateTuningJobConfig_to_mldev   s   




rS   c                 C   s  i }t |ddg}|d u rd}|dkr+t | dgd ur*t|dgtt | dg|| n7|dkrGt | dgd urFt|dgtt | dg|| n|dkrbt | dgd urbt|d	gtt | dg|| t | d
gd urut|dgt | d
g t | dgd urt|dgt | dg t |ddg}|d u rd}|dkrt | dgd urt|g dt | dg n1|dkrt | dgd urt|g dt | dg n|dkrt | dgd urt|g dt | dg t |ddg}|d u rd}|dkrt | dgd urt|g dt | dg n5|dkr"t | dgd ur!t|g dt | dg n|dkr<t | dgd ur<t|g dt | dg t |ddg}|d u rJd}|dkret | dgd urdt|ddgt | dg n5|dkrt | dgd urt|ddgt | dg n|dkrt | dgd urt|d	dgt | dg t |ddg}|d u rd}|dkrt | dgd urt|g dt | dg n5|dkrt | dgd urt|g dt | dg n|dkrt | dgd urt|g dt | dg t |ddg}|d u rd}|dkr!t | dgd ur t|ddgt | dg n|dkr;t | dgd ur;t|d	dgt | dg t | dgd urOt|dgt | dg t |ddg}|d u r]d}|dkrxt | dgd urwt|g d t | dg n|dkrt | dgd urt|g d!t | dg t |ddg}|d u rd}|dkrt | d"gd urt|g d#t | d"g n|dkrt | d"gd urt|g d$t | d"g t |ddg}|d u rd}|dkrt | d%gd urt|dd&gtt | d%g|| n=|dkr!t | d%gd ur t|dd&gtt | d%g|| n|dkr?t | d%gd ur?t|d	d&gtt | d%g|| t | d'gd urSt|d'gt | d'g t | d(gd urht|g d)t | d(g t | d*gd ur}t|d	d+gt | d*g t | d,gd urt|d	d-gt | d,g t | d.gd urt|g d/t | d.g t | d0gd urt|d1gt | d0g t | d2gd urt|d3gt | d2g |S )4NconfigmethodSUPERVISED_FINE_TUNINGr6   supervisedTuningSpecPREFERENCE_TUNINGpreferenceOptimizationSpecDISTILLATIONdistillationSpecr7   tunedModelDisplayNamer9   r:   )rW   hyperParametersr=   )rY   r]   r=   )r[   r]   r=   r>   )rW   r]   r?   )rY   r]   r?   )r[   r]   r?   r@   exportLastCheckpointOnlyrB   )rW   r]   adapterSize)rY   r]   r_   )r[   r]   r_   rC   
tuningModerD   customBaseModelrE   )rW   r]   rF   )r[   r]   rF   rG   )rW   r]   rH   )r[   r]   rH   rI   evaluationConfigrJ   rK   )rY   r]   rK   rL   baseTeacherModelrM   tunedTeacherModelSourcerN   )r[   r]   sftLossWeightMultiplierrO   	outputUrirP   encryptionSpec)r   r   "_TuningValidationDataset_to_vertex_EvaluationConfig_to_vertexr   r   r   r    discriminatorr!   r!   r"    _CreateTuningJobConfig_to_vertex   s   








	







































rl   c                 C      i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur:tt | dg|| t | dgd urLtt | dg|| |S N
base_model	baseModelpre_tuned_modelpreTunedModeltraining_datasetrT   )r   r   _TuningDataset_to_mldevrS   r   r!   r!   r"   *_CreateTuningJobParametersPrivate_to_mldev     ru   c                 C   rm   rn   )r   r   _TuningDataset_to_vertexrl   r   r!   r!   r"   +_CreateTuningJobParametersPrivate_to_vertex3  rv   rx   c                 C      i }t | dgd urt|dgtt | dg t | dgd ur+t|dgt | dg t | dgd urBt|dgtt | dg|| t | dgd urYt|dgtt | dg|| |S )NmetricsoutputConfigoutput_configautoraterConfigautorater_configinferenceGenerationConfiginference_generation_config)r   r   t	t_metricsr#   r   r   r!   r!   r"   _EvaluationConfig_from_vertexL  0   

r   c                 C   ry   )Nrz   r|   r{   r~   r}   r   r   )r   r   r   r   r&   r%   r   r!   r!   r"   ri   o  r   ri   c                 C   s^  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | d	gd urat|d
gt | d	g t | dgd urtt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd ur!t|dgt | dg t | dgd ur5t|dgt | dg t | dgd urIt|d gt | dg t | d!gd ur]t|d"gt | d!g t | d#gd urqt|d#gt | d#g t | d$gd urt|d%gt | d$g t | d&gd urt|d'gt | d&g t | d(gd urt|d)gt | d(g |S )*NmodelConfigmodel_selection_configresponseJsonSchemaresponse_json_schemaaudioTimestampaudio_timestampcandidateCountcandidate_countenableAffectiveDialogenable_affective_dialogfrequencyPenaltyfrequency_penaltylogprobsmaxOutputTokensmax_output_tokensmediaResolutionmedia_resolutionpresencePenaltypresence_penaltyresponseLogprobsresponse_logprobsresponseMimeTyperesponse_mime_typeresponseModalitiesresponse_modalitiesresponseSchemaresponse_schemaroutingConfigrouting_configseedspeechConfigspeech_configstopSequencesstop_sequencestemperaturethinkingConfigthinking_configtopKtop_ktopPtop_pr+   r   r!   r!   r"   r     s   






r   c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | d	gd urat|d
gt | d	g t | dgd urtt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd ur!t|dgt | dg t | dgd ur5t|dgt | dg t | dgd urMt|d gtt | dg|| t | d!gd urat|d"gt | d!g t | d#gd urut|d#gt | d#g t | d$gd urt|d%gt | d$g t | d&gd urt|d'gt | d&g t | d(gd urt|d)gt | d(g t | d*gd urtd+|S ),Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   enable_enhanced_civic_answerszFenable_enhanced_civic_answers parameter is not supported in Vertex AI.)r   r   _SpeechConfig_to_vertexrR   r   r!   r!   r"   r%     s   






r%   c                 C   r'   r(   r+   r   r!   r!   r"    _GetTuningJobParameters_to_mldevw  r-   r   c                 C   r'   r(   r+   r   r!   r!   r"   !_GetTuningJobParameters_to_vertex  r-   r   c                 C      i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg |S N	page_size_querypageSize
page_token	pageTokenfilterr+   r   r!   r!   r"   _ListTuningJobsConfig_to_mldev     
r   c                 C   r   r   r+   r   r!   r!   r"   _ListTuningJobsConfig_to_vertex  r   r   c                 C   ,   i }t | dgd urtt | dg|| |S NrT   )r   r   r   r!   r!   r"   "_ListTuningJobsParameters_to_mldev     r   c                 C   r   r   )r   r   r   r!   r!   r"   #_ListTuningJobsParameters_to_vertex  r   r   c                       i t | dgd urtdgt | dg t | dgd ur(tdgt | dg t | dgd urCtdg fddt | dgD  S )	Nr1   r2   nextPageTokennext_page_tokentunedModelstuning_jobsc                       g | ]}t | qS r!   )_TuningJob_from_mldev.0itemr   r    r!   r"   
<listcomp>      
z6_ListTuningJobsResponse_from_mldev.<locals>.<listcomp>r+   r   r   r   r!   r   r"   "_ListTuningJobsResponse_from_mldev      
	r   c                    r   )	Nr1   r2   r   r   
tuningJobsr   c                    r   r!   )_TuningJob_from_vertexr   r   r!   r"   r   
  r   z7_ListTuningJobsResponse_from_vertex.<locals>.<listcomp>r+   r   r!   r   r"   #_ListTuningJobsResponse_from_vertex  r   r   c                    s>   i t | dgd urtdg fddt | dgD  S )Nspeaker_voice_configsspeakerVoiceConfigsc                    r   r!   )_SpeakerVoiceConfig_to_vertexr   r   r!   r"   r     r   z6_MultiSpeakerVoiceConfig_to_vertex.<locals>.<listcomp>r+   r   r!   r   r"   "_MultiSpeakerVoiceConfig_to_vertex  s   
	r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur4tdt | dgd ur@td|S )	N	mime_typemimeTypevoice_sample_audiovoiceSampleAudioconsent_audioz6consent_audio parameter is not supported in Vertex AI.voice_consent_signaturez@voice_consent_signature parameter is not supported in Vertex AI.r   r   rR   r   r!   r!   r"    _ReplicatedVoiceConfig_to_vertex&  s    
r   c                 C   s\   i }t | dgd urt|dgt | dg t | dgd ur,t|dgtt | dg|| |S )Nspeakervoice_configvoiceConfig)r   r   _VoiceConfig_to_vertexr   r!   r!   r"   r   A  s   r   c                 C   s   i }t | dgd urt|dgtt | dg|| t | dgd ur,t|dgt | dg t | dgd urCt|dgtt | dg|| |S )Nr   r   language_codelanguageCodemulti_speaker_voice_configmultiSpeakerVoiceConfig)r   r   r   r   r   r!   r!   r"   r   V  s,   

r   c                 C   sT   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg |S )Nr)   modelendpointr+   r   r!   r!   r"   _TunedModel_from_mldevv  s   r   c                 C   sj   i }t | dgd urtdt | dgd urtdt | dgd ur3t|ddgdd t | dgD  |S )Ngcs_uriz1gcs_uri parameter is not supported in Gemini API.vertex_dataset_resourcezAvertex_dataset_resource parameter is not supported in Gemini API.examplesc                 S      g | ]}|qS r!   r!   r   r!   r!   r"   r         z+_TuningDataset_to_mldev.<locals>.<listcomp>rQ   r   r!   r!   r"   rt     s   rt   c                 C   s|  i }t |ddg}|d u rd}|dkr(t | dgd ur't|ddgt | dg n1|dkrAt | dgd ur@t|ddgt | dg n|d	krYt | dgd urYt|d
dgt | dg t |ddg}|d u rfd}|dkrt | dgd ur~t|ddgt | dg n1|dkrt | dgd urt|ddgt | dg n|d	krt | dgd urt|d
dgt | dg t | dgd urtd|S )NrT   rU   rV   r   rW   trainingDatasetUrirX   rY   rZ   r[   promptDatasetUrir   r   z1examples parameter is not supported in Vertex AI.r   rj   r!   r!   r"   rw     sp   





rw   c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur>t|dgtt | dg t | dgd urQt|dgt | dg t | ddgd urft|d	gt | ddg t | dd
gd ur{t|dgt | dd
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgtt | dg|| |S )Nr1   r2   r)   state
createTimecreate_timer;   	startTime
start_timecompleteTimeend_time
updateTimeupdate_timer9   rp   ro   _selftuned_model)r   r   r   t_tuning_job_statusr   r   r!   r!   r"   r     sT   r   c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur>t|dgtt | dg t | dgd urQt|dgt | dg t | dgd urdt|dgt | dg t | d	gd urwt|d
gt | d	g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd ur$t|dgt | dg t | dgd ur8t|dgt | dg t | dgd urLt|dgt | dg t | dgd ur`t|d gt | dg t | d!gd urxt|d"gtt | d!g|| t | d#gd urt|d$gt | d#g t | d%gd urt|d&gd'd( t | d%gD  t | d)gd urt|d)gt | d)g t | d*gd urt|d+gt | d*g t | d,gd urt|d,gt | d,g t | d-gd urt|d.gt | d-g t | d/gd ur	t|d0gt | d/g t | d1gd urt|d2gt | d1g t | d3gd ur1t|d4gt | d3g t | d5gd urEt|d6gt | d5g t | d7gd urYt|d8gt | d7g t | d9gd urmt|d:gt | d9g t | d;gd urt|d<gt | d;g |S )=Nr1   r2   r)   r   r   r   r   r   endTimer   r   r   errorr9   rp   ro   
tunedModelr   rr   rq   rW   supervised_tuning_specrY   preference_optimization_specr[   distillation_spectuningDataStatstuning_data_statsrg   rP   partnerModelTuningSpecpartner_model_tuning_specrb   rI   ra   rD   evaluateDatasetRunsevaluate_dataset_runsc                 S   r   r!   r!   r   r!   r!   r"   r   }  r   z*_TuningJob_from_vertex.<locals>.<listcomp>
experimentfullFineTuningSpecfull_fine_tuning_specrJ   rf   rO   pipelineJobpipeline_jobserviceAccountservice_accountr\   r7   tuningJobStatetuning_job_stateveoTuningSpecveo_tuning_specdistillationSamplingSpecdistillation_sampling_spectuningJobMetadatatuning_job_metadata)r   r   r   r   r   r   r!   r!   r"   r     s   







r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | dgd urat|dgt | dg |S )Nr1   r2   r)   metadatadoner   r+   r   r!   r!   r"   _TuningOperation_from_mldev  s   r  c                 C   sT   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg |S )Nr   validationDatasetUrir   r+   r   r!   r!   r"   rh     s   
rh   c                 C   s\   i }t | dgd urt|dgtt | dg|| t | dgd ur,t|dgt | dg |S )Nreplicated_voice_configreplicatedVoiceConfigprebuilt_voice_configprebuiltVoiceConfig)r   r   r   r   r!   r!   r"   r     s$   


r   c                   @   h  e Zd Zdddedeej dejfddZdddeej	 dej
fdd	Zdddedeej dejfd
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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dZdddedeej dejfddZeddddedejdeej dejfddZdddeej	 deej fddZdS )TuningsNrT   r)   rT   r   c                C   R  t j||d}| jjr!t|d|}|d}|rd|}nd}nt|d|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}|j
dur]|j
jdur]|j
j}t|}t|}| jd|||}	|	jsui nt|	j}
| jjrt|
d|}
| jjst|
d|}
t jj|
| d	}t j|	jd
|_| j| |S zzGets a TuningJob.

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

    Returns:
      A TuningJob object.
    r)   rT   Nr*   z{name}r   ?rT   getresponsekwargsheaders)r
   _GetTuningJobParameters_api_clientvertexair   r)  
format_mapr   r   poprT   http_optionsr   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsr   r   	TuningJob_from_response
model_dumpHttpResponser.  r2   _verify_responseselfr)   rT   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr4  r+  response_dictreturn_valuer!   r!   r"   _get  s^   





zTunings._getc                C   sP  t j|d}| jjr t|d |}|d}|rd|}nd}nt|d |}|d}|r3d|}nd}|d}|rE| dt| }|	dd  d }|j
d ur\|j
jd ur\|j
j}t|}t|}| jd|||}|jsti nt|j}	| jjrt|	d |}	| jjst|	d |}	t jj|	| d	}
t j|jd
|
_| j|
 |
S Nr$  r*   r   r   r   r(  rT   r)  r*  r-  )r
   _ListTuningJobsParametersr0  r1  r   r)  r2  r   r   r3  rT   r4  r   r5  r6  r7  r8  r9  r:  r   r   ListTuningJobsResponser<  r=  r>  r.  r2   r?  rA  rT   rB  rC  rD  rE  rF  r4  r+  rG  rH  r!   r!   r"   _listM  s\   





zTunings._listc                C   r%  )zPCancels a tuning job.

    Args:
      name (str): TuningJob resource name.
    r'  Nr*   {name}:cancelr   r(  rT   postr*  r-  )r
   _CancelTuningJobParametersr0  r1  r.   r)  r2  r,   r   r3  rT   r4  r   r5  r6  r7  r8  r9  r:  r5   r3   CancelTuningJobResponser<  r=  r>  r.  r2   r?  r@  r!   r!   r"   cancel  sb   





zTunings.cancelro   rq   rT   ro   rq   rs   c                C   s  t j||||d}| jjstdt|d|}|d}|r$d|}nd}|d}	|	r6| dt|	 }|	dd d}
|j
durM|j
jdurM|j
j}
t|}t|}| jd	|||
}|jsei nt|j}| jjrut|d|}t jj|| d
}t j|jd|_| j| |S a  Creates a 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.
    ro   rq   rs   rT   z6This method is only supported in the Vertex AI client.Nr*   r   r   r(  rT   rP  r*  r-  )r
   !_CreateTuningJobParametersPrivater0  r1  rR   rx   r)  r2  r   r3  rT   r4  r   r5  r6  r7  r8  r9  r:  r   r;  r<  r=  r>  r.  r2   r?  rA  ro   rq   rs   rT   rB  rC  rD  rE  rF  r4  r+  rG  rH  r!   r!   r"   _tune  sR   




zTunings._tunec                C   s  t j||||d}| jjrtdt|d|}|d}|r$d|}nd}|d}	|	r6| dt|	 }|	dd d}
|j
durM|j
jdurM|j
j}
t|}t|}| jd	|||
}|jsei nt|j}| jjsut|d|}t jj|| d
}t j|jd|_| j| |S a  Creates a 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.
    rV  z=This method is only supported in the Gemini Developer client.Nr*   r   r   r(  rT   rP  r*  r-  )r
   rW  r0  r1  rR   ru   r)  r2  r   r3  rT   r4  r   r5  r6  r7  r8  r9  r:  r  TuningOperationr<  r=  r>  r.  r2   r?  rX  r!   r!   r"   _tune_mldev(  sV   




zTunings._tune_mldevc                C   s@   | j ||d}|jr| jjr| jjd urtj|j| jjd |S Nr'  )r  projectrI  r  r0  r1  r^  _IpythonUtilsdisplay_experiment_buttonrA  r)   rT   jobr!   r!   r"   r)  u  s   zTunings.getSThe SDK's tuning implementation is experimental, and may change in future versions.c                C   s  | j jr|dr#d }|rt|dd }tj||d}| j|||d}nd }|d urzt|dd d urzt|d}t|trCtj	di |}|j
rI|jsMtdtt|j
D ]}	t|j
|	 trjtj|j
|	 |j
|	< qTt|tru||d< n||_|}| j|||d}|d urt|dd d ur||_n2| j|||d}
|
jd urd|
jv r|
jd }n|
jd u rtd	|
jd
d }tj|tjjd}|jr| j jrtj|jd |S Nz	projects/rA   )tuned_model_namecheckpoint_id)rq   rs   rT   rI   zEEvaluation config must have at least one metric and an output config.)ro   rs   rT   r  zOperation name is required.z/operations/r   )r)   r   )tuning_job_resourcer!   r0  r1  
startswithgetattrr
   PreTunedModelrY  
isinstancedictEvaluationConfigrz   r|   rR   rangelenMetricmodel_validaterI   r\  r  r)   	partitionr;  JobStateJOB_STATE_QUEUEDr`  display_model_tuning_button)rA  ro   rs   rT   rg  rq   
tuning_jobvalidated_evaluation_configrI   i	operationrf  r!   r!   r"   tune  s   






zTunings.tunec                C   s   | j }td|| j |d|S )a  Lists `TuningJob` objects.

    Args:
      config: The configuration for the list request.

    Returns:
      A Pager object that contains one page of tuning jobs. When iterating over
      the pager, it automatically fetches the next page if there are more.

    Usage:

    .. code-block:: python
        for tuning_job in client.tunings.list():
            print(tuning_job.name)
    r   r$  )rN  r   rA  rT   list_requestr!   r!   r"   list  s   
zTunings.list)__name__
__module____qualname__strr   r
   GetTuningJobConfigOrDictr;  rI  ListTuningJobsConfigOrDictrL  rN  CancelTuningJobConfigOrDictrR  rS  PreTunedModelOrDictTuningDatasetOrDictCreateTuningJobConfigOrDictrY  r[  r\  r)  r   experimental_warningr|  r   r  r!   r!   r!   r"   r#    s    
P
F
Q
N
Q
	Pr#  c                   @   r"  )AsyncTuningsNr$  r)   rT   r   c                   Z  t j||d}| jjr"t|d|}|d}|rd|}nd}nt|d|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}|j
dur^|j
jdur^|j
j}t|}t|}| jd|||I dH }	|	jsyi nt|	j}
| jjrt|
d|}
| jjst|
d|}
t jj|
| d	}t j|	jd
|_| j| |S r&  )r
   r/  r0  r1  r   r)  r2  r   r   r3  rT   r4  r   r5  r6  async_requestr8  r9  r:  r   r   r;  r<  r=  r>  r.  r2   r?  r@  r!   r!   r"   rI    sd   






zAsyncTunings._getc                   sX  t j|d}| jjr!t|d |}|d}|rd|}nd}nt|d |}|d}|r4d|}nd}|d}|rF| dt| }|	dd  d }|j
d ur]|j
jd ur]|j
j}t|}t|}| jd|||I d H }|jsxi nt|j}	| jjrt|	d |}	| jjst|	d |}	t jj|	| d	}
t j|jd
|
_| j|
 |
S rJ  )r
   rK  r0  r1  r   r)  r2  r   r   r3  rT   r4  r   r5  r6  r  r8  r9  r:  r   r   rL  r<  r=  r>  r.  r2   r?  rM  r!   r!   r"   rN  I  sb   






zAsyncTunings._listc                   r  )zaCancels a tuning job asynchronously.

    Args:
      name (str): A TuningJob resource name.
    r'  Nr*   rO  r   r(  rT   rP  r*  r-  )r
   rQ  r0  r1  r.   r)  r2  r,   r   r3  rT   r4  r   r5  r6  r  r8  r9  r:  r5   r3   rR  r<  r=  r>  r.  r2   r?  r@  r!   r!   r"   rS    sd   






zAsyncTunings.cancelrT  ro   rq   rs   c                   s&  t j||||d}| jjstdt|d|}|d}|r%d|}nd}|d}	|	r7| dt|	 }|	dd d}
|j
durN|j
jdurN|j
j}
t|}t|}| jd	|||
I dH }|jsii nt|j}| jjryt|d|}t jj|| d
}t j|jd|_| j| |S rU  )r
   rW  r0  r1  rR   rx   r)  r2  r   r3  rT   r4  r   r5  r6  r  r8  r9  r:  r   r;  r<  r=  r>  r.  r2   r?  rX  r!   r!   r"   rY    sT   





zAsyncTunings._tunec                   s&  t j||||d}| jjrtdt|d|}|d}|r%d|}nd}|d}	|	r7| dt|	 }|	dd d}
|j
durN|j
jdurN|j
j}
t|}t|}| jd	|||
I dH }|jsii nt|j}| jjsyt|d|}t jj|| d
}t j|jd|_| j| |S rZ  )r
   rW  r0  r1  rR   ru   r)  r2  r   r3  rT   r4  r   r5  r6  r  r8  r9  r:  r  r[  r<  r=  r>  r.  r2   r?  rX  r!   r!   r"   r\  &	  sX   





zAsyncTunings._tune_mldevc                   sH   | j ||dI d H }|jr"| jjr"| jjd ur"tj|j| jjd |S r]  r_  rb  r!   r!   r"   r)  s	  s   zAsyncTunings.getrd  c                   s  | j jr|dr'd }|rt|dd }tj||d}| j|||dI d H }n|d urzt|dd d urzt|d}t|trEtj	di |}|j
rK|jsOtdtt|j
D ]}t|j
| trltj|j
| |j
|< qVt|trw||d< n||_| j|||dI d H }n5| j|||dI d H }	|	jd urd|	jv r|	jd }
n|	jd u rtd	|	jd
d }
tj|
tjjd}|jr| j jrtj|jd |S re  ri  )rA  ro   rs   rT   rg  rq   rx  rI   rz  r{  rf  r!   r!   r"   r|  	  sv   






zAsyncTunings.tunec                   s$   | j }td|| j |dI dH |S )a  Lists `TuningJob` objects asynchronously.

    Args:
      config: The configuration for the list request.

    Returns:
      A Pager object that contains one page of tuning jobs. When iterating over
      the pager, it automatically fetches the next page if there are more.

    Usage:

    .. code-block:: python
        async for tuning_job in await client.aio.tunings.list():
            print(tuning_job.name)
    r   r$  N)rN  r   r}  r!   r!   r"   r  	  s   zAsyncTunings.list)r  r  r  r  r   r
   r  r;  rI  r  rL  rN  r  rR  rS  r  r  r  rY  r[  r\  r)  r   r  r|  r   r  r!   r!   r!   r"   r    s    
R
H
Q
N
Q
	Jr  c                
   @   s   e Zd ZU dZe Zee ed< ede	ee
f fddZedefddZedefdd	Zed
edee defddZe	ddededee ddfddZedededdfddZededdfddZdS )r`  z6Temporary class to hold the IPython related functions.displayed_experimentsr   c                  C   s,   dd l } d| jv rddlm} | jjS dS )Nr   IPython)get_ipython )sysmodulesr  r  	__class__r  )r  r  r!   r!   r"   _get_ipython_shell_name	  s
   

z%_IpythonUtils._get_ipython_shell_namec                   C   s   t t S )N)boolr`  r  r!   r!   r!   r"   is_ipython_available	  s   z"_IpythonUtils.is_ipython_availablec                   C   s   dS )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!   r"   _get_styles
  s   z_IpythonUtils._get_stylesmarkerresource_partsc                 C   sB   t t|D ]}|| | kr|d t|k r||d    S qdS )z,Returns the part after the marker text part.r   r  )rp  rq  )r  r  rz  r!   r!   r"   _parse_resource_name7
  s
   z"_IpythonUtils._parse_resource_nameopen_in_newtexturliconNc           	      C   s   d}| |std| dddl}dt|  }dt  d| d	| d
| d|  d}|d| d| d| d7 }ddlm} ddlm	} ||| dS )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)
rj  rR   uuidr  uuid4r`  r  IPython.displayr  r  )	r  r  r  CLOUD_UI_URLr  	button_idhtmlr  r  r!   r!   r"   _display_link?
  s4   
	
z_IpythonUtils._display_linkr  r^  c                 C   sl   t  r	| t jv rdS | d}|d }|d }d| d| d d|  }t d|d	 t j|  dS )
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  r  splitr  add)r  r^  r  locationexperiment_nameurir!   r!   r"   ra  s
  s   


z'_IpythonUtils.display_experiment_buttonrh  c                 C   s^   t  sdS | d}|d }|d }|d }dd| d|  d	|  }t d
|d dS )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}
    Nr  r   r  r  z?https://console.cloud.google.com/vertex-ai/generative/language/z
locations/z/tuning/tuningJob/z	?project=zView Tuning Jobr|  )r`  r  r  r  )rh  r  r^  r  tuning_job_idr  r!   r!   r"   rw  
  s   
z)_IpythonUtils.display_model_tuning_button)r  )r  r  r  __doc__setr  r  __annotations__staticmethodr   r   r  r  r  r  r  r  r   r  ra  rw  r!   r!   r!   r"   r`  	  s4   
 	53r`  )NN)@r9  loggingtypingr   r   r   urllib.parser   r  r   r   r	   r   r
   r   r   r   r   pagersr   r   	getLoggerloggerrn  r  objectr#   r&   r,   r.   r3   r5   rS   rl   ru   rx   r   ri   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   rw   r   r   r  rh   r   
BaseModuler#  r  r`  r!   r!   r!   r"   <module>   s  














o

  $





%

%

o

z























"





A

=

  





   }   {