Skip to content

Commit a34b11f

Browse files
yeesiancopybara-github
authored andcommitted
feat: add support for BYO-dockerfile in AE deployment
FUTURE_COPYBARA_INTEGRATE_REVIEW=#6299 from googleapis:release-please--branches--main 0855775 PiperOrigin-RevId: 865065204
1 parent 94b9149 commit a34b11f

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

vertexai/_genai/agent_engines.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,7 @@ def create(
956956
agent_framework=config.agent_framework,
957957
python_version=config.python_version,
958958
build_options=config.build_options,
959+
image_spec=config.image_spec,
959960
)
960961
operation = self._create(config=api_config)
961962
reasoning_engine_id = _agent_engines_utils._get_reasoning_engine_id(
@@ -1012,6 +1013,9 @@ def _set_source_code_spec(
10121013
requirements_file: Optional[str] = None,
10131014
sys_version: str,
10141015
build_options: Optional[dict[str, list[str]]] = None,
1016+
image_spec: Optional[
1017+
types.ReasoningEngineSpecSourceCodeSpecImageSpecDict
1018+
] = None,
10151019
) -> None:
10161020
"""Sets source_code_spec for agent engine inside the `spec`."""
10171021
source_code_spec = types.ReasoningEngineSpecSourceCodeSpecDict()
@@ -1035,7 +1039,11 @@ def _set_source_code_spec(
10351039
raise ValueError(
10361040
"Please specify one of `source_packages` or `developer_connect_source`."
10371041
)
1038-
1042+
if image_spec is not None:
1043+
update_masks.append("spec.source_code_spec.image_spec")
1044+
source_code_spec["image_spec"] = image_spec
1045+
spec["source_code_spec"] = source_code_spec
1046+
return
10391047
update_masks.append("spec.source_code_spec.python_spec.version")
10401048
python_spec: types.ReasoningEngineSpecSourceCodeSpecPythonSpecDict = {
10411049
"version": sys_version,
@@ -1200,6 +1208,9 @@ def _create_config(
12001208
agent_framework: Optional[str] = None,
12011209
python_version: Optional[str] = None,
12021210
build_options: Optional[dict[str, list[str]]] = None,
1211+
image_spec: Optional[
1212+
types.ReasoningEngineSpecSourceCodeSpecImageSpecDict
1213+
] = None,
12031214
) -> types.UpdateAgentEngineConfigDict:
12041215
import sys
12051216

@@ -1285,6 +1296,7 @@ def _create_config(
12851296
requirements_file=requirements_file,
12861297
sys_version=sys_version,
12871298
build_options=build_options,
1299+
image_spec=image_spec,
12881300
)
12891301

12901302
if agent_engine_spec is not None:

vertexai/_genai/types/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,9 @@
755755
from .common import ReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceDict
756756
from .common import ReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceOrDict
757757
from .common import ReasoningEngineSpecSourceCodeSpecDict
758+
from .common import ReasoningEngineSpecSourceCodeSpecImageSpec
759+
from .common import ReasoningEngineSpecSourceCodeSpecImageSpecDict
760+
from .common import ReasoningEngineSpecSourceCodeSpecImageSpecOrDict
758761
from .common import ReasoningEngineSpecSourceCodeSpecInlineSource
759762
from .common import ReasoningEngineSpecSourceCodeSpecInlineSourceDict
760763
from .common import ReasoningEngineSpecSourceCodeSpecInlineSourceOrDict
@@ -1416,6 +1419,9 @@
14161419
"ReasoningEngineSpecSourceCodeSpecPythonSpec",
14171420
"ReasoningEngineSpecSourceCodeSpecPythonSpecDict",
14181421
"ReasoningEngineSpecSourceCodeSpecPythonSpecOrDict",
1422+
"ReasoningEngineSpecSourceCodeSpecImageSpec",
1423+
"ReasoningEngineSpecSourceCodeSpecImageSpecDict",
1424+
"ReasoningEngineSpecSourceCodeSpecImageSpecOrDict",
14191425
"ReasoningEngineSpecSourceCodeSpec",
14201426
"ReasoningEngineSpecSourceCodeSpecDict",
14211427
"ReasoningEngineSpecSourceCodeSpecOrDict",

vertexai/_genai/types/common.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5118,6 +5118,34 @@ class ReasoningEngineSpecSourceCodeSpecPythonSpecDict(TypedDict, total=False):
51185118
]
51195119

51205120

5121+
class ReasoningEngineSpecSourceCodeSpecImageSpec(_common.BaseModel):
5122+
"""The image spec for building an image (within a single build step).
5123+
5124+
It is based on the config file (i.e. Dockerfile) in the source directory.
5125+
"""
5126+
5127+
build_args: Optional[dict[str, str]] = Field(
5128+
default=None,
5129+
description="""Optional. Build arguments to be used. They will be passed through --build-arg flags.""",
5130+
)
5131+
5132+
5133+
class ReasoningEngineSpecSourceCodeSpecImageSpecDict(TypedDict, total=False):
5134+
"""The image spec for building an image (within a single build step).
5135+
5136+
It is based on the config file (i.e. Dockerfile) in the source directory.
5137+
"""
5138+
5139+
build_args: Optional[dict[str, str]]
5140+
"""Optional. Build arguments to be used. They will be passed through --build-arg flags."""
5141+
5142+
5143+
ReasoningEngineSpecSourceCodeSpecImageSpecOrDict = Union[
5144+
ReasoningEngineSpecSourceCodeSpecImageSpec,
5145+
ReasoningEngineSpecSourceCodeSpecImageSpecDict,
5146+
]
5147+
5148+
51215149
class ReasoningEngineSpecSourceCodeSpec(_common.BaseModel):
51225150
"""Specification for deploying from source code."""
51235151

@@ -5133,6 +5161,10 @@ class ReasoningEngineSpecSourceCodeSpec(_common.BaseModel):
51335161
python_spec: Optional[ReasoningEngineSpecSourceCodeSpecPythonSpec] = Field(
51345162
default=None, description="""Configuration for a Python application."""
51355163
)
5164+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpec] = Field(
5165+
default=None,
5166+
description="""Optional. Configuration for building an image with custom config file.""",
5167+
)
51365168

51375169

51385170
class ReasoningEngineSpecSourceCodeSpecDict(TypedDict, total=False):
@@ -5149,6 +5181,9 @@ class ReasoningEngineSpecSourceCodeSpecDict(TypedDict, total=False):
51495181
python_spec: Optional[ReasoningEngineSpecSourceCodeSpecPythonSpecDict]
51505182
"""Configuration for a Python application."""
51515183

5184+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpecDict]
5185+
"""Optional. Configuration for building an image with custom config file."""
5186+
51525187

51535188
ReasoningEngineSpecSourceCodeSpecOrDict = Union[
51545189
ReasoningEngineSpecSourceCodeSpec, ReasoningEngineSpecSourceCodeSpecDict
@@ -14004,6 +14039,9 @@ class AgentEngineConfig(_common.BaseModel):
1400414039
subdirectory and the path must be added to `extra_packages`.
1400514040
""",
1400614041
)
14042+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpec] = Field(
14043+
default=None, description="""The image spec for the Agent Engine."""
14044+
)
1400714045

1400814046

1400914047
class AgentEngineConfigDict(TypedDict, total=False):
@@ -14167,6 +14205,9 @@ class AgentEngineConfigDict(TypedDict, total=False):
1416714205
subdirectory and the path must be added to `extra_packages`.
1416814206
"""
1416914207

14208+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpecDict]
14209+
"""The image spec for the Agent Engine."""
14210+
1417014211

1417114212
AgentEngineConfigOrDict = Union[AgentEngineConfig, AgentEngineConfigDict]
1417214213

0 commit comments

Comments
 (0)