@@ -178,6 +178,13 @@ def _OptimizeRequestParameters_to_vertex(
178178 if getv (from_object , ["config" ]) is not None :
179179 setv (to_object , ["config" ], getv (from_object , ["config" ]))
180180
181+ if getv (from_object , ["optimization_target" ]) is not None :
182+ setv (
183+ to_object ,
184+ ["optimizationTarget" ],
185+ getv (from_object , ["optimization_target" ]),
186+ )
187+
181188 return to_object
182189
183190
@@ -189,6 +196,7 @@ def _optimize_prompt(
189196 * ,
190197 content : Optional [genai_types .ContentOrDict ] = None ,
191198 config : Optional [types .OptimizeConfigOrDict ] = None ,
199+ optimization_target : Optional [str ] = None ,
192200 ) -> types .OptimizeResponseEndpoint :
193201 """
194202 Optimize a single prompt.
@@ -197,6 +205,7 @@ def _optimize_prompt(
197205 parameter_model = types ._OptimizeRequestParameters (
198206 content = content ,
199207 config = config ,
208+ optimization_target = optimization_target ,
200209 )
201210
202211 request_url_dict : Optional [dict [str , str ]]
@@ -468,7 +477,10 @@ def optimize(
468477 return job
469478
470479 def optimize_prompt (
471- self , * , prompt : str , config : Optional [types .OptimizeConfig ] = None
480+ self ,
481+ * ,
482+ prompt : str ,
483+ config : types .OptimizeConfig | None = None ,
472484 ) -> types .OptimizeResponse :
473485 """Makes an API request to _optimize_prompt and returns the parsed response.
474486
@@ -481,24 +493,26 @@ def optimize_prompt(
481493 Args:
482494 prompt: The prompt to optimize.
483495 config: The configuration for prompt optimization. Currently, config is
484- not supported for a single prompt optimization.
496+ either None or
497+ types.OptimizeConfig(
498+ optimization_target=types.OptimizeTarget.GEMINI_NANO
499+ )
485500 Returns:
486501 The parsed response from the API request.
487502 """
488- if config is not None :
489- raise ValueError (
490- "Currently, config is not supported for a single prompt optimization."
491- )
492503
493504 prompt = genai_types .Content (parts = [genai_types .Part (text = prompt )], role = "user" )
494505 # TODO: b/435653980 - replace the custom method with a generated method.
495- return self ._custom_optimize_prompt (content = prompt )
506+ return self ._custom_optimize_prompt (
507+ content = prompt ,
508+ config = config ,
509+ )
496510
497511 def _custom_optimize_prompt (
498512 self ,
499513 * ,
500- content : Optional [ genai_types .ContentOrDict ] = None ,
501- config : Optional [ types .OptimizeConfigOrDict ] = None ,
514+ content : genai_types .ContentOrDict | None ,
515+ config : types .OptimizeConfigOrDict | None ,
502516 ) -> types .OptimizeResponse :
503517 """Optimize a single prompt.
504518
@@ -507,11 +521,7 @@ def _custom_optimize_prompt(
507521 the parsed response.
508522 """
509523
510- parameter_model = types ._OptimizeRequestParameters (
511- content = content ,
512- config = config ,
513- )
514-
524+ parameter_model = _prompt_optimizer_utils ._get_parameter_model (config , content )
515525 request_url_dict : Optional [dict [str , str ]]
516526 if not self ._api_client .vertexai :
517527 raise ValueError ("This method is only supported in the Vertex AI client." )
@@ -576,6 +586,7 @@ async def _optimize_prompt(
576586 * ,
577587 content : Optional [genai_types .ContentOrDict ] = None ,
578588 config : Optional [types .OptimizeConfigOrDict ] = None ,
589+ optimization_target : Optional [str ] = None ,
579590 ) -> types .OptimizeResponseEndpoint :
580591 """
581592 Optimize a single prompt.
@@ -584,6 +595,7 @@ async def _optimize_prompt(
584595 parameter_model = types ._OptimizeRequestParameters (
585596 content = content ,
586597 config = config ,
598+ optimization_target = optimization_target ,
587599 )
588600
589601 request_url_dict : Optional [dict [str , str ]]
@@ -841,16 +853,12 @@ async def optimize(
841853 async def _custom_optimize_prompt (
842854 self ,
843855 * ,
844- content : Optional [ genai_types .ContentOrDict ] = None ,
845- config : Optional [ types .OptimizeConfigOrDict ] = None ,
856+ content : genai_types .ContentOrDict | None ,
857+ config : types .OptimizeConfigOrDict | None ,
846858 ) -> types .OptimizeResponse :
847859 """Optimize a single prompt."""
848860
849- parameter_model = types ._OptimizeRequestParameters (
850- content = content ,
851- config = config ,
852- )
853-
861+ parameter_model = _prompt_optimizer_utils ._get_parameter_model (config , content )
854862 request_url_dict : Optional [dict [str , str ]]
855863 if not self ._api_client .vertexai :
856864 raise ValueError ("This method is only supported in the Vertex AI client." )
@@ -909,7 +917,10 @@ async def _custom_optimize_prompt(
909917 return final_response
910918
911919 async def optimize_prompt (
912- self , * , prompt : str , config : Optional [types .OptimizeConfig ] = None
920+ self ,
921+ * ,
922+ prompt : str ,
923+ config : types .OptimizeConfig | None = None ,
913924 ) -> types .OptimizeResponse :
914925 """Makes an async request to _optimize_prompt and returns an optimized prompt.
915926
@@ -921,15 +932,17 @@ async def optimize_prompt(
921932 Args:
922933 prompt: The prompt to optimize.
923934 config: The configuration for prompt optimization. Currently, config is
924- not supported for a single prompt optimization.
935+ either None or
936+ types.OptimizeConfig(
937+ optimization_target=types.OptimizeTarget.GEMINI_NANO
938+ )
925939 Returns:
926940 The parsed response from the API request.
927941 """
928- if config is not None :
929- raise ValueError (
930- "Currently, config is not supported for a single prompt optimization."
931- )
932942
933943 prompt = genai_types .Content (parts = [genai_types .Part (text = prompt )], role = "user" )
934944 # TODO: b/435653980 - replace the custom method with a generated method.
935- return await self ._custom_optimize_prompt (content = prompt )
945+ return await self ._custom_optimize_prompt (
946+ content = prompt ,
947+ config = config ,
948+ )
0 commit comments