Skip to content

Commit f257298

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: Model optimizer SDK support
PiperOrigin-RevId: 744902904
1 parent 2d7bc32 commit f257298

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

tests/unit/vertexai/test_generative_models.py

+20
Original file line numberDiff line numberDiff line change
@@ -986,6 +986,26 @@ def test_generate_content_response_accessor_errors(
986986
assert e.match("no text")
987987
assert e.match("function_call")
988988

989+
@patch_genai_services
990+
@pytest.mark.parametrize(
991+
"generative_models",
992+
[generative_models, preview_generative_models],
993+
)
994+
def test_generate_content_model_optimizer(
995+
self, generative_models: generative_models
996+
):
997+
model = generative_models.GenerativeModel("model-optimizer-exp-04-09")
998+
999+
response = model.generate_content(
1000+
"Why is sky blue?",
1001+
generation_config=generative_models.GenerationConfig(
1002+
model_config=generative_models.GenerationConfig.ModelConfig(
1003+
feature_selection_preference=generative_models.GenerationConfig.ModelConfig.FeatureSelectionPreference.BALANCED
1004+
)
1005+
),
1006+
)
1007+
assert response.text
1008+
9891009
@patch_genai_services
9901010
@pytest.mark.parametrize(
9911011
"generative_models",

vertexai/generative_models/_generative_models.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -1754,6 +1754,7 @@ class GenerationConfig:
17541754
"""Parameters for the generation."""
17551755

17561756
Modality = gapic_content_types.GenerationConfig.Modality
1757+
ModelConfig = gapic_content_types.GenerationConfig.ModelConfig
17571758

17581759
def __init__(
17591760
self,
@@ -1774,6 +1775,7 @@ def __init__(
17741775
logprobs: Optional[int] = None,
17751776
response_logprobs: Optional[bool] = None,
17761777
response_modalities: Optional[List["GenerationConfig.Modality"]] = None,
1778+
model_config: Optional["GenerationConfig.ModelConfig"] = None,
17771779
):
17781780
r"""Constructs a GenerationConfig object.
17791781
@@ -1801,9 +1803,11 @@ def __init__(
18011803
response type, otherwise the behavior is undefined.
18021804
response_schema: Output response schema of the genreated candidate text.
18031805
audio_timestamp: If true, the timestamp of the audio will be included in the response.
1804-
routing_config: Model routing preference set in the request.
1806+
routing_config: Model routing preference set in the request. This field is deprecated,
1807+
please use model_config field instead for model optimizer requests.
18051808
logprobs: Logit probabilities.
18061809
reponse_logprobs: If true, export the logprobs results in response.
1810+
model_config: Sets cost vs quality preference for model routing requests.
18071811
18081812
Usage:
18091813
@@ -1845,6 +1849,7 @@ def __init__(
18451849
logprobs=logprobs,
18461850
response_logprobs=response_logprobs,
18471851
response_modalities=response_modalities,
1852+
model_config=model_config,
18481853
)
18491854
if routing_config is not None:
18501855
self._raw_generation_config.routing_config = (
@@ -1879,6 +1884,7 @@ def __repr__(self) -> str:
18791884

18801885
class RoutingConfig:
18811886
r"""The configuration for model router requests.
1887+
Deprecated, please use ModelConfig to set routing preference instead.
18821888
18831889
The routing config is either one of the two nested classes:
18841890
- AutoRoutingMode: Automated routing.
@@ -1913,6 +1919,11 @@ def __init__(
19131919
"GenerationConfig.RoutingConfig.ManualRoutingMode",
19141920
],
19151921
):
1922+
_LOGGER = base.Logger(__name__)
1923+
_LOGGER.warning(
1924+
"RoutingConfig is deprecated, please use ModelConfig to set routing preference instead."
1925+
)
1926+
19161927
if isinstance(routing_config, self.AutoRoutingMode):
19171928
self._gapic_routing_config = (
19181929
gapic_content_types.GenerationConfig.RoutingConfig(

0 commit comments

Comments
 (0)