Skip to content

Commit 25d76a3

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: Add API key support for creating agent engines
PiperOrigin-RevId: 753758169
1 parent 1cbe028 commit 25d76a3

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

vertexai/agent_engines/_agent_engines.py

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,11 @@ def create(
338338
"""
339339
sys_version = f"{sys.version_info.major}.{sys.version_info.minor}"
340340
_validate_sys_version_or_raise(sys_version)
341+
gcs_dir_name = gcs_dir_name or _DEFAULT_GCS_DIR_NAME
342+
staging_bucket = initializer.global_config.staging_bucket
341343
if agent_engine is not None:
342344
agent_engine = _validate_agent_engine_or_raise(agent_engine)
345+
_validate_staging_bucket_or_raise(staging_bucket)
343346
if agent_engine is None:
344347
if requirements is not None:
345348
raise ValueError("requirements must be None if agent_engine is None.")
@@ -350,12 +353,9 @@ def create(
350353
requirements=requirements,
351354
)
352355
extra_packages = _validate_extra_packages_or_raise(extra_packages)
353-
gcs_dir_name = gcs_dir_name or _DEFAULT_GCS_DIR_NAME
354356

355357
sdk_resource = cls.__new__(cls)
356358
base.VertexAiResourceNounWithFutureManager.__init__(sdk_resource)
357-
staging_bucket = initializer.global_config.staging_bucket
358-
_validate_staging_bucket_or_raise(staging_bucket)
359359
# Prepares the Agent Engine for creation in Vertex AI.
360360
# This involves packaging and uploading the artifacts for
361361
# agent_engine, requirements and extra_packages to
@@ -409,12 +409,22 @@ def create(
409409
)
410410
agent_engine_spec.class_methods.extend(class_methods_spec)
411411
reasoning_engine.spec = agent_engine_spec
412-
operation_future = sdk_resource.api_client.create_reasoning_engine(
413-
parent=initializer.global_config.common_location_path(
414-
project=sdk_resource.project, location=sdk_resource.location
415-
),
416-
reasoning_engine=reasoning_engine,
417-
)
412+
if (
413+
initializer.global_config.project is not None
414+
and initializer.global_config.location is not None
415+
):
416+
operation_future = sdk_resource.api_client.create_reasoning_engine(
417+
parent=initializer.global_config.common_location_path(
418+
project=sdk_resource.project, location=sdk_resource.location
419+
),
420+
reasoning_engine=reasoning_engine,
421+
)
422+
elif initializer.global_config.api_key is not None:
423+
operation_future = sdk_resource.api_client.create_reasoning_engine(
424+
reasoning_engine=reasoning_engine,
425+
)
426+
else:
427+
raise ValueError("Either project or api_key must be set in vertexai.init.")
418428
_LOGGER.log_create_with_lro(cls, operation_future)
419429
_LOGGER.info(
420430
f"View progress and logs at https://console.cloud.google.com/logs/query?project={sdk_resource.project}"
@@ -430,11 +440,21 @@ def create(
430440
sdk_resource._gca_resource = sdk_resource._get_gca_resource(
431441
resource_name=created_resource.name
432442
)
433-
sdk_resource.execution_api_client = initializer.global_config.create_client(
434-
client_class=aip_utils.AgentEngineExecutionClientWithOverride,
435-
credentials=sdk_resource.credentials,
436-
location_override=sdk_resource.location,
437-
)
443+
if (
444+
initializer.global_config.project is not None
445+
and initializer.global_config.location is not None
446+
):
447+
sdk_resource.execution_api_client = initializer.global_config.create_client(
448+
client_class=aip_utils.AgentEngineExecutionClientWithOverride,
449+
credentials=sdk_resource.credentials,
450+
location_override=sdk_resource.location,
451+
)
452+
elif initializer.global_config.api_key is not None:
453+
sdk_resource.execution_api_client = initializer.global_config.create_client(
454+
client_class=aip_utils.AgentEngineExecutionClientWithOverride,
455+
api_key=initializer.global_config.api_key,
456+
location_override=sdk_resource.location,
457+
)
438458
if agent_engine is not None:
439459
try:
440460
_register_api_methods_or_raise(sdk_resource)
@@ -881,17 +901,18 @@ def _prepare(
881901
gcs_dir_name (str): The GCS bucket directory under `staging_bucket` to
882902
use for staging the artifacts needed.
883903
"""
904+
if agent_engine is None:
905+
return
884906
gcs_bucket = _get_gcs_bucket(
885907
project=project,
886908
location=location,
887909
staging_bucket=staging_bucket,
888910
)
889-
if agent_engine is not None:
890-
_upload_agent_engine(
891-
agent_engine=agent_engine,
892-
gcs_bucket=gcs_bucket,
893-
gcs_dir_name=gcs_dir_name,
894-
)
911+
_upload_agent_engine(
912+
agent_engine=agent_engine,
913+
gcs_bucket=gcs_bucket,
914+
gcs_dir_name=gcs_dir_name,
915+
)
895916
if requirements is not None:
896917
_upload_requirements(
897918
requirements=requirements,
@@ -992,7 +1013,7 @@ def _generate_update_request_or_raise(
9921013
Union[Sequence[str], Dict[str, Union[str, aip_types.SecretRef]]]
9931014
] = None,
9941015
) -> reasoning_engine_service.UpdateReasoningEngineRequest:
995-
"""Tries to generates the update request for the agent engine."""
1016+
"""Tries to generate the update request for the agent engine."""
9961017
is_spec_update = False
9971018
update_masks: List[str] = []
9981019
agent_engine_spec = aip_types.ReasoningEngineSpec()

0 commit comments

Comments
 (0)