veadk-python 0.2.0__py3-none-any.whl → 0.2.1__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.

Potentially problematic release.


This version of veadk-python might be problematic. Click here for more details.

Binary file
@@ -52,7 +52,7 @@ class DeepevalEvaluator(BaseEvaluator):
52
52
  "https://ark.cn-beijing.volces.com/api/v3/",
53
53
  ),
54
54
  name: str = "veadk_deepeval_evaluator",
55
- prometheus_config: PrometheusPushgatewayConfig = None,
55
+ prometheus_config: PrometheusPushgatewayConfig | None = None,
56
56
  ):
57
57
  super().__init__(agent=agent, name=name)
58
58
 
@@ -73,11 +73,9 @@ class DeepevalEvaluator(BaseEvaluator):
73
73
  eval_id: str = f"test_{formatted_timestamp()}",
74
74
  ):
75
75
  """Target to Google ADK, we will use the same evaluation case format as Google ADK."""
76
- for metric in metrics:
77
- if not metric.model:
78
- metric.model = self.judge_model
79
76
  # Get evaluation data by parsing eval set file
80
77
  self.generate_eval_data(eval_set_file_path)
78
+
81
79
  # Get actual data by running agent
82
80
  logger.info("Start to run agent for actual data.")
83
81
  await self._run_agent_for_actual_data()
@@ -83,6 +83,3 @@ class InMemoryExporter(BaseModel, BaseExporter):
83
83
  self._real_exporter = self._exporter
84
84
  processor = export.SimpleSpanProcessor(self._exporter)
85
85
  return processor, None
86
-
87
- def get_meter_context(self) -> Any:
88
- return None
@@ -19,12 +19,11 @@ import time
19
19
  from typing import Any
20
20
 
21
21
  from openinference.instrumentation.google_adk import GoogleADKInstrumentor
22
- from opentelemetry.sdk import trace as trace_sdk
23
22
  from opentelemetry import trace as trace_api
23
+ from opentelemetry.sdk import trace as trace_sdk
24
24
  from opentelemetry.sdk.resources import Resource
25
25
  from opentelemetry.sdk.trace import TracerProvider
26
26
  from opentelemetry.sdk.trace.export import BatchSpanProcessor, SimpleSpanProcessor
27
-
28
27
  from pydantic import BaseModel, ConfigDict, Field
29
28
  from typing_extensions import override
30
29
 
@@ -62,28 +61,19 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
62
61
 
63
62
  def model_post_init(self, context: Any, /) -> None:
64
63
  self._processors = []
65
- self._inmemory_exporter: InMemoryExporter = None
66
- self._apiserver_exporter: ApiServerExporter = None
67
- # Inmemory & APIServer are the default exporters
68
- have_inmemory_exporter = False
69
- have_apiserver_exporter = False
64
+ self._inmemory_exporter: InMemoryExporter | None = None
65
+
66
+ # InMemoryExporter is a default exporter for exporting local tracing file
70
67
  for exporter in self.exporters:
71
68
  if isinstance(exporter, InMemoryExporter):
72
- have_inmemory_exporter = True
73
69
  self._inmemory_exporter = exporter
74
- elif isinstance(exporter, ApiServerExporter):
75
- have_apiserver_exporter = True
76
- self._apiserver_exporter = exporter
77
-
78
- if not have_inmemory_exporter:
79
- inmemory_exporter = InMemoryExporter()
80
- self.exporters.append(inmemory_exporter)
81
- self._inmemory_exporter = inmemory_exporter
82
- if not have_apiserver_exporter:
83
- apiserver_exporter = ApiServerExporter()
84
- self.exporters.append(apiserver_exporter)
85
- self._apiserver_exporter = apiserver_exporter
86
70
 
71
+ if self._inmemory_exporter is None:
72
+ self._inmemory_exporter = InMemoryExporter()
73
+ self.exporters.append(self._inmemory_exporter)
74
+ # ========================================================================
75
+
76
+ # Process meter-related attributes
87
77
  self._meter_contexts = []
88
78
  self._meter_uploaders = []
89
79
  for exporter in self.exporters:
