Opinie (Build and Deploy an Agent with Agent Engine in Vertex AI)

1175 opinii

Marcel T. · Sprawdzono około godziny temu

lufa G. · Sprawdzono 2 dni temu

satryo p. · Sprawdzono 2 dni temu

Consider corporate firewalls that block API requests, so the user might get an SSLCertVerification error.

Pralad M. · Sprawdzono 3 dni temu

Mingfei J. · Sprawdzono 4 dni temu

Aditya T. · Sprawdzono 4 dni temu

Instructions are not clear, hence closing the lab

Nithin G. · Sprawdzono 4 dni temu

Anish K. · Sprawdzono 5 dni temu

unable to follow clearly

Maria C. · Sprawdzono 5 dni temu

lufa G. · Sprawdzono 5 dni temu

Kreeshika G. · Sprawdzono 5 dni temu

Pablo J. · Sprawdzono 6 dni temu

Srusti D. · Sprawdzono 6 dni temu

Yogesh G. · Sprawdzono 7 dni temu

Broken lab: --------------------------------------------------------------------------- SSLCertVerificationError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:464, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length) 463 try: --> 464 self._validate_conn(conn) 465 except (SocketTimeout, BaseSSLError) as e: File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:1093, in HTTPSConnectionPool._validate_conn(self, conn) 1092 if conn.is_closed: -> 1093 conn.connect() 1095 # TODO revise this, see https://github.com/urllib3/urllib3/issues/2791 File /opt/conda/lib/python3.10/site-packages/urllib3/connection.py:796, in HTTPSConnection.connect(self) 794 server_hostname_rm_dot = server_hostname.rstrip(".") --> 796 sock_and_verified = _ssl_wrap_socket_and_match_hostname( 797 sock=sock, 798 cert_reqs=self.cert_reqs, 799 ssl_version=self.ssl_version, 800 ssl_minimum_version=self.ssl_minimum_version, 801 ssl_maximum_version=self.ssl_maximum_version, 802 ca_certs=self.ca_certs, 803 ca_cert_dir=self.ca_cert_dir, 804 ca_cert_data=self.ca_cert_data, 805 cert_file=self.cert_file, 806 key_file=self.key_file, 807 key_password=self.key_password, 808 server_hostname=server_hostname_rm_dot, 809 ssl_context=self.ssl_context, 810 tls_in_tls=tls_in_tls, 811 assert_hostname=self.assert_hostname, 812 assert_fingerprint=self.assert_fingerprint, 813 ) 814 self.sock = sock_and_verified.socket File /opt/conda/lib/python3.10/site-packages/urllib3/connection.py:975, in _ssl_wrap_socket_and_match_hostname(sock, cert_reqs, ssl_version, ssl_minimum_version, ssl_maximum_version, cert_file, key_file, key_password, ca_certs, ca_cert_dir, ca_cert_data, assert_hostname, assert_fingerprint, server_hostname, ssl_context, tls_in_tls) 973 server_hostname = normalized --> 975 ssl_sock = ssl_wrap_socket( 976 sock=sock, 977 keyfile=key_file, 978 certfile=cert_file, 979 key_password=key_password, 980 ca_certs=ca_certs, 981 ca_cert_dir=ca_cert_dir, 982 ca_cert_data=ca_cert_data, 983 server_hostname=server_hostname, 984 ssl_context=context, 985 tls_in_tls=tls_in_tls, 986 ) 988 try: File /opt/conda/lib/python3.10/site-packages/urllib3/util/ssl_.py:483, in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls) 481 context.set_alpn_protocols(ALPN_PROTOCOLS) --> 483 ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) 484 return ssl_sock File /opt/conda/lib/python3.10/site-packages/urllib3/util/ssl_.py:527, in _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname) 525 return SSLTransport(sock, ssl_context, server_hostname) --> 527 return ssl_context.wrap_socket(sock, server_hostname=server_hostname) File /opt/conda/lib/python3.10/ssl.py:513, in SSLContext.wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session) 507 def wrap_socket(self, sock, server_side=False, 508 do_handshake_on_connect=True, 509 suppress_ragged_eofs=True, 510 server_hostname=None, session=None): 511 # SSLSocket class handles server_hostname encoding before it calls 512 # ctx._wrap_socket() --> 513 return self.sslsocket_class._create( 514 sock=sock, 515 server_side=server_side, 516 do_handshake_on_connect=do_handshake_on_connect, 517 suppress_ragged_eofs=suppress_ragged_eofs, 518 server_hostname=server_hostname, 519 context=self, 520 session=session 521 ) File /opt/conda/lib/python3.10/ssl.py:1104, in SSLSocket._create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session) 1103 raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") -> 1104 self.do_handshake() 1105 except (OSError, ValueError): File /opt/conda/lib/python3.10/ssl.py:1375, in SSLSocket.do_handshake(self, block) 1374 self.settimeout(None) -> 1375 self._sslobj.do_handshake() 1376 finally: SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017) During handling of the above exception, another exception occurred: SSLError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:787, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw) 786 # Make the request on the HTTPConnection object --> 787 response = self._make_request( 788 conn, 789 method, 790 url, 791 timeout=timeout_obj, 792 body=body, 793 headers=headers, 794 chunked=chunked, 795 retries=retries, 796 response_conn=response_conn, 797 preload_content=preload_content, 798 decode_content=decode_content, 799 **response_kw, 800 ) 802 # Everything went great! File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:488, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length) 487 new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) --> 488 raise new_e 490 # conn.request() calls http.client.*.request, not the method in 491 # urllib3.request. It also calls makefile (recv) on the socket. SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017) The above exception was the direct cause of the following exception: MaxRetryError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/requests/adapters.py:644, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies) 643 try: --> 644 resp = conn.urlopen( 645 method=request.method, 646 url=url, 647 body=request.body, 648 headers=request.headers, 649 redirect=False, 650 assert_same_host=False, 651 preload_content=False, 652 decode_content=False, 653 retries=self.max_retries, 654 timeout=timeout, 655 chunked=chunked, 656 ) 658 except (ProtocolError, OSError) as err: File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:871, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw) 868 log.warning( 869 "Retrying (%r) after connection broken by '%r': %s", retries, err, url 870 ) --> 871 return self.urlopen( 872 method, 873 url, 874 body, 875 headers, 876 retries, 877 redirect, 878 assert_same_host, 879 timeout=timeout, 880 pool_timeout=pool_timeout, 881 release_conn=release_conn, 882 chunked=chunked, 883 body_pos=body_pos, 884 preload_content=preload_content, 885 decode_content=decode_content, 886 **response_kw, 887 ) 889 # Handle redirect? File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:871, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw) 868 log.warning( 869 "Retrying (%r) after connection broken by '%r': %s", retries, err, url 870 ) --> 871 return self.urlopen( 872 method, 873 url, 874 body, 875 headers, 876 retries, 877 redirect, 878 assert_same_host, 879 timeout=timeout, 880 pool_timeout=pool_timeout, 881 release_conn=release_conn, 882 chunked=chunked, 883 body_pos=body_pos, 884 preload_content=preload_content, 885 decode_content=decode_content, 886 **response_kw, 887 ) 889 # Handle redirect? File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:871, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw) 868 log.warning( 869 "Retrying (%r) after connection broken by '%r': %s", retries, err, url 870 ) --> 871 return self.urlopen( 872 method, 873 url, 874 body, 875 headers, 876 retries, 877 redirect, 878 assert_same_host, 879 timeout=timeout, 880 pool_timeout=pool_timeout, 881 release_conn=release_conn, 882 chunked=chunked, 883 body_pos=body_pos, 884 preload_content=preload_content, 885 decode_content=decode_content, 886 **response_kw, 887 ) 889 # Handle redirect? File /opt/conda/lib/python3.10/site-packages/urllib3/connectionpool.py:841, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw) 839 new_e = ProtocolError("Connection aborted.", new_e) --> 841 retries = retries.increment( 842 method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2] 843 ) 844 retries.sleep() File /opt/conda/lib/python3.10/site-packages/urllib3/util/retry.py:535, in Retry.increment(self, method, url, response, error, _pool, _stacktrace) 534 reason = error or ResponseError(cause) --> 535 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] 537 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) MaxRetryError: HTTPSConnectionPool(host='metadata.google.internal', port=443): Max retries exceeded with url: /computeMetadata/v1/instance/service-accounts/default/?recursive=true (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)'))) During handling of the above exception, another exception occurred: SSLError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/google/auth/transport/requests.py:188, in Request.__call__(self, url, method, body, headers, timeout, **kwargs) 187 _helpers.request_log(_LOGGER, method, url, body, headers) --> 188 response = self.session.request( 189 method, url, data=body, headers=headers, timeout=timeout, **kwargs 190 ) 191 _helpers.response_log(_LOGGER, response) File /opt/conda/lib/python3.10/site-packages/requests/sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 588 send_kwargs.update(settings) --> 589 resp = self.send(prep, **send_kwargs) 591 return resp File /opt/conda/lib/python3.10/site-packages/requests/sessions.py:703, in Session.send(self, request, **kwargs) 702 # Send the request --> 703 r = adapter.send(request, **kwargs) 705 # Total elapsed time of the request (approximately) File /opt/conda/lib/python3.10/site-packages/requests/adapters.py:675, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies) 673 if isinstance(e.reason, _SSLError): 674 # This branch is for urllib3 v1.22 and later. --> 675 raise SSLError(e, request=request) 677 raise ConnectionError(e, request=request) SSLError: HTTPSConnectionPool(host='metadata.google.internal', port=443): Max retries exceeded with url: /computeMetadata/v1/instance/service-accounts/default/?recursive=true (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)'))) The above exception was the direct cause of the following exception: TransportError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py:317, in get(request, path, root, params, recursive, retry_count, headers, return_none_for_not_found_error, timeout) 316 try: --> 317 response = request( 318 url=url, method="GET", headers=headers_to_use, timeout=timeout 319 ) 320 if response.status in transport.DEFAULT_RETRYABLE_STATUS_CODES: File /opt/conda/lib/python3.10/site-packages/google/auth/transport/requests.py:195, in Request.__call__(self, url, method, body, headers, timeout, **kwargs) 194 new_exc = exceptions.TransportError(caught_exc) --> 195 raise new_exc from caught_exc TransportError: HTTPSConnectionPool(host='metadata.google.internal', port=443): Max retries exceeded with url: /computeMetadata/v1/instance/service-accounts/default/?recursive=true (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)'))) The above exception was the direct cause of the following exception: TransportError Traceback (most recent call last) File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py:139, in Credentials._perform_refresh_token(self, request) 138 try: --> 139 self._retrieve_info(request) 140 scopes = self._scopes if self._scopes is not None else self._default_scopes File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py:107, in Credentials._retrieve_info(self, request) 99 """Retrieve information about the service account. 100 101 Updates the scopes and retrieves the full service account email. (...) 105 HTTP requests. 106 """ --> 107 info = _metadata.get_service_account_info( 108 request, service_account=self._service_account_email 109 ) 111 if not info or "email" not in info: File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py:460, in get_service_account_info(request, service_account) 458 # See https://cloud.google.com/compute/docs/metadata#aggcontents 459 # for more on the use of 'recursive'. --> 460 return get(request, path, params={"recursive": "true"}) File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/_metadata.py:345, in get(request, path, root, params, recursive, retry_count, headers, return_none_for_not_found_error, timeout) 344 if last_exception: --> 345 raise exceptions.TransportError( 346 "Failed to retrieve {} from the Google Compute Engine " 347 "metadata service. Compute Engine Metadata server unavailable. " 348 "Last exception: {}".format(url, last_exception) 349 ) from last_exception 350 else: TransportError: Failed to retrieve https://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true from the Google Compute Engine metadata service. Compute Engine Metadata server unavailable. Last exception: HTTPSConnectionPool(host='metadata.google.internal', port=443): Max retries exceeded with url: /computeMetadata/v1/instance/service-accounts/default/?recursive=true (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)'))) The above exception was the direct cause of the following exception: RefreshError Traceback (most recent call last) Cell In[19], line 1 ----> 1 remote_agent = agent_engines.create( 2 agent, 3 requirements=[ 4 "google-cloud-aiplatform[agent_engines,langchain]", 5 "cloudpickle==3.0.0", 6 "pydantic>=2.10", 7 "requests", 8 ], 9 ) File /opt/conda/lib/python3.10/site-packages/vertexai/agent_engines/__init__.py:194, in create(agent_engine, requirements, display_name, description, gcs_dir_name, extra_packages, env_vars, build_options, service_account, psc_interface_config, min_instances, max_instances, resource_limits, container_concurrency, encryption_spec) 66 def create( 67 agent_engine: Optional[_AgentEngineInterface] = None, 68 *, (...) 84 encryption_spec: Optional[aip_types.EncryptionSpec] = None, 85 ) -> AgentEngine: 86 """Creates a new Agent Engine. 87 88 The Agent Engine will be an instance of the `agent_engine` that (...) 192 nonexistent file. 193 """ --> 194 return AgentEngine.create( 195 agent_engine=agent_engine, 196 requirements=requirements, 197 display_name=display_name, 198 description=description, 199 gcs_dir_name=gcs_dir_name, 200 extra_packages=extra_packages, 201 env_vars=env_vars, 202 build_options=build_options, 203 service_account=service_account, 204 psc_interface_config=psc_interface_config, 205 min_instances=min_instances, 206 max_instances=max_instances, 207 resource_limits=resource_limits, 208 container_concurrency=container_concurrency, 209 encryption_spec=encryption_spec, 210 ) File /opt/conda/lib/python3.10/site-packages/vertexai/agent_engines/_agent_engines.py:545, in AgentEngine.create(cls, agent_engine, requirements, display_name, description, gcs_dir_name, extra_packages, env_vars, build_options, service_account, psc_interface_config, min_instances, max_instances, resource_limits, container_concurrency, encryption_spec) 539 base.VertexAiResourceNounWithFutureManager.__init__(sdk_resource) 541 # Prepares the Agent Engine for creation in Vertex AI. 542 # This involves packaging and uploading the artifacts for 543 # agent_engine, requirements and extra_packages to 544 # `staging_bucket/gcs_dir_name`. --> 545 _prepare( 546 agent_engine=agent_engine, 547 requirements=requirements, 548 project=sdk_resource.project, 549 location=sdk_resource.location, 550 staging_bucket=staging_bucket, 551 gcs_dir_name=gcs_dir_name, 552 extra_packages=extra_packages, 553 ) 554 reasoning_engine = aip_types.ReasoningEngine( 555 display_name=display_name, 556 description=description, 557 encryption_spec=encryption_spec, 558 ) 559 if agent_engine is not None: 560 # Update the package spec. File /opt/conda/lib/python3.10/site-packages/vertexai/agent_engines/_agent_engines.py:1295, in _prepare(agent_engine, requirements, extra_packages, project, location, staging_bucket, gcs_dir_name, logger) 1293 if agent_engine is None: 1294 return -> 1295 gcs_bucket = _get_gcs_bucket( 1296 project=project, 1297 location=location, 1298 staging_bucket=staging_bucket, 1299 logger=logger, 1300 ) 1301 _upload_agent_engine( 1302 agent_engine=agent_engine, 1303 gcs_bucket=gcs_bucket, 1304 gcs_dir_name=gcs_dir_name, 1305 logger=logger, 1306 ) 1307 if requirements is not None: File /opt/conda/lib/python3.10/site-packages/vertexai/agent_engines/_agent_engines.py:1195, in _get_gcs_bucket(project, location, staging_bucket, logger) 1193 staging_bucket = staging_bucket.replace("gs://", "") 1194 try: -> 1195 gcs_bucket = storage_client.get_bucket(staging_bucket) 1196 logger.info(f"Using bucket {staging_bucket}") 1197 except exceptions.NotFound: File /opt/conda/lib/python3.10/contextlib.py:79, in ContextDecorator.__call__.<locals>.inner(*args, **kwds) 76 @wraps(func) 77 def inner(*args, **kwds): 78 with self._recreate_cm(): ---> 79 return func(*args, **kwds) File /opt/conda/lib/python3.10/site-packages/google/cloud/storage/client.py:907, in Client.get_bucket(self, bucket_or_name, timeout, if_metageneration_match, if_metageneration_not_match, retry, generation, soft_deleted) 846 """Retrieve a bucket via a GET request. 847 848 See [API reference docs](https://cloud.google.com/storage/docs/json_api/v1/buckets/get) and a [code sample](https://cloud.google.com/storage/docs/samples/storage-get-bucket-metadata#storage_get_bucket_metadata-python). (...) 904 If the bucket is not found. 905 """ 906 bucket = self._bucket_arg_to_bucket(bucket_or_name, generation=generation) --> 907 bucket.reload( 908 client=self, 909 timeout=timeout, 910 if_metageneration_match=if_metageneration_match, 911 if_metageneration_not_match=if_metageneration_not_match, 912 retry=retry, 913 soft_deleted=soft_deleted, 914 ) 915 return bucket File /opt/conda/lib/python3.10/contextlib.py:79, in ContextDecorator.__call__.<locals>.inner(*args, **kwds) 76 @wraps(func) 77 def inner(*args, **kwds): 78 with self._recreate_cm(): ---> 79 return func(*args, **kwds) File /opt/conda/lib/python3.10/site-packages/google/cloud/storage/bucket.py:1147, in Bucket.reload(self, client, projection, timeout, if_etag_match, if_etag_not_match, if_metageneration_match, if_metageneration_not_match, retry, soft_deleted) 1088 @create_trace_span(name="Storage.Bucket.reload") 1089 def reload( 1090 self, (...) 1099 soft_deleted=None, 1100 ): 1101 """Reload properties from Cloud Storage. 1102 1103 If :attr:`user_project` is set, bills the API request to that project. (...) 1145 See: https://cloud.google.com/storage/docs/soft-delete 1146 """ -> 1147 super(Bucket, self).reload( 1148 client=client, 1149 projection=projection, 1150 timeout=timeout, 1151 if_etag_match=if_etag_match, 1152 if_etag_not_match=if_etag_not_match, 1153 if_metageneration_match=if_metageneration_match, 1154 if_metageneration_not_match=if_metageneration_not_match, 1155 retry=retry, 1156 soft_deleted=soft_deleted, 1157 ) File /opt/conda/lib/python3.10/site-packages/google/cloud/storage/_helpers.py:303, in _PropertyMixin.reload(self, client, projection, if_etag_match, if_etag_not_match, if_generation_match, if_generation_not_match, if_metageneration_match, if_metageneration_not_match, timeout, retry, soft_deleted) 299 headers = self._encryption_headers() 300 _add_etag_match_headers( 301 headers, if_etag_match=if_etag_match, if_etag_not_match=if_etag_not_match 302 ) --> 303 api_response = client._get_resource( 304 self.path, 305 query_params=query_params, 306 headers=headers, 307 timeout=timeout, 308 retry=retry, 309 _target_object=self, 310 ) 311 self._set_properties(api_response) File /opt/conda/lib/python3.10/site-packages/google/cloud/storage/client.py:474, in Client._get_resource(self, path, query_params, headers, timeout, retry, _target_object) 418 def _get_resource( 419 self, 420 path, (...) 425 _target_object=None, 426 ): 427 """Helper for bucket / blob methods making API 'GET' calls. 428 429 Args: (...) 472 If the bucket is not found. 473 """ --> 474 return self._connection.api_request( 475 method="GET", 476 path=path, 477 query_params=query_params, 478 headers=headers, 479 timeout=timeout, 480 retry=retry, 481 _target_object=_target_object, 482 ) File /opt/conda/lib/python3.10/site-packages/google/cloud/storage/_http.py:90, in Connection.api_request(self, *args, **kwargs) 88 if retry: 89 call = retry(call) ---> 90 return call() File /opt/conda/lib/python3.10/site-packages/google/api_core/retry/retry_unary.py:294, in Retry.__call__.<locals>.retry_wrapped_func(*args, **kwargs) 290 target = functools.partial(func, *args, **kwargs) 291 sleep_generator = exponential_sleep_generator( 292 self._initial, self._maximum, multiplier=self._multiplier 293 ) --> 294 return retry_target( 295 target, 296 self._predicate, 297 sleep_generator, 298 timeout=self._timeout, 299 on_error=on_error, 300 ) File /opt/conda/lib/python3.10/site-packages/google/api_core/retry/retry_unary.py:156, in retry_target(target, predicate, sleep_generator, timeout, on_error, exception_factory, **kwargs) 152 # pylint: disable=broad-except 153 # This function explicitly must deal with broad exceptions. 154 except Exception as exc: 155 # defer to shared logic for handling errors --> 156 next_sleep = _retry_error_helper( 157 exc, 158 deadline, 159 sleep_iter, 160 error_list, 161 predicate, 162 on_error, 163 exception_factory, 164 timeout, 165 ) 166 # if exception not raised, sleep before next attempt 167 time.sleep(next_sleep) File /opt/conda/lib/python3.10/site-packages/google/api_core/retry/retry_base.py:216, in _retry_error_helper(exc, deadline, sleep_iterator, error_list, predicate_fn, on_error_fn, exc_factory_fn, original_timeout) 210 if not predicate_fn(exc): 211 final_exc, source_exc = exc_factory_fn( 212 error_list, 213 RetryFailureReason.NON_RETRYABLE_ERROR, 214 original_timeout, 215 ) --> 216 raise final_exc from source_exc 217 if on_error_fn is not None: 218 on_error_fn(exc) File /opt/conda/lib/python3.10/site-packages/google/api_core/retry/retry_unary.py:147, in retry_target(target, predicate, sleep_generator, timeout, on_error, exception_factory, **kwargs) 145 while True: 146 try: --> 147 result = target() 148 if inspect.isawaitable(result): 149 warnings.warn(_ASYNC_RETRY_WARNING) File /opt/conda/lib/python3.10/site-packages/google/cloud/_http/__init__.py:482, in JSONConnection.api_request(self, method, path, query_params, data, content_type, headers, api_base_url, api_version, expect_json, _target_object, timeout, extra_api_info) 479 data = json.dumps(data) 480 content_type = "application/json" --> 482 response = self._make_request( 483 method=method, 484 url=url, 485 data=data, 486 content_type=content_type, 487 headers=headers, 488 target_object=_target_object, 489 timeout=timeout, 490 extra_api_info=extra_api_info, 491 ) 493 if not 200 <= response.status_code < 300: 494 raise exceptions.from_http_response(response) File /opt/conda/lib/python3.10/site-packages/google/cloud/_http/__init__.py:341, in JSONConnection._make_request(self, method, url, data, content_type, headers, target_object, timeout, extra_api_info) 338 headers[CLIENT_INFO_HEADER] = self.user_agent 339 headers["User-Agent"] = self.user_agent --> 341 return self._do_request( 342 method, url, headers, data, target_object, timeout=timeout 343 ) File /opt/conda/lib/python3.10/site-packages/google/cloud/_http/__init__.py:379, in JSONConnection._do_request(self, method, url, headers, data, target_object, timeout) 345 def _do_request( 346 self, method, url, headers, data, target_object, timeout=_DEFAULT_TIMEOUT 347 ): # pylint: disable=unused-argument 348 """Low-level helper: perform the actual API request over HTTP. 349 350 Allows batch context managers to override and defer a request. (...) 377 :returns: The HTTP response. 378 """ --> 379 return self.http.request( 380 url=url, method=method, headers=headers, data=data, timeout=timeout 381 ) File /opt/conda/lib/python3.10/site-packages/google/auth/transport/requests.py:538, in AuthorizedSession.request(self, method, url, data, headers, max_allowed_time, timeout, **kwargs) 535 remaining_time = max_allowed_time 537 with TimeoutGuard(remaining_time) as guard: --> 538 self.credentials.before_request(auth_request, method, url, request_headers) 539 remaining_time = guard.remaining_timeout 541 with TimeoutGuard(remaining_time) as guard: File /opt/conda/lib/python3.10/site-packages/google/auth/credentials.py:230, in Credentials.before_request(self, request, method, url, headers) 228 self._non_blocking_refresh(request) 229 else: --> 230 self._blocking_refresh(request) 232 metrics.add_metric_header(headers, self._metric_header_for_usage()) 233 self.apply(headers) File /opt/conda/lib/python3.10/site-packages/google/auth/credentials.py:193, in Credentials._blocking_refresh(self, request) 191 def _blocking_refresh(self, request): 192 if not self.valid: --> 193 self.refresh(request) File /opt/conda/lib/python3.10/site-packages/google/auth/credentials.py:367, in CredentialsWithTrustBoundary.refresh(self, request) 361 def refresh(self, request): 362 """Refreshes the access token and the trust boundary. 363 364 This method calls the subclass's token refresh logic and then 365 refreshes the trust boundary if applicable. 366 """ --> 367 self._perform_refresh_token(request) 368 self._refresh_trust_boundary(request) File /opt/conda/lib/python3.10/site-packages/google/auth/compute_engine/credentials.py:147, in Credentials._perform_refresh_token(self, request) 145 except exceptions.TransportError as caught_exc: 146 new_exc = exceptions.RefreshError(caught_exc) --> 147 raise new_exc from caught_exc RefreshError: Failed to retrieve https://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/?recursive=true from the Google Compute Engine metadata service. Compute Engine Metadata server unavailable. Last exception: HTTPSConnectionPool(host='metadata.google.internal', port=443): Max retries exceeded with url: /computeMetadata/v1/instance/service-accounts/default/?recursive=true (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)')))

Richard G. · Sprawdzono 7 dni temu

some errors

samantha.gunasena s. · Sprawdzono 7 dni temu

Commands failed a few times and had to be re-run. Disconnected from lab frequently (no a problem on my network). Lab doesn't really give you much tie to absorb all the material.

Chris Jalbert G. · Sprawdzono 8 dni temu

utkarsh s. · Sprawdzono 8 dni temu

Rouhollah E. · Sprawdzono 8 dni temu

Ali I. · Sprawdzono 9 dni temu

I would like this to focus on our 1P stack - ADK instead of langchain

Christian B. · Sprawdzono 9 dni temu

Shivaxi Z. · Sprawdzono 10 dni temu

Alexey O. · Sprawdzono 11 dni temu

Sam P. · Sprawdzono 11 dni temu

Pradeep K. · Sprawdzono 11 dni temu

Nie gwarantujemy, że publikowane opinie pochodzą od konsumentów, którzy dane produkty kupili lub ich używali. Google nie weryfikuje opinii.