google-adk 1.4.1__py3-none-any.whl → 1.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google/adk/a2a/converters/event_converter.py +382 -0
- google/adk/a2a/converters/part_converter.py +4 -2
- google/adk/a2a/converters/request_converter.py +90 -0
- google/adk/a2a/converters/utils.py +71 -0
- google/adk/agents/llm_agent.py +5 -3
- google/adk/artifacts/gcs_artifact_service.py +3 -2
- google/adk/auth/auth_tool.py +2 -2
- google/adk/auth/credential_service/session_state_credential_service.py +83 -0
- google/adk/cli/cli_deploy.py +9 -2
- google/adk/cli/cli_tools_click.py +110 -52
- google/adk/cli/fast_api.py +26 -2
- google/adk/cli/utils/evals.py +53 -0
- google/adk/evaluation/final_response_match_v1.py +110 -0
- google/adk/evaluation/gcs_eval_sets_manager.py +8 -5
- google/adk/evaluation/response_evaluator.py +12 -1
- google/adk/events/event.py +5 -5
- google/adk/flows/llm_flows/contents.py +49 -4
- google/adk/flows/llm_flows/functions.py +32 -0
- google/adk/memory/__init__.py +3 -1
- google/adk/memory/vertex_ai_memory_bank_service.py +150 -0
- google/adk/models/lite_llm.py +9 -1
- google/adk/runners.py +10 -0
- google/adk/sessions/vertex_ai_session_service.py +70 -19
- google/adk/telemetry.py +10 -0
- google/adk/tools/bigquery/bigquery_credentials.py +28 -11
- google/adk/tools/bigquery/bigquery_tool.py +1 -1
- google/adk/tools/bigquery/client.py +1 -1
- google/adk/tools/bigquery/metadata_tool.py +1 -1
- google/adk/tools/bigquery/query_tool.py +1 -1
- google/adk/version.py +1 -1
- {google_adk-1.4.1.dist-info → google_adk-1.5.0.dist-info}/METADATA +6 -5
- {google_adk-1.4.1.dist-info → google_adk-1.5.0.dist-info}/RECORD +35 -29
- {google_adk-1.4.1.dist-info → google_adk-1.5.0.dist-info}/WHEEL +0 -0
- {google_adk-1.4.1.dist-info → google_adk-1.5.0.dist-info}/entry_points.txt +0 -0
- {google_adk-1.4.1.dist-info → google_adk-1.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -14,7 +14,9 @@
|
|
14
14
|
from __future__ import annotations
|
15
15
|
|
16
16
|
import asyncio
|
17
|
+
import json
|
17
18
|
import logging
|
19
|
+
import os
|
18
20
|
import re
|
19
21
|
from typing import Any
|
20
22
|
from typing import Dict
|
@@ -22,6 +24,7 @@ from typing import Optional
|
|
22
24
|
import urllib.parse
|
23
25
|
|
24
26
|
from dateutil import parser
|
27
|
+
from google.genai.errors import ClientError
|
25
28
|
from typing_extensions import override
|
26
29
|
|
27
30
|
from google import genai
|
@@ -87,30 +90,53 @@ class VertexAiSessionService(BaseSessionService):
|
|
87
90
|
path=f'reasoningEngines/{reasoning_engine_id}/sessions',
|
88
91
|
request_dict=session_json_dict,
|
89
92
|
)
|
93
|
+
api_response = _convert_api_response(api_response)
|
90
94
|
logger.info(f'Create Session response {api_response}')
|
91
95
|
|
92
96
|
session_id = api_response['name'].split('/')[-3]
|
93
97
|
operation_id = api_response['name'].split('/')[-1]
|
94
98
|
|
95
99
|
max_retry_attempt = 5
|
96
|
-
lro_response = None
|
97
|
-
while max_retry_attempt >= 0:
|
98
|
-
lro_response = await api_client.async_request(
|
99
|
-
http_method='GET',
|
100
|
-
path=f'operations/{operation_id}',
|
101
|
-
request_dict={},
|
102
|
-
)
|
103
100
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
101
|
+
if _is_vertex_express_mode(self._project, self._location):
|
102
|
+
# Express mode doesn't support LRO, so we need to poll
|
103
|
+
# the session resource.
|
104
|
+
# TODO: remove this once LRO polling is supported in Express mode.
|
105
|
+
for i in range(max_retry_attempt):
|
106
|
+
try:
|
107
|
+
await api_client.async_request(
|
108
|
+
http_method='GET',
|
109
|
+
path=(
|
110
|
+
f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}'
|
111
|
+
),
|
112
|
+
request_dict={},
|
113
|
+
)
|
114
|
+
break
|
115
|
+
except ClientError as e:
|
116
|
+
logger.info('Polling for session %s: %s', session_id, e)
|
117
|
+
# Add slight exponential backoff to avoid excessive polling.
|
118
|
+
await asyncio.sleep(1 + 0.5 * i)
|
119
|
+
else:
|
120
|
+
raise TimeoutError('Session creation failed.')
|
121
|
+
else:
|
122
|
+
lro_response = None
|
123
|
+
for _ in range(max_retry_attempt):
|
124
|
+
lro_response = await api_client.async_request(
|
125
|
+
http_method='GET',
|
126
|
+
path=f'operations/{operation_id}',
|
127
|
+
request_dict={},
|
128
|
+
)
|
129
|
+
lro_response = _convert_api_response(lro_response)
|
130
|
+
|
131
|
+
if lro_response.get('done', None):
|
132
|
+
break
|
133
|
+
|
134
|
+
await asyncio.sleep(1)
|
135
|
+
|
136
|
+
if lro_response is None or not lro_response.get('done', None):
|
137
|
+
raise TimeoutError(
|
138
|
+
f'Timeout waiting for operation {operation_id} to complete.'
|
139
|
+
)
|
114
140
|
|
115
141
|
# Get session resource
|
116
142
|
get_session_api_response = await api_client.async_request(
|
@@ -118,6 +144,7 @@ class VertexAiSessionService(BaseSessionService):
|
|
118
144
|
path=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}',
|
119
145
|
request_dict={},
|
120
146
|
)
|
147
|
+
get_session_api_response = _convert_api_response(get_session_api_response)
|
121
148
|
|
122
149
|
update_timestamp = isoparse(
|
123
150
|
get_session_api_response['updateTime']
|
@@ -149,6 +176,7 @@ class VertexAiSessionService(BaseSessionService):
|
|
149
176
|
path=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}',
|
150
177
|
request_dict={},
|
151
178
|
)
|
179
|
+
get_session_api_response = _convert_api_response(get_session_api_response)
|
152
180
|
|
153
181
|
session_id = get_session_api_response['name'].split('/')[-1]
|
154
182
|
update_timestamp = isoparse(
|
@@ -167,9 +195,12 @@ class VertexAiSessionService(BaseSessionService):
|
|
167
195
|
path=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}/events',
|
168
196
|
request_dict={},
|
169
197
|
)
|
198
|
+
list_events_api_response = _convert_api_response(list_events_api_response)
|
170
199
|
|
171
200
|
# Handles empty response case
|
172
|
-
if list_events_api_response.get(
|
201
|
+
if not list_events_api_response or list_events_api_response.get(
|
202
|
+
'httpHeaders', None
|
203
|
+
):
|
173
204
|
return session
|
174
205
|
|
175
206
|
session.events += [
|
@@ -226,9 +257,10 @@ class VertexAiSessionService(BaseSessionService):
|
|
226
257
|
path=path,
|
227
258
|
request_dict={},
|
228
259
|
)
|
260
|
+
api_response = _convert_api_response(api_response)
|
229
261
|
|
230
262
|
# Handles empty response case
|
231
|
-
if api_response.get('httpHeaders', None):
|
263
|
+
if not api_response or api_response.get('httpHeaders', None):
|
232
264
|
return ListSessionsResponse()
|
233
265
|
|
234
266
|
sessions = []
|
@@ -303,6 +335,25 @@ class VertexAiSessionService(BaseSessionService):
|
|
303
335
|
return client._api_client
|
304
336
|
|
305
337
|
|
338
|
+
def _is_vertex_express_mode(
|
339
|
+
project: Optional[str], location: Optional[str]
|
340
|
+
) -> bool:
|
341
|
+
"""Check if Vertex AI and API key are both enabled replacing project and location, meaning the user is using the Vertex Express Mode."""
|
342
|
+
return (
|
343
|
+
os.environ.get('GOOGLE_GENAI_USE_VERTEXAI', '0').lower() in ['true', '1']
|
344
|
+
and os.environ.get('GOOGLE_API_KEY', None) is not None
|
345
|
+
and project is None
|
346
|
+
and location is None
|
347
|
+
)
|
348
|
+
|
349
|
+
|
350
|
+
def _convert_api_response(api_response):
|
351
|
+
"""Converts the API response to a JSON object based on the type."""
|
352
|
+
if hasattr(api_response, 'body'):
|
353
|
+
return json.loads(api_response.body)
|
354
|
+
return api_response
|
355
|
+
|
356
|
+
|
306
357
|
def _convert_event_to_json(event: Event) -> Dict[str, Any]:
|
307
358
|
metadata_json = {
|
308
359
|
'partial': event.partial,
|
google/adk/telemetry.py
CHANGED
@@ -195,6 +195,16 @@ def trace_call_llm(
|
|
195
195
|
llm_response_json,
|
196
196
|
)
|
197
197
|
|
198
|
+
if llm_response.usage_metadata is not None:
|
199
|
+
span.set_attribute(
|
200
|
+
'gen_ai.usage.input_tokens',
|
201
|
+
llm_response.usage_metadata.prompt_token_count,
|
202
|
+
)
|
203
|
+
span.set_attribute(
|
204
|
+
'gen_ai.usage.output_tokens',
|
205
|
+
llm_response.usage_metadata.total_token_count,
|
206
|
+
)
|
207
|
+
|
198
208
|
|
199
209
|
def trace_send_data(
|
200
210
|
invocation_context: InvocationContext,
|
@@ -21,9 +21,10 @@ from typing import Optional
|
|
21
21
|
from fastapi.openapi.models import OAuth2
|
22
22
|
from fastapi.openapi.models import OAuthFlowAuthorizationCode
|
23
23
|
from fastapi.openapi.models import OAuthFlows
|
24
|
+
import google.auth.credentials
|
24
25
|
from google.auth.exceptions import RefreshError
|
25
26
|
from google.auth.transport.requests import Request
|
26
|
-
|
27
|
+
import google.oauth2.credentials
|
27
28
|
from pydantic import BaseModel
|
28
29
|
from pydantic import model_validator
|
29
30
|
|
@@ -40,26 +41,35 @@ BIGQUERY_DEFAULT_SCOPE = ["https://www.googleapis.com/auth/bigquery"]
|
|
40
41
|
|
41
42
|
@experimental
|
42
43
|
class BigQueryCredentialsConfig(BaseModel):
|
43
|
-
"""Configuration for Google API tools
|
44
|
+
"""Configuration for Google API tools (Experimental).
|
45
|
+
|
46
|
+
Please do not use this in production, as it may be deprecated later.
|
47
|
+
"""
|
44
48
|
|
45
49
|
# Configure the model to allow arbitrary types like Credentials
|
46
50
|
model_config = {"arbitrary_types_allowed": True}
|
47
51
|
|
48
|
-
credentials: Optional[Credentials] = None
|
49
|
-
"""
|
52
|
+
credentials: Optional[google.auth.credentials.Credentials] = None
|
53
|
+
"""The existing auth credentials to use. If set, this credential will be used
|
50
54
|
for every end user, end users don't need to be involved in the oauthflow. This
|
51
55
|
field is mutually exclusive with client_id, client_secret and scopes.
|
52
56
|
Don't set this field unless you are sure this credential has the permission to
|
53
57
|
access every end user's data.
|
54
58
|
|
55
|
-
Example usage:
|
59
|
+
Example usage 1: When the agent is deployed in Google Cloud environment and
|
56
60
|
the service account (used as application default credentials) has access to
|
57
61
|
all the required BigQuery resource. Setting this credential to allow user to
|
58
62
|
access the BigQuery resource without end users going through oauth flow.
|
59
63
|
|
60
|
-
To get application default credential: `google.auth.default(...)`. See more
|
64
|
+
To get application default credential, use: `google.auth.default(...)`. See more
|
61
65
|
details in https://cloud.google.com/docs/authentication/application-default-credentials.
|
62
66
|
|
67
|
+
Example usage 2: When the agent wants to access the user's BigQuery resources
|
68
|
+
using the service account key credentials.
|
69
|
+
|
70
|
+
To load service account key credentials, use: `google.auth.load_credentials_from_file(...)`.
|
71
|
+
See more details in https://cloud.google.com/iam/docs/service-account-creds#user-managed-keys.
|
72
|
+
|
63
73
|
When the deployed environment cannot provide a pre-existing credential,
|
64
74
|
consider setting below client_id, client_secret and scope for end users to go
|
65
75
|
through oauth flow, so that agent can access the user data.
|
@@ -86,7 +96,9 @@ class BigQueryCredentialsConfig(BaseModel):
|
|
86
96
|
" client_id/client_secret/scopes."
|
87
97
|
)
|
88
98
|
|
89
|
-
if self.credentials
|
99
|
+
if self.credentials and isinstance(
|
100
|
+
self.credentials, google.oauth2.credentials.Credentials
|
101
|
+
):
|
90
102
|
self.client_id = self.credentials.client_id
|
91
103
|
self.client_secret = self.credentials.client_secret
|
92
104
|
self.scopes = self.credentials.scopes
|
@@ -115,7 +127,7 @@ class BigQueryCredentialsManager:
|
|
115
127
|
|
116
128
|
async def get_valid_credentials(
|
117
129
|
self, tool_context: ToolContext
|
118
|
-
) -> Optional[Credentials]:
|
130
|
+
) -> Optional[google.auth.credentials.Credentials]:
|
119
131
|
"""Get valid credentials, handling refresh and OAuth flow as needed.
|
120
132
|
|
121
133
|
Args:
|
@@ -127,7 +139,7 @@ class BigQueryCredentialsManager:
|
|
127
139
|
# First, try to get credentials from the tool context
|
128
140
|
creds_json = tool_context.state.get(BIGQUERY_TOKEN_CACHE_KEY, None)
|
129
141
|
creds = (
|
130
|
-
Credentials.from_authorized_user_info(
|
142
|
+
google.oauth2.credentials.Credentials.from_authorized_user_info(
|
131
143
|
json.loads(creds_json), self.credentials_config.scopes
|
132
144
|
)
|
133
145
|
if creds_json
|
@@ -138,6 +150,11 @@ class BigQueryCredentialsManager:
|
|
138
150
|
if not creds:
|
139
151
|
creds = self.credentials_config.credentials
|
140
152
|
|
153
|
+
# If non-oauth credentials are provided then use them as is. This helps
|
154
|
+
# in flows such as service account keys
|
155
|
+
if creds and not isinstance(creds, google.oauth2.credentials.Credentials):
|
156
|
+
return creds
|
157
|
+
|
141
158
|
# Check if we have valid credentials
|
142
159
|
if creds and creds.valid:
|
143
160
|
return creds
|
@@ -159,7 +176,7 @@ class BigQueryCredentialsManager:
|
|
159
176
|
|
160
177
|
async def _perform_oauth_flow(
|
161
178
|
self, tool_context: ToolContext
|
162
|
-
) -> Optional[Credentials]:
|
179
|
+
) -> Optional[google.oauth2.credentials.Credentials]:
|
163
180
|
"""Perform OAuth flow to get new credentials.
|
164
181
|
|
165
182
|
Args:
|
@@ -199,7 +216,7 @@ class BigQueryCredentialsManager:
|
|
199
216
|
|
200
217
|
if auth_response:
|
201
218
|
# OAuth flow completed, create credentials
|
202
|
-
creds = Credentials(
|
219
|
+
creds = google.oauth2.credentials.Credentials(
|
203
220
|
token=auth_response.oauth2.access_token,
|
204
221
|
refresh_token=auth_response.oauth2.refresh_token,
|
205
222
|
token_uri=auth_scheme.flows.authorizationCode.tokenUrl,
|
@@ -19,7 +19,7 @@ from typing import Any
|
|
19
19
|
from typing import Callable
|
20
20
|
from typing import Optional
|
21
21
|
|
22
|
-
from google.
|
22
|
+
from google.auth.credentials import Credentials
|
23
23
|
from typing_extensions import override
|
24
24
|
|
25
25
|
from ...utils.feature_decorator import experimental
|
@@ -12,8 +12,8 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
from google.auth.credentials import Credentials
|
15
16
|
from google.cloud import bigquery
|
16
|
-
from google.oauth2.credentials import Credentials
|
17
17
|
|
18
18
|
from . import client
|
19
19
|
|
@@ -16,8 +16,8 @@ import functools
|
|
16
16
|
import types
|
17
17
|
from typing import Callable
|
18
18
|
|
19
|
+
from google.auth.credentials import Credentials
|
19
20
|
from google.cloud import bigquery
|
20
|
-
from google.oauth2.credentials import Credentials
|
21
21
|
|
22
22
|
from . import client
|
23
23
|
from .config import BigQueryToolConfig
|
google/adk/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: google-adk
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.5.0
|
4
4
|
Summary: Agent Development Kit
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
6
6
|
Requires-Python: >=3.9
|
@@ -19,6 +19,7 @@ Classifier: Operating System :: OS Independent
|
|
19
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
20
20
|
Classifier: License :: OSI Approved :: Apache Software License
|
21
21
|
License-File: LICENSE
|
22
|
+
Requires-Dist: PyYAML>=6.0.2
|
22
23
|
Requires-Dist: anyio>=4.9.0;python_version>='3.10'
|
23
24
|
Requires-Dist: authlib>=1.5.1
|
24
25
|
Requires-Dist: click>=8.1.8
|
@@ -28,7 +29,7 @@ Requires-Dist: google-cloud-aiplatform[agent-engines]>=1.95.1
|
|
28
29
|
Requires-Dist: google-cloud-secret-manager>=2.22.0
|
29
30
|
Requires-Dist: google-cloud-speech>=2.30.0
|
30
31
|
Requires-Dist: google-cloud-storage>=2.18.0, <3.0.0
|
31
|
-
Requires-Dist: google-genai>=1.
|
32
|
+
Requires-Dist: google-genai>=1.21.1
|
32
33
|
Requires-Dist: graphviz>=0.20.2
|
33
34
|
Requires-Dist: mcp>=1.8.0;python_version>='3.10'
|
34
35
|
Requires-Dist: opentelemetry-api>=1.31.0
|
@@ -37,7 +38,6 @@ Requires-Dist: opentelemetry-sdk>=1.31.0
|
|
37
38
|
Requires-Dist: pydantic>=2.0, <3.0.0
|
38
39
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
39
40
|
Requires-Dist: python-dotenv>=1.0.0
|
40
|
-
Requires-Dist: PyYAML>=6.0.2
|
41
41
|
Requires-Dist: requests>=2.32.4
|
42
42
|
Requires-Dist: sqlalchemy>=2.0
|
43
43
|
Requires-Dist: starlette>=0.46.2
|
@@ -48,9 +48,9 @@ Requires-Dist: websockets>=15.0.1
|
|
48
48
|
Requires-Dist: a2a-sdk>=0.2.7 ; extra == "a2a" and (python_version>='3.10')
|
49
49
|
Requires-Dist: flit>=3.10.0 ; extra == "dev"
|
50
50
|
Requires-Dist: isort>=6.0.0 ; extra == "dev"
|
51
|
+
Requires-Dist: mypy>=1.15.0 ; extra == "dev"
|
51
52
|
Requires-Dist: pyink>=24.10.0 ; extra == "dev"
|
52
53
|
Requires-Dist: pylint>=2.6.0 ; extra == "dev"
|
53
|
-
Requires-Dist: mypy>=1.15.0 ; extra == "dev"
|
54
54
|
Requires-Dist: autodoc_pydantic ; extra == "docs"
|
55
55
|
Requires-Dist: furo ; extra == "docs"
|
56
56
|
Requires-Dist: myst-parser ; extra == "docs"
|
@@ -60,6 +60,7 @@ Requires-Dist: sphinx-rtd-theme ; extra == "docs"
|
|
60
60
|
Requires-Dist: google-cloud-aiplatform[evaluation]>=1.87.0 ; extra == "eval"
|
61
61
|
Requires-Dist: pandas>=2.2.3 ; extra == "eval"
|
62
62
|
Requires-Dist: tabulate>=0.9.0 ; extra == "eval"
|
63
|
+
Requires-Dist: rouge-score>=0.1.2 ; extra == "eval"
|
63
64
|
Requires-Dist: anthropic>=0.43.0 ; extra == "extensions"
|
64
65
|
Requires-Dist: beautifulsoup4>=3.2.2 ; extra == "extensions"
|
65
66
|
Requires-Dist: crewai[tools] ; extra == "extensions" and (python_version>='3.10')
|
@@ -226,7 +227,7 @@ adk eval \
|
|
226
227
|
## 🤝 Contributing
|
227
228
|
|
228
229
|
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our
|
229
|
-
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide
|
230
|
+
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide/).
|
230
231
|
- Then if you want to contribute code, please read [Code Contributing Guidelines](./CONTRIBUTING.md) to get started.
|
231
232
|
|
232
233
|
## 📄 License
|
@@ -1,11 +1,14 @@
|
|
1
1
|
google/adk/__init__.py,sha256=sSPQK3r0tW8ahl-k8SXkZvMcbiTbGICCtrw6KkFucyg,726
|
2
2
|
google/adk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
google/adk/runners.py,sha256=
|
4
|
-
google/adk/telemetry.py,sha256=
|
5
|
-
google/adk/version.py,sha256=
|
3
|
+
google/adk/runners.py,sha256=L2Ayx5JfTfhXyM4Beldw48tLZc5UlNciglCGQ_sDnHk,19174
|
4
|
+
google/adk/telemetry.py,sha256=6E6qf1tSk3J-BE2fTzJTaidiDsgsqTLyIn_8tlDJ34U,8934
|
5
|
+
google/adk/version.py,sha256=43TwDogDc_l0V9dFd_lIeA7YUbAJpoqLP99eomhpZ2M,626
|
6
6
|
google/adk/a2a/__init__.py,sha256=Q9FlRO2IfSE9yEaiAYzWkOMBJPCaNYqh4ihcp0t0BQs,574
|
7
7
|
google/adk/a2a/converters/__init__.py,sha256=Q9FlRO2IfSE9yEaiAYzWkOMBJPCaNYqh4ihcp0t0BQs,574
|
8
|
-
google/adk/a2a/converters/
|
8
|
+
google/adk/a2a/converters/event_converter.py,sha256=8n6_j7mkxCZlDMPhEfzG6THCCA0qSqV3PN0s3C-AT60,11183
|
9
|
+
google/adk/a2a/converters/part_converter.py,sha256=JAkL6x7zPhKvLNDSSacpdQl2v0YwzVZS804--q1yi3U,5374
|
10
|
+
google/adk/a2a/converters/request_converter.py,sha256=k5Bw5P05EwIFMg7TAKXiZyDFTCEC9dSgkBXhyJP0Vn4,2758
|
11
|
+
google/adk/a2a/converters/utils.py,sha256=cpnIrjc14Y8skFEuSKueiy-juYe4dy0-6gVv1nRuJOE,2049
|
9
12
|
google/adk/agents/__init__.py,sha256=WsCiBlvI-ISWrcntboo_sULvVJNwLNxXCe42UGPLKdY,1041
|
10
13
|
google/adk/agents/active_streaming_tool.py,sha256=vFuh_PkdF5EyyneBBJ7Al8ojeTIR3OtsxLjckr9DbXE,1194
|
11
14
|
google/adk/agents/base_agent.py,sha256=fCwAcR12IVVx8qXWGVf773zOmQEKnXDPwmoYYQwUfR4,12168
|
@@ -13,7 +16,7 @@ google/adk/agents/callback_context.py,sha256=BVDcgrJEWEPEf9ZzWFyhUFcZJ2ECm8XFStg
|
|
13
16
|
google/adk/agents/invocation_context.py,sha256=ytnZvN869zSLqC1eKXVwv_NDuyQ3Z2EV4tlbJ-0r2Ls,6345
|
14
17
|
google/adk/agents/langgraph_agent.py,sha256=1MI-jsLRncMy4mpjSsGU5FL6zbK-k4FxiupnujgYVNE,4287
|
15
18
|
google/adk/agents/live_request_queue.py,sha256=AudgMP6VfGjNgH7VeQamKJ6Yo2n5eIlikcscoOqprNU,2109
|
16
|
-
google/adk/agents/llm_agent.py,sha256=
|
19
|
+
google/adk/agents/llm_agent.py,sha256=voivWnvgJ_j09QqDcXaaa-wNxMkbOMj_kHJwceXupmM,16718
|
17
20
|
google/adk/agents/loop_agent.py,sha256=BRGCwSopdOX_x7oUTnUe7udS9GpV0zOn5vXf1USsCf0,1935
|
18
21
|
google/adk/agents/parallel_agent.py,sha256=Wv-ODUKQp_FABo7Cbhcc8-woqgiD5B649OigAMD6DNo,3525
|
19
22
|
google/adk/agents/readonly_context.py,sha256=MyRXiSTT8kFheq7VYQjXow6mwYpdZim4PgI2iKT-XIo,1659
|
@@ -22,19 +25,20 @@ google/adk/agents/sequential_agent.py,sha256=g_9mR4cMHiLwqtztclAUdnjCm0-u4nVpTpG
|
|
22
25
|
google/adk/agents/transcription_entry.py,sha256=HL8j2xvtdrcP4_uxy55ASCmLFrc8KchvV2eoGnwZnqc,1178
|
23
26
|
google/adk/artifacts/__init__.py,sha256=D5DYoVYR0tOd2E_KwRu0Cp7yvV25KGuIQmQeCRDyK-k,846
|
24
27
|
google/adk/artifacts/base_artifact_service.py,sha256=H-t5nckLTfr330utj8vxjH45z81h_h_c9EZzd3A76dY,3452
|
25
|
-
google/adk/artifacts/gcs_artifact_service.py,sha256
|
28
|
+
google/adk/artifacts/gcs_artifact_service.py,sha256=W0uKqb3cRHSvnxRbiDQc2vfdBkr-3ihizWs37eRuSVw,5633
|
26
29
|
google/adk/artifacts/in_memory_artifact_service.py,sha256=Iw34Ja89JwGgd3sulbxxk5pVMqzEZJCt4F2m15MC37U,4059
|
27
30
|
google/adk/auth/__init__.py,sha256=GoFe0aZGdp0ExNE4rXNn1RuXLaB64j7Z-2C5e2Hsh8c,908
|
28
31
|
google/adk/auth/auth_credential.py,sha256=F1cMHe_gda5N6RXlyB0IYLLos-Jz-WcNFkIm9SjSiGQ,7012
|
29
32
|
google/adk/auth/auth_handler.py,sha256=aUJrY8fzPvSZwi1rtB_N7fHuHt6DE-H8D8HnkDUCyZQ,6828
|
30
33
|
google/adk/auth/auth_preprocessor.py,sha256=RleOG5I7L1EWVRdX_bC1WtKnt0FDKAcXSSh1RexJqtE,4309
|
31
34
|
google/adk/auth/auth_schemes.py,sha256=dxx9bxjOWoae1fSVxbpaVTwa0I4v76_QJJFEX--1ueA,2260
|
32
|
-
google/adk/auth/auth_tool.py,sha256=
|
35
|
+
google/adk/auth/auth_tool.py,sha256=m9m_ecoBLjsNpEf34s3hmv5PpWXZbpc4yaV7NgVSOoA,3694
|
33
36
|
google/adk/auth/credential_manager.py,sha256=G5iqpStGHl4wZxkeqNDNljrEt1L_XNSfNVM9mmOqUhg,9503
|
34
37
|
google/adk/auth/oauth2_credential_util.py,sha256=gIb1OUGA4NZRnIeLLk29T_Q9J8ibTxe7-357UhCW3FY,3340
|
35
38
|
google/adk/auth/credential_service/__init__.py,sha256=Q9FlRO2IfSE9yEaiAYzWkOMBJPCaNYqh4ihcp0t0BQs,574
|
36
39
|
google/adk/auth/credential_service/base_credential_service.py,sha256=4SK1UW9NiLNLrc_grpG3xyIPXySGpl0DIv9bTm-onWE,2325
|
37
40
|
google/adk/auth/credential_service/in_memory_credential_service.py,sha256=xXG-3_uq3CU1Eilp8NGBhje0X77ROlAT5BKyJmLLyHg,2161
|
41
|
+
google/adk/auth/credential_service/session_state_credential_service.py,sha256=NlOv6Z7A2_7MRLfmnYlBqyZFXvw_H3m_Tk98Ey36k6s,2615
|
38
42
|
google/adk/auth/exchanger/__init__.py,sha256=RHCK_Zg7hXzBKvz2Vrwvbx_cMXWittidIZToszaL3Nc,720
|
39
43
|
google/adk/auth/exchanger/base_credential_exchanger.py,sha256=Uqzs_NhEDmuH5n0U_ES5fHlMSagyYEc5JKu-5GdOC_A,1644
|
40
44
|
google/adk/auth/exchanger/credential_exchanger_registry.py,sha256=Nsk9BMmhFbZsXQwPckm8elXfbk6iIRSrvegR6DpcONo,1855
|
@@ -48,10 +52,10 @@ google/adk/cli/__main__.py,sha256=gN8rRWlkh_3gLI-oYByxrKpCW9BIfDwrr0YuyisxmHo,64
|
|
48
52
|
google/adk/cli/agent_graph.py,sha256=Kj5_a4UE1QXmqdRv4i4LI4hKHOrLkBS22Q759F3aRug,9879
|
49
53
|
google/adk/cli/cli.py,sha256=5hbWTJYn9eOd4OVNZvvfJ4WuhuNf1ICBP6j6tb-kSFg,6724
|
50
54
|
google/adk/cli/cli_create.py,sha256=S5sAKIzTjaf3bWoh6nUCSxm9koxdkN0SkTnOtsl0Oqs,8010
|
51
|
-
google/adk/cli/cli_deploy.py,sha256=
|
55
|
+
google/adk/cli/cli_deploy.py,sha256=PbJUo3Fa7MGl6XDYKBGola2oYINb6WxEeHva8W80P1k,13351
|
52
56
|
google/adk/cli/cli_eval.py,sha256=iCSzi1f1ik1rytCeu0GvQqkVnIBekpfx97utHpSXUMI,10208
|
53
|
-
google/adk/cli/cli_tools_click.py,sha256=
|
54
|
-
google/adk/cli/fast_api.py,sha256=
|
57
|
+
google/adk/cli/cli_tools_click.py,sha256=be-j62_qJDgaF4cE2A_ZJLoa-2_vQnkXO5rKS3ozNiw,29582
|
58
|
+
google/adk/cli/fast_api.py,sha256=JC0_707uzvDCbiQKMqqzqLZ17F_nJZyH-8abE24W2tY,32964
|
55
59
|
google/adk/cli/browser/adk_favicon.svg,sha256=giyzTZ5Xe6HFU63NgTIZDm35L-RmID-odVFOZ4vMo1M,3132
|
56
60
|
google/adk/cli/browser/index.html,sha256=kXlN0L6yhMrhZajFKaXIAxY-bGJXlD6kUqWl9mElbeM,18492
|
57
61
|
google/adk/cli/browser/main-JAAWEV7F.js,sha256=SK4gb-wUizou4gmqa1Kdfoa6V8uKrYBxU5QHabOI5z8,2640561
|
@@ -65,7 +69,7 @@ google/adk/cli/utils/agent_loader.py,sha256=Lgde2ZYFYnnKGMNvdRyUl3GOWvaFCOVweNr9
|
|
65
69
|
google/adk/cli/utils/cleanup.py,sha256=c8kMxpDoNsr49C0O68pptpmy8oce1PjaLtvUy200pWw,1296
|
66
70
|
google/adk/cli/utils/common.py,sha256=brmJF3t-h_HCCS9FQtgqY0Ozk1meeM6a1omwcmsbDBQ,788
|
67
71
|
google/adk/cli/utils/envs.py,sha256=XOEFNiQlgTTyDvaH1FHmgOnPeC3MHsx_DhyOGa-tSAY,1684
|
68
|
-
google/adk/cli/utils/evals.py,sha256=
|
72
|
+
google/adk/cli/utils/evals.py,sha256=aGBEw7QOnyzmudKiz0JlUTyiLHlMd53r8_RuOqQneTQ,8235
|
69
73
|
google/adk/cli/utils/logs.py,sha256=ARcKVGDi8vHReg1DO7ZGbUBk0RejRMzKf2xHvIWn2xA,2296
|
70
74
|
google/adk/code_executors/__init__.py,sha256=dJ8qAZyj3jm8fNnzQWoWpI7xSVUGhU5qIxbEDpouizc,1641
|
71
75
|
google/adk/code_executors/base_code_executor.py,sha256=QLpgVcFNI5V21U-kVleze24ADeuDKgE3wI7Uui6vUeo,3030
|
@@ -90,14 +94,15 @@ google/adk/evaluation/eval_sets_manager.py,sha256=j6t-Vf5vDQXPG5cCQ3VTrkWMcmJv-u
|
|
90
94
|
google/adk/evaluation/evaluation_constants.py,sha256=q3FpEx1PDoj0VjVwHDZ6U-LNZ1_uApM03d2vOevvHA4,857
|
91
95
|
google/adk/evaluation/evaluation_generator.py,sha256=jbE_Q0bdIJ94vUfyZlblzJK6UsfjzkpdZG1Pp8ge75A,8188
|
92
96
|
google/adk/evaluation/evaluator.py,sha256=ACERS1jNCcqPPoI84qt68-B_aAr8o729cd2Qmb-FrXE,1673
|
97
|
+
google/adk/evaluation/final_response_match_v1.py,sha256=PamGQc3WwIYR1RU6Qhld4PbEFOSEA7LAK81nZVm2UCk,3768
|
93
98
|
google/adk/evaluation/gcs_eval_set_results_manager.py,sha256=XS4kcXgiTjuLPvfA2MSR6dZDo-8PZTQTilvOFW5jo64,4444
|
94
|
-
google/adk/evaluation/gcs_eval_sets_manager.py,sha256=
|
99
|
+
google/adk/evaluation/gcs_eval_sets_manager.py,sha256=K1zHJeKi8oIvuBMpCsfMEJRu20B5F6_pgN_bpHi0NCA,7559
|
95
100
|
google/adk/evaluation/local_eval_set_results_manager.py,sha256=eLZz95r0Z-xyT1m0MxdmLxSjGzmmycLWclfsGn1aVzM,3703
|
96
101
|
google/adk/evaluation/local_eval_sets_manager.py,sha256=CjT3cLEZfvra7QXzdPY3YaddjkQFFgupwdlRR_uOWP8,10414
|
97
|
-
google/adk/evaluation/response_evaluator.py,sha256=
|
102
|
+
google/adk/evaluation/response_evaluator.py,sha256=_tnErq0WQI7DjhrOSmgh3AkUrbAosRzOPCJIxvwCvHc,8864
|
98
103
|
google/adk/evaluation/trajectory_evaluator.py,sha256=HdQ2W2Qwy-08o7H2wtFNYFTlF7uphi9LeD03nHXeIVY,8235
|
99
104
|
google/adk/events/__init__.py,sha256=Lh0rh6RAt5DIxbwBUajjGMbB6bZW5K4Qli6PD_Jv74Q,688
|
100
|
-
google/adk/events/event.py,sha256=
|
105
|
+
google/adk/events/event.py,sha256=AFb6CibQCztO1fWGqz4OKB7Z5dusm7CRl91p8SdBB9M,4793
|
101
106
|
google/adk/events/event_actions.py,sha256=-f_WTN8eQdhAj2celU5AoynGlBfplj3nia9C7OrT534,2275
|
102
107
|
google/adk/examples/__init__.py,sha256=LCuLG_SOF9OAV3vc1tHAaBAOeQEZl0MFHC2LGmZ6e-A,851
|
103
108
|
google/adk/examples/base_example_provider.py,sha256=tood7EnGil4pM3GPRTsSUby2TiAfstBv0x1v8djpgwQ,1074
|
@@ -114,16 +119,17 @@ google/adk/flows/llm_flows/audio_transcriber.py,sha256=x0LeOZLDPVPzPCYNYA3JyAEAj
|
|
114
119
|
google/adk/flows/llm_flows/auto_flow.py,sha256=CnuFelyZhB_ns4U_5_dW0x_KQlzu02My7qWcB4XBCYY,1714
|
115
120
|
google/adk/flows/llm_flows/base_llm_flow.py,sha256=uGqJ-b_Xygqgae1dndNh9tgTaj3luMKq3Qj4_jDf278,22660
|
116
121
|
google/adk/flows/llm_flows/basic.py,sha256=263pfk6PIqKO-7BWo--bsBbpZJ8u5R9OK__WhpBgIbM,2848
|
117
|
-
google/adk/flows/llm_flows/contents.py,sha256=
|
118
|
-
google/adk/flows/llm_flows/functions.py,sha256=
|
122
|
+
google/adk/flows/llm_flows/contents.py,sha256=OMxxPcI_hwQ0OQCrBVBeKukVfdeefBhD3YJQP0C9B2M,14638
|
123
|
+
google/adk/flows/llm_flows/functions.py,sha256=nD74YrS2GSR4yr6erR_vpw7lE7dyx9zDPUFKmY1Uvic,18410
|
119
124
|
google/adk/flows/llm_flows/identity.py,sha256=X4CRg12NvnopmydU9gbFJI4lW1_otN-w_GOAuPvKrXo,1651
|
120
125
|
google/adk/flows/llm_flows/instructions.py,sha256=sO2dQ5hn6ybjXs2fWYWvEFVtACdpiiP0yKf9eNVjhhM,2879
|
121
126
|
google/adk/flows/llm_flows/single_flow.py,sha256=gC677SxxammKx1XkZBzUdgBjDzeymKRcRQQxFGIur8Y,1904
|
122
|
-
google/adk/memory/__init__.py,sha256=
|
127
|
+
google/adk/memory/__init__.py,sha256=N_K_03mtTC2Hl1biXdbkgrbdJVvF7EhKs6jgJMAsEpo,1250
|
123
128
|
google/adk/memory/_utils.py,sha256=6hba7T4ZJ00K3tX1kLuiuiN02E844XtfR1lFEGa-AaM,797
|
124
129
|
google/adk/memory/base_memory_service.py,sha256=KlpjlgZopqKM19QP9X0eKLBSVG10hHjD4qgEEfwdb9k,1987
|
125
130
|
google/adk/memory/in_memory_memory_service.py,sha256=S8mxOuosgzAFyl7ZoSjIo-vWY_3mhRMf2a13YO8MObo,3024
|
126
131
|
google/adk/memory/memory_entry.py,sha256=NSISrQHX6sww0J7wXP-eqxkGAkF2irqCU_UH-ziWACc,1092
|
132
|
+
google/adk/memory/vertex_ai_memory_bank_service.py,sha256=Nr0R37EM3uFzpQAC5g7aDogMljgn6MIIyoTXC4qrZYU,4711
|
127
133
|
google/adk/memory/vertex_ai_rag_memory_service.py,sha256=mNilkk4VtFQj6QYyX-DCPJ4kddKRgo68I3XfVhG8B14,6817
|
128
134
|
google/adk/models/__init__.py,sha256=jnI2M8tz4IN_WOUma4PIEdGOBDIotXcQpseH6P1VgZU,929
|
129
135
|
google/adk/models/anthropic_llm.py,sha256=NcsQ8IfC1vM_qGQexmiM8vRFeTpIHOYqXsXYbysou80,8135
|
@@ -131,7 +137,7 @@ google/adk/models/base_llm.py,sha256=85Oo0U0zyZK3iJZz9XVovnCvXNgVQ9Dvcf80VecWTNo
|
|
131
137
|
google/adk/models/base_llm_connection.py,sha256=y_pNFA2xlwnsP6dt7BfoezfzoZ5gSZJnTogd7o7DodI,2254
|
132
138
|
google/adk/models/gemini_llm_connection.py,sha256=M0dXHcVgDaPB97n6DWFjGjqwhuJkJMcbDYP9drK052U,7349
|
133
139
|
google/adk/models/google_llm.py,sha256=ZaZh9FckWGscHZ7y0BVyt7PETSdlJcSTkQu4mV2Km5o,11926
|
134
|
-
google/adk/models/lite_llm.py,sha256=
|
140
|
+
google/adk/models/lite_llm.py,sha256=kNpVDjcuagwdmiA9QrXnHPzToI6oH9ms53kA0OL5wVM,23445
|
135
141
|
google/adk/models/llm_request.py,sha256=nJdE_mkAwa_QNkl7FJdw5Ys748vM5RqaRYiZtke-mDA,3008
|
136
142
|
google/adk/models/llm_response.py,sha256=tQOfXCnJoiGp-Oxp1_lAKokx0klAzbwKklngKg4ExgQ,4563
|
137
143
|
google/adk/models/registry.py,sha256=5VQyHMEaMbVp9TdscTqDAOo9uXB85zjrbMrT3zQElLE,2542
|
@@ -150,7 +156,7 @@ google/adk/sessions/database_session_service.py,sha256=zPqH1pY_euvSA9I3f3BTfvBxL
|
|
150
156
|
google/adk/sessions/in_memory_session_service.py,sha256=5mU882L-0zobyWoldAkuBMmGKTQV_XlhL0A2_OySPzU,9080
|
151
157
|
google/adk/sessions/session.py,sha256=fwJ3D4rUQ1N5cLMpFrE_BstEz6Ct637FlF52MfkxZCk,1861
|
152
158
|
google/adk/sessions/state.py,sha256=con9G5nfJpa95J5LKTAnZ3KMPkXdaTbrdwRdKg6d6B4,2299
|
153
|
-
google/adk/sessions/vertex_ai_session_service.py,sha256=
|
159
|
+
google/adk/sessions/vertex_ai_session_service.py,sha256=WHm8kQoWYyP3cQbnx1f7mm6X655ypbtAwOwAdQ5zELQ,14893
|
154
160
|
google/adk/tools/__init__.py,sha256=_5JFmTAPBmXlOY8CRaYJlZubvwxoxhi2esXusovv5ME,1752
|
155
161
|
google/adk/tools/_automatic_function_calling_util.py,sha256=p5An_BklKDo1w5_DigZGgf0p023lIDKPaZPS_-iJN6k,11100
|
156
162
|
google/adk/tools/_forwarding_artifact_service.py,sha256=MHOfc8ntSuHLcA4jp218FP0k0qWAu3-6MSQCNWZ__S4,3022
|
@@ -191,13 +197,13 @@ google/adk/tools/application_integration_tool/integration_connector_tool.py,sha2
|
|
191
197
|
google/adk/tools/application_integration_tool/clients/connections_client.py,sha256=zspLmrx2DvOg2r5B2DWxeK3fKdQovIu8t3z5Xip7AGo,31428
|
192
198
|
google/adk/tools/application_integration_tool/clients/integration_client.py,sha256=hLM8n97hsmvgYBtmF_KMYwr_mnlhfPvsDXzE2cI5SqE,10654
|
193
199
|
google/adk/tools/bigquery/__init__.py,sha256=tkXX7IoTzXgZjv82fjqa0_TTufxijiIr6nPsaqH1o5Y,1446
|
194
|
-
google/adk/tools/bigquery/bigquery_credentials.py,sha256=
|
195
|
-
google/adk/tools/bigquery/bigquery_tool.py,sha256=
|
200
|
+
google/adk/tools/bigquery/bigquery_credentials.py,sha256=cs610IowXAhpwovRpMjspPQ6Bb9TB23IBqdUorHNQzI,8690
|
201
|
+
google/adk/tools/bigquery/bigquery_tool.py,sha256=Hvw5ijtX9FGJfUxvBCTL51JxAS4-G5wFtewMUcSACxk,4208
|
196
202
|
google/adk/tools/bigquery/bigquery_toolset.py,sha256=4eIj_bbUeC4bhhNN9RA8i5661Xi3qM9pqfYoN4XBQME,2831
|
197
|
-
google/adk/tools/bigquery/client.py,sha256=
|
203
|
+
google/adk/tools/bigquery/client.py,sha256=CUFsxf6Ma5dTfofk1L888EnUfo2zlI6-_NFs-v3Hcr0,1166
|
198
204
|
google/adk/tools/bigquery/config.py,sha256=GNiPUX4sVKg7UfoJ-xo8RCReYym4qF3blMUzY9O5CRE,1390
|
199
|
-
google/adk/tools/bigquery/metadata_tool.py,sha256=
|
200
|
-
google/adk/tools/bigquery/query_tool.py,sha256
|
205
|
+
google/adk/tools/bigquery/metadata_tool.py,sha256=BZ5VPXERZgVJDp1VqT6vSmFkDYPbo0bXBZsE5RgL3XY,8263
|
206
|
+
google/adk/tools/bigquery/query_tool.py,sha256=-dsqZbuQxwYb6uCHJ5_-6Yt94QlvQ4ktDov6JKdsnvc,6156
|
201
207
|
google/adk/tools/google_api_tool/__init__.py,sha256=a_Bco5SyTQ89yb1t6Bs6NQrTsJgV22mn1quRNygVZXw,1385
|
202
208
|
google/adk/tools/google_api_tool/google_api_tool.py,sha256=vDA7YnDZCl8-ucBvIzXS-uJWX1m2KY_csTz5M3nw_Ys,2029
|
203
209
|
google/adk/tools/google_api_tool/google_api_toolset.py,sha256=M27lSCXOka4yHGGH50UVJvoEvZbWT-QBVaR1tW018tY,3773
|
@@ -233,8 +239,8 @@ google/adk/utils/__init__.py,sha256=Q9FlRO2IfSE9yEaiAYzWkOMBJPCaNYqh4ihcp0t0BQs,
|
|
233
239
|
google/adk/utils/feature_decorator.py,sha256=DzGHMTStf4-S9BNiA4EqcCJbrdKijhgeSUSPdzM44H8,5048
|
234
240
|
google/adk/utils/instructions_utils.py,sha256=al9Z-P8qOrbxNju8cqkeH7qRg0oQH7hfmvTG-0oSAQk,3996
|
235
241
|
google/adk/utils/variant_utils.py,sha256=u9IuOn2aXG3ibDYshgLoogBXqH9Gd84ixArQoeLQiE8,1463
|
236
|
-
google_adk-1.
|
237
|
-
google_adk-1.
|
238
|
-
google_adk-1.
|
239
|
-
google_adk-1.
|
240
|
-
google_adk-1.
|
242
|
+
google_adk-1.5.0.dist-info/entry_points.txt,sha256=zL9CU-6V2yQ2oc5lrcyj55ROHrpiIePsvQJ4H6SL-zI,43
|
243
|
+
google_adk-1.5.0.dist-info/licenses/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
244
|
+
google_adk-1.5.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
245
|
+
google_adk-1.5.0.dist-info/METADATA,sha256=nEiEm0DXdaSUewv4RkbxJvQDRR_836UNO7gaj7iuEYs,10023
|
246
|
+
google_adk-1.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|