@@ -94,25 +84,24 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
94
84
  for meter_context in self._meter_contexts:
95
85
  meter_uploader = MeterUploader(meter_context)
96
86
  self._meter_uploaders.append(meter_uploader)
87
+ # ================================
97
88
 
98
89
  # init tracer provider
90
+ # VeADK operates on global OpenTelemetry provider, hence return nothing
99
91
  self._init_tracer_provider()
100
92
 
101
93
  # just for debug
102
94
  self._trace_file_path = ""
103
95
 
104
- # patch this before starting instrumentation
105
- # enable_veadk_tracing(self.dump)
106
-
107
96
  GoogleADKInstrumentor().instrument()
108
97
 
109
- def _init_tracer_provider(self):
98
+ def _init_tracer_provider(self) -> None:
110
99
  # 1. get global trace provider
111
100
  global_tracer_provider = trace_api.get_tracer_provider()
112
101
 
113
102
  if not isinstance(global_tracer_provider, TracerProvider):
114
103
  logger.info(
115
- f"Global tracer provider has not been set. Create tracer provider and set it now."
104
+ "Global tracer provider has not been set. Create tracer provider and set it now."
116
105
  )
117
106
  # 1.1 init tracer provider
118
107
  tracer_provider = trace_sdk.TracerProvider()
@@ -123,17 +112,25 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
123
112
  # 2. check if apmplus exporter is already exist
124
113
  for processor in global_tracer_provider._active_span_processor._span_processors:
125
114
  if isinstance(processor, (BatchSpanProcessor, SimpleSpanProcessor)):
126
- # check exporter endpoint
127
- if "apmplus" in processor.span_exporter._endpoint:
128
- have_apmplus_exporter = True
115
+ # try to get endpoint, in case of exporter has no _endpoint attribute
116
+ try:
117
+ exporter_endpoint = processor.span_exporter._endpoint
118
+ if "apmplus" in exporter_endpoint:
119
+ have_apmplus_exporter = True
120
+ except AttributeError:
121
+ # log a warning and pass this exporter
122
+ logger.warning(
123
+ f"Exporter {processor.span_exporter} has no endpoint."
124
+ )
129
125
 
130
126
  # 3. add exporters to global tracer_provider
131
127
  # range over a copy of exporters to avoid index issues
128
+ if have_apmplus_exporter:
129
+ self.exporters = [
130
+ e for e in self.exporters if not isinstance(e, APMPlusExporter)
131
+ ]
132
+
132
133
  for exporter in self.exporters[:]:
133
- if have_apmplus_exporter and isinstance(exporter, APMPlusExporter):
134
- # apmplus exporter has been int in global tracer provider, need to remove from exporters.
135
- self.exporters.remove(exporter)
136
- continue
137
134
  processor, resource_attributes = exporter.get_processor()
138
135
  if resource_attributes is not None:
139
136
  update_resource_attributions(
@@ -144,7 +141,6 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
144
141
  self._processors.append(processor)
145
142
  logger.debug(f"Init OpentelemetryTracer with {len(self.exporters)} exporters.")
146
143
 
147
-
148
144
  @override
149
145
  def dump(
150
146
  self,
@@ -152,6 +148,12 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
152
148
  session_id: str,
153
149
  path: str = "/tmp",
154
150
  ) -> str:
151
+ if not self._inmemory_exporter:
152
+ logger.warning(
153
+ "InMemoryExporter is not initialized. Please check your tracer exporters."
154
+ )
155
+ return ""
156
+
155
157
  prompt_tokens = self._inmemory_exporter._real_exporter.prompt_tokens
156
158
  completion_tokens = self._inmemory_exporter._real_exporter.completion_tokens
157
159
 
veadk/version.py CHANGED
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- VERSION = "0.2.0"
15
+ VERSION = "0.2.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veadk-python
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Volcengine agent development kit, integrations with Volcengine cloud services.
5
5
  Author-email: Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>, Zhi Han <sliverydayday@gmail.com>, Meng Wang <mengwangwm@gmail.com>
6
6
  Requires-Python: >=3.10
@@ -4,14 +4,14 @@ veadk/config.py,sha256=UFUgzL4fTRlM_LIyutP50dvxtKOuFeMhL5TPEOO7r2k,4109
4
4
  veadk/consts.py,sha256=DIVr-sXQahrlJoPiTfsDL0y_pX8w-LLXHDsubL5w13k,802
5
5
  veadk/runner.py,sha256=dRp4Qws_m7CJZ8zCsQ36kklGmUWBtLJnUgHj9eBZJZE,9049
6
6
  veadk/types.py,sha256=pFwBNu93xldy23j4tycpdpKUvpeg_8Ho5hhf-DCsKQg,864
7
- veadk/version.py,sha256=h5cjjBcsI-2YIWb4SguJh0VQ8bYS6bGTBkrDKg5qtls,653
7
+ veadk/version.py,sha256=wz7JV-NDeTza7ICAj0QLylkGkfJudZdTdvWKGp7pJZ0,653
8
8
  veadk/__pycache__/__init__.cpython-310.pyc,sha256=v0cSDrRHlquyZln9_R2jx6Wv_Pujx04sLZzBk11dLeM,525
9
9
  veadk/__pycache__/agent.cpython-310.pyc,sha256=7CvnelBRN-zt_Jb6LJUON9PTmTYsxayks-Irh3TIfv0,7581
10
10
  veadk/__pycache__/config.cpython-310.pyc,sha256=bw0rq7_E755cNXE3gCblQcrYlFSdH3DTFnIBQVeGcgs,3220
11
11
  veadk/__pycache__/consts.cpython-310.pyc,sha256=xxHPN1lv6ORHp3SyxIp4MPFTwSM8XkW44DGzsf4QB4I,321
12
12
  veadk/__pycache__/runner.cpython-310.pyc,sha256=rg8MRn6WU58AE56CekPqOM_phCFHOgODr-rzwzDXpgE,6126
13
13
  veadk/__pycache__/types.cpython-310.pyc,sha256=s9SBY3yiOEm5zuPugvJnuYWNdVTWJv8ioLOv40okJ6I,412
14
- veadk/__pycache__/version.cpython-310.pyc,sha256=rPmRU_nEMRrsHfXADXr3Q7ls08P8kUmWtnz3lax2_9I,165
14
+ veadk/__pycache__/version.cpython-310.pyc,sha256=Y13TKX-01Df6C7exvvT92umdtfPjQ9PF7nvmo6m8FiE,165
15
15
  veadk/a2a/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
16
16
  veadk/a2a/agent_card.py,sha256=lhtgW1acMpxYUdULHEZwVFXOi6Xh4lNkf4S7QIhbFFI,1525
17
17
  veadk/a2a/remote_ve_agent.py,sha256=l7qqEShvuKRnPtLZfVKFdma1-Xtr7Wk0k6XtFkMDSSU,1256
@@ -439,7 +439,7 @@ veadk/evaluation/adk_evaluator/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh
439
439
  veadk/evaluation/adk_evaluator/adk_evaluator.py,sha256=v3IiIFyg6S1Ik9TAYo-3ZaF_JvEhAXQtwmqkv8rL6Rc,10193
440
440
  veadk/evaluation/adk_evaluator/__pycache__/__init__.cpython-310.pyc,sha256=qHSnTNUwWv_RrGxWvTHSbwDqKikXYVf-7yyzgPeRljY,174
441
441
  veadk/evaluation/deepeval_evaluator/__init__.py,sha256=lLGtRvWhwDy4u7hmtZxZbPmdMzM58pSjEwEF34NqW-4,718
442
- veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py,sha256=DXAOev7pkxr11SG3eYzXlUloZ39789qHT0tm19nQHx8,8546
442
+ veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py,sha256=rbEn0tKFqWSMSF8mpcgD0YVSHeHzU5acej7q6DDzQQY,8442
443
443
  veadk/evaluation/deepeval_evaluator/__pycache__/__init__.cpython-310.pyc,sha256=S4zNa-BCsyL7xBDoMMUxVki492LcCitIke4wvwywXmc,261
444
444
  veadk/evaluation/deepeval_evaluator/__pycache__/deepeval_evaluator.cpython-310.pyc,sha256=PlbOq3bSpDHFS5QFFl8aPMTOcDJAJ7MhsJIS1tPuPaw,5267
445
445
  veadk/evaluation/utils/prometheus.py,sha256=4Jhx5T8ibdcY6EdpOaTFqBJRIKFMCbx7qlDZP00X-a0,3868
@@ -493,22 +493,22 @@ veadk/tracing/base_tracer.py,sha256=8Al5erGk-tJ-7qJsbC0e050eR4SAOk3e2OL3dgLncjk,
493
493
  veadk/tracing/__pycache__/__init__.cpython-310.pyc,sha256=jMzJwkEztEGTn9vCjIJfPrB4VQyc3Z8fi4pEUXYyWS8,157
494
494
  veadk/tracing/__pycache__/base_tracer.cpython-310.pyc,sha256=_EHjlUlH84rhL1OJEsh9lBwoT13XR2MW7g6qN6ssZDA,4416
495
495
  veadk/tracing/telemetry/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
496
- veadk/tracing/telemetry/opentelemetry_tracer.py,sha256=CYi43LmTKCB1I4Ja8Ua1BP3XtORiM-LmW_zApLJqMNI,8346
496
+ veadk/tracing/telemetry/opentelemetry_tracer.py,sha256=W4_Z5hBpLgwbWjV_DPYhmQCVDgrZ9zJMuDnQ6dkbp60,8415
497
497
  veadk/tracing/telemetry/__pycache__/__init__.cpython-310.pyc,sha256=AwKg0L0Ii4rvjSndNNJHS3YYvJymicd36IVfrjEHzxc,167
498
- veadk/tracing/telemetry/__pycache__/opentelemetry_tracer.cpython-310.pyc,sha256=80wkIctyU_IV8z6Gf9FHpA_nH6_7d7F1fVOBBljtiTo,4611
498
+ veadk/tracing/telemetry/__pycache__/opentelemetry_tracer.cpython-310.pyc,sha256=Y0c58qf20FtDkMHpLuMwQY0FoUlOgYrELhQORjAdAbs,5702
499
499
  veadk/tracing/telemetry/exporters/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
500
500
  veadk/tracing/telemetry/exporters/apiserver_exporter.py,sha256=Xn7CJASHjWMiSJZ7J6hEmK66P6h6jVx7xVH627IVhUM,2239
501
501
  veadk/tracing/telemetry/exporters/apmplus_exporter.py,sha256=qC49saKDKZnCRy-y11xoR8iFco3iwzB08QPYRDYABcg,3707
502
502
  veadk/tracing/telemetry/exporters/base_exporter.py,sha256=c4Py27xPt-FhvKnOMrCj-3GBpj2cmjrm8mkOtDpvDRg,890
503
503
  veadk/tracing/telemetry/exporters/cozeloop_exporter.py,sha256=a2oUjR01k0LkeXZ56AG7FuuCK_qnQ0Zg5VpDkm_y1NQ,2386
504
- veadk/tracing/telemetry/exporters/inmemory_exporter.py,sha256=LHVt-ZJqhsRp0sddUFHc2Aq0Vl2nJHdO5xTTLQQnZM0,3288
504
+ veadk/tracing/telemetry/exporters/inmemory_exporter.py,sha256=ChNG3pCB9D9zr42GruDHxhfcIdidVXQqeGfjpnKsjJI,3227
505
505
  veadk/tracing/telemetry/exporters/tls_exporter.py,sha256=GEHKyNDdWuPNhG7aHsIq3cTN99Fc_caMrEv-FfULb6Y,2677
506
506
  veadk/tracing/telemetry/exporters/__pycache__/__init__.cpython-310.pyc,sha256=wI_WBNa7P0nVDc5HUZriRqr4chtdQ-YvnkxC9K7orKc,177
507
507
  veadk/tracing/telemetry/exporters/__pycache__/apiserver_exporter.cpython-310.pyc,sha256=Hfrj2XvLyCtm4TWtYRrs6pFTLtu3_lCkK6QNKFUPRGo,2176
508
508
  veadk/tracing/telemetry/exporters/__pycache__/apmplus_exporter.cpython-310.pyc,sha256=8sM8NDZWnCT4262g54p4rNRvuTU3EzVzZ9_U_bvWt94,3410
509
509
  veadk/tracing/telemetry/exporters/__pycache__/base_exporter.cpython-310.pyc,sha256=OBr1qAJnArckgL0gZrh0xFfFlcDmxxXpdfNiGloJnBE,867
510
510
  veadk/tracing/telemetry/exporters/__pycache__/cozeloop_exporter.cpython-310.pyc,sha256=7mRzr-ahhg9Ts8_HlfFE9phCVnWOkbdyRVVK8CEzidk,2344
511
- veadk/tracing/telemetry/exporters/__pycache__/inmemory_exporter.cpython-310.pyc,sha256=xHsaR9BQtQP3SSpuH4kDdq18r612o2pzV8i1fXDv2h4,3235
511
+ veadk/tracing/telemetry/exporters/__pycache__/inmemory_exporter.cpython-310.pyc,sha256=hv8CIPEqlC6mQmEtm21x1FXVhZ36kqpBB3eEYL4YBcI,3084
512
512
  veadk/tracing/telemetry/exporters/__pycache__/tls_exporter.cpython-310.pyc,sha256=_qblkapkb-7hutrshQugTTdKasdBLFKP13MoC29jOZI,2626
513
513
  veadk/tracing/telemetry/metrics/__init__.py,sha256=pkSabKw7_ai4NOo56pXKL40EcaxIDh6HYxPXOY7qWbo,634
514
514
  veadk/tracing/telemetry/metrics/opentelemetry_metrics.py,sha256=0VcEfQqPF17tgGZrUbF9JCbvzO-_o4cycid2j1DWAow,2715
@@ -526,9 +526,9 @@ veadk/utils/__pycache__/mcp_utils.cpython-310.pyc,sha256=Ju1AxX9uw1jyfssci5Fya8t
526
526
  veadk/utils/__pycache__/misc.cpython-310.pyc,sha256=HB9waD1DEzY1bVQDpWmR6ABF2aDentKNeNEuEtsBQjY,943
527
527
  veadk/utils/__pycache__/patches.cpython-310.pyc,sha256=1TjcvbZAAzRP5lIXLPi7bJTAxXmKWTgi_vXAR6wS0-8,1476
528
528
  veadk/utils/__pycache__/volcengine_sign.cpython-310.pyc,sha256=KPU675rYh3l4JkUwT9OO26yjTW5HLgI9fGRKG93oYiI,3219
529
- veadk_python-0.2.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
530
- veadk_python-0.2.0.dist-info/METADATA,sha256=e1GeTioZCsbJ4JFnaub-t_a7TIuAzIQMTrOhfYjZ9PE,4338
531
- veadk_python-0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
532
- veadk_python-0.2.0.dist-info/entry_points.txt,sha256=su1TJC5YpYPk1o4I5uKOI8pjaR0wujhnjJeqQ-yk65U,45
533
- veadk_python-0.2.0.dist-info/top_level.txt,sha256=Qqi3ycJ4anKiZWBXtUBIy8zK9ZuXJsFa05oFq8O8qqY,6
534
- veadk_python-0.2.0.dist-info/RECORD,,
529
+ veadk_python-0.2.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
530
+ veadk_python-0.2.1.dist-info/METADATA,sha256=3JKlfPm2e3AUEgaoP1nGX-V6z5xOpQhJe2M-u_Ajgd0,4338
531
+ veadk_python-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
532
+ veadk_python-0.2.1.dist-info/entry_points.txt,sha256=su1TJC5YpYPk1o4I5uKOI8pjaR0wujhnjJeqQ-yk65U,45
533
+ veadk_python-0.2.1.dist-info/top_level.txt,sha256=Qqi3ycJ4anKiZWBXtUBIy8zK9ZuXJsFa05oFq8O8qqY,6
534
+ veadk_python-0.2.1.dist-info/RECORD,,