Skip to content

Commit a359a4b

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 a359a4b

File tree

3 files changed

+58
-1
lines changed

3 files changed

+58
-1
lines changed

vertexai/_genai/agent_engines.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,9 @@ def _set_source_code_spec(
10121012
requirements_file: Optional[str] = None,
10131013
sys_version: str,
10141014
build_options: Optional[dict[str, list[str]]] = None,
1015+
image_spec: Optional[
1016+
types.ReasoningEngineSpecSourceCodeSpecImageSpecDict
1017+
] = None,
10151018
) -> None:
10161019
"""Sets source_code_spec for agent engine inside the `spec`."""
10171020
source_code_spec = types.ReasoningEngineSpecSourceCodeSpecDict()
@@ -1035,7 +1038,10 @@ def _set_source_code_spec(
10351038
raise ValueError(
10361039
"Please specify one of `source_packages` or `developer_connect_source`."
10371040
)
1038-
1041+
if image_spec:
1042+
update_masks.append("spec.source_code_spec.image_spec")
1043+
source_code_spec["image_spec"] = image_spec
1044+
return
10391045
update_masks.append("spec.source_code_spec.python_spec.version")
10401046
python_spec: types.ReasoningEngineSpecSourceCodeSpecPythonSpecDict = {
10411047
"version": sys_version,
@@ -1200,6 +1206,9 @@ def _create_config(
12001206
agent_framework: Optional[str] = None,
12011207
python_version: Optional[str] = None,
12021208
build_options: Optional[dict[str, list[str]]] = None,
1209+
image_spec: Optional[
1210+
types.ReasoningEngineSpecSourceCodeSpecImageSpecDict
1211+
] = None,
12031212
) -> types.UpdateAgentEngineConfigDict:
12041213
import sys
12051214

@@ -1285,6 +1294,7 @@ def _create_config(
12851294
requirements_file=requirements_file,
12861295
sys_version=sys_version,
12871296
build_options=build_options,
1297+
image_spec=image_spec,
12881298
)
12891299

12901300
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)