Skip to content

Commit 546c2a6

Browse files
google-genai-botcopybara-github
authored andcommitted
feat: Remove custom polling logic for Vertex AI Session Service since LRO polling is supported in express mode
PiperOrigin-RevId: 826226731
1 parent dea7668 commit 546c2a6

File tree

3 files changed

+8
-86
lines changed

3 files changed

+8
-86
lines changed

src/google/adk/sessions/vertex_ai_session_service.py

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
from ..events.event import Event
3636
from ..events.event_actions import EventActions
3737
from ..utils.vertex_ai_utils import get_express_mode_api_key
38-
from ..utils.vertex_ai_utils import is_vertex_express_mode
3938
from .base_session_service import BaseSessionService
4039
from .base_session_service import GetSessionConfig
4140
from .base_session_service import ListSessionsResponse
@@ -115,53 +114,14 @@ async def create_session(
115114
config = {'session_state': state} if state else {}
116115
config.update(kwargs)
117116

118-
if is_vertex_express_mode(
119-
self._project, self._location, self._express_mode_api_key
120-
):
121-
config['wait_for_completion'] = False
122-
api_response = await api_client.aio.agent_engines.sessions.create(
123-
name=f'reasoningEngines/{reasoning_engine_id}',
124-
user_id=user_id,
125-
config=config,
126-
)
127-
logger.info('Create session response received.')
128-
session_id = api_response.name.split('/')[-3]
129-
130-
# Express mode doesn't support LRO, so we need to poll
131-
# the session resource.
132-
# TODO: remove this once LRO polling is supported in Express mode.
133-
@retry(
134-
stop=stop_after_attempt(6),
135-
wait=wait_exponential(multiplier=1, min=1, max=3),
136-
retry=retry_if_result(lambda response: not response),
137-
reraise=True,
138-
)
139-
async def _poll_session_resource():
140-
try:
141-
return await api_client.aio.agent_engines.sessions.get(
142-
name=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}'
143-
)
144-
except ClientError:
145-
logger.info('Polling session resource')
146-
return None
147-
148-
try:
149-
await _poll_session_resource()
150-
except Exception as exc:
151-
raise ValueError('Failed to create session.') from exc
152-
153-
get_session_response = await api_client.aio.agent_engines.sessions.get(
154-
name=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}'
155-
)
156-
else:
157-
api_response = await api_client.aio.agent_engines.sessions.create(
158-
name=f'reasoningEngines/{reasoning_engine_id}',
159-
user_id=user_id,
160-
config=config,
161-
)
162-
logger.debug('Create session response: %s', api_response)
163-
get_session_response = api_response.response
164-
session_id = get_session_response.name.split('/')[-1]
117+
api_response = await api_client.aio.agent_engines.sessions.create(
118+
name=f'reasoningEngines/{reasoning_engine_id}',
119+
user_id=user_id,
120+
config=config,
121+
)
122+
logger.debug('Create session response: %s', api_response)
123+
get_session_response = api_response.response
124+
session_id = get_session_response.name.split('/')[-1]
165125

166126
session = Session(
167127
app_name=app_name,

src/google/adk/utils/vertex_ai_utils.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,6 @@
2626
from ..utils.env_utils import is_env_enabled
2727

2828

29-
def is_vertex_express_mode(
30-
project: Optional[str], location: Optional[str], api_key: Optional[str]
31-
) -> bool:
32-
"""Check if Vertex AI and API key are both enabled replacing project and location, meaning the user is using the Vertex Express Mode."""
33-
return (
34-
is_env_enabled('GOOGLE_GENAI_USE_VERTEXAI')
35-
and api_key is not None
36-
and project is None
37-
and location is None
38-
)
39-
40-
4129
def get_express_mode_api_key(
4230
project: Optional[str],
4331
location: Optional[str],

tests/unittests/utils/test_vertex_ai_utils.py

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,6 @@
2020
import pytest
2121

2222

23-
@pytest.mark.parametrize(
24-
('use_vertexai_env', 'project', 'location', 'api_key', 'expected'),
25-
[
26-
('true', None, None, 'test-key', True),
27-
('1', None, None, 'test-key', True),
28-
('false', None, None, 'test-key', False),
29-
('0', None, None, 'test-key', False),
30-
(None, None, None, 'test-key', False),
31-
('true', 'test-project', None, 'test-key', False),
32-
('true', None, 'test-location', 'test-key', False),
33-
('true', None, None, None, False),
34-
],
35-
)
36-
def test_is_vertex_express_mode(
37-
use_vertexai_env, project, location, api_key, expected
38-
):
39-
env_vars = {}
40-
if use_vertexai_env:
41-
env_vars['GOOGLE_GENAI_USE_VERTEXAI'] = use_vertexai_env
42-
with mock.patch.dict('os.environ', env_vars, clear=True):
43-
assert (
44-
vertex_ai_utils.is_vertex_express_mode(project, location, api_key)
45-
== expected
46-
)
47-
48-
4923
def test_get_express_mode_api_key_value_error():
5024
with pytest.raises(ValueError) as excinfo:
5125
vertex_ai_utils.get_express_mode_api_key(

0 commit comments

Comments
 (0)