-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Expand file tree
/
Copy pathdeploy.py
More file actions
86 lines (72 loc) · 2.38 KB
/
deploy.py
File metadata and controls
86 lines (72 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
import os
import vertexai
from dotenv import set_key
from vertexai import agent_engines
from vertexai.preview.reasoning_engines import AdkApp
from rag.agent import app as adk_app
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
GOOGLE_CLOUD_PROJECT = os.getenv("GOOGLE_CLOUD_PROJECT")
GOOGLE_CLOUD_LOCATION = os.getenv("GOOGLE_CLOUD_LOCATION")
STAGING_BUCKET = os.getenv("STAGING_BUCKET")
# Define the path to the .env file relative to this script
ENV_FILE_PATH = os.path.abspath(
os.path.join(os.path.dirname(__file__), "..", ".env")
)
vertexai.init(
project=GOOGLE_CLOUD_PROJECT,
location=GOOGLE_CLOUD_LOCATION,
staging_bucket=STAGING_BUCKET,
)
# Function to update the .env file
def update_env_file(agent_engine_id, env_file_path):
"""Updates the .env file with the agent engine ID."""
try:
set_key(env_file_path, "AGENT_ENGINE_ID", agent_engine_id)
print(
f"Updated AGENT_ENGINE_ID in {env_file_path} to {agent_engine_id}"
)
except Exception as e:
print(f"Error updating .env file: {e}")
logger.info("deploying app...")
app = AdkApp(
agent=adk_app,
enable_tracing=True,
)
logging.debug("deploying agent to agent engine:")
remote_app = agent_engines.create(
app,
requirements=[
"google-cloud-aiplatform[adk,agent-engines]>=1.108.0",
"google-adk[eval]>=1.31.0",
"python-dotenv",
"google-auth",
"tqdm",
"requests",
"llama-index",
"pydantic-settings",
],
extra_packages=[
"./rag",
],
)
# log remote_app
logging.info(
f"Deployed agent to Vertex AI Agent Engine successfully, resource name: {remote_app.resource_name}"
)
# Update the .env file with the new Agent Engine ID
update_env_file(remote_app.resource_name, ENV_FILE_PATH)