Skip to content

Commit e4f0f30

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 e4f0f30

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-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: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5118,6 +5118,28 @@ 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), based on the config file (i.e. Dockerfile) in the source directory."""
5123+
5124+
build_args: Optional[dict[str, str]] = Field(
5125+
default=None,
5126+
description="""Optional. Build arguments to be used. They will be passed through --build-arg flags.""",
5127+
)
5128+
5129+
5130+
class ReasoningEngineSpecSourceCodeSpecImageSpecDict(TypedDict, total=False):
5131+
"""The image spec for building an image (within a single build step), based on the config file (i.e. Dockerfile) in the source directory."""
5132+
5133+
build_args: Optional[dict[str, str]]
5134+
"""Optional. Build arguments to be used. They will be passed through --build-arg flags."""
5135+
5136+
5137+
ReasoningEngineSpecSourceCodeSpecImageSpecOrDict = Union[
5138+
ReasoningEngineSpecSourceCodeSpecImageSpec,
5139+
ReasoningEngineSpecSourceCodeSpecImageSpecDict,
5140+
]
5141+
5142+
51215143
class ReasoningEngineSpecSourceCodeSpec(_common.BaseModel):
51225144
"""Specification for deploying from source code."""
51235145

@@ -5133,6 +5155,10 @@ class ReasoningEngineSpecSourceCodeSpec(_common.BaseModel):
51335155
python_spec: Optional[ReasoningEngineSpecSourceCodeSpecPythonSpec] = Field(
51345156
default=None, description="""Configuration for a Python application."""
51355157
)
5158+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpec] = Field(
5159+
default=None,
5160+
description="""Optional. Configuration for building an image with custom config file.""",
5161+
)
51365162

51375163

51385164
class ReasoningEngineSpecSourceCodeSpecDict(TypedDict, total=False):
@@ -5149,6 +5175,9 @@ class ReasoningEngineSpecSourceCodeSpecDict(TypedDict, total=False):
51495175
python_spec: Optional[ReasoningEngineSpecSourceCodeSpecPythonSpecDict]
51505176
"""Configuration for a Python application."""
51515177

5178+
image_spec: Optional[ReasoningEngineSpecSourceCodeSpecImageSpecDict]
5179+
"""Optional. Configuration for building an image with custom config file."""
5180+
51525181

51535182
ReasoningEngineSpecSourceCodeSpecOrDict = Union[
51545183
ReasoningEngineSpecSourceCodeSpec, ReasoningEngineSpecSourceCodeSpecDict

0 commit comments

Comments
 (0)