arize-phoenix 2.3.0__py3-none-any.whl → 2.4.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 arize-phoenix might be problematic. Click here for more details.
- {arize_phoenix-2.3.0.dist-info → arize_phoenix-2.4.1.dist-info}/METADATA +1 -1
- {arize_phoenix-2.3.0.dist-info → arize_phoenix-2.4.1.dist-info}/RECORD +18 -18
- phoenix/config.py +1 -0
- phoenix/experimental/evals/evaluators.py +3 -0
- phoenix/experimental/evals/functions/classify.py +6 -0
- phoenix/experimental/evals/functions/generate.py +3 -0
- phoenix/experimental/evals/models/base.py +3 -0
- phoenix/experimental/evals/models/openai.py +3 -0
- phoenix/experimental/evals/models/vertex.py +26 -4
- phoenix/server/static/index.js +454 -438
- phoenix/session/evaluation.py +7 -5
- phoenix/trace/__init__.py +8 -2
- phoenix/trace/llama_index/callback.py +17 -8
- phoenix/trace/span_evaluations.py +112 -1
- phoenix/version.py +1 -1
- {arize_phoenix-2.3.0.dist-info → arize_phoenix-2.4.1.dist-info}/WHEEL +0 -0
- {arize_phoenix-2.3.0.dist-info → arize_phoenix-2.4.1.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-2.3.0.dist-info → arize_phoenix-2.4.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
phoenix/__init__.py,sha256=EEh0vZGRQS8686h34GQ64OjQoZ7neKYO_iO5j6Oa9Jw,1402
|
|
2
|
-
phoenix/config.py,sha256=
|
|
2
|
+
phoenix/config.py,sha256=DtifiPpPM9y0xqSunzeKCBXFPQHcqQs7Zw7M5ezStKQ,2444
|
|
3
3
|
phoenix/datetime_utils.py,sha256=D955QLrkgrrSdUM6NyqbCeAu2SMsjhR5rHVQEsVUdng,2773
|
|
4
4
|
phoenix/exceptions.py,sha256=igIWGAg3m8jm5YwQDeCY1p8ml_60A7zaGVXJ1yZhY9s,44
|
|
5
5
|
phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
6
6
|
phoenix/services.py,sha256=slL4Uu___QQSKEssgD738-WAld-kzVQnpW92uKLxV4E,4886
|
|
7
|
-
phoenix/version.py,sha256=
|
|
7
|
+
phoenix/version.py,sha256=LgDSW5laOqA_7i2VW0cZ9QumZREigUxs3ZCBzJ1EG0o,22
|
|
8
8
|
phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
|
|
10
10
|
phoenix/core/evals.py,sha256=OrHeYlh804rpcZIXTA6kan2mzSZMfgpphNNQdPMpNoM,7597
|
|
@@ -20,21 +20,21 @@ phoenix/datasets/schema.py,sha256=bF1d2Md6NyqQZuC4Ym5A52f2_IcazkyxGFZ11HPqSg0,66
|
|
|
20
20
|
phoenix/datasets/validation.py,sha256=dZ9lCFUV0EY7HCkQkQBrs-GLAEIZdpOqUxwD5l4dp88,8294
|
|
21
21
|
phoenix/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
phoenix/experimental/evals/__init__.py,sha256=q96YKLMt2GJD9zL8sjugvWx1INfw40Wa7E9OsHo2S4s,1885
|
|
23
|
-
phoenix/experimental/evals/evaluators.py,sha256=
|
|
23
|
+
phoenix/experimental/evals/evaluators.py,sha256=b-nudXEa8A9DF0HuiBQSvMmLvOOxaT-2k3UN8moQ-zE,15852
|
|
24
24
|
phoenix/experimental/evals/retrievals.py,sha256=o3fqrsYbYZjyGj_jWkN_9VQVyXjLkDKDw5Ws7l8bwdI,3828
|
|
25
25
|
phoenix/experimental/evals/functions/__init__.py,sha256=NNd0-_cmIopdV7vm3rspjfgM726qoQJ4DPq_vqbnaxQ,180
|
|
26
|
-
phoenix/experimental/evals/functions/classify.py,sha256=
|
|
26
|
+
phoenix/experimental/evals/functions/classify.py,sha256=pcAJjkSGiE6zusOMvfcSCnNNjabs7O-Cs0C0h-6Y76Y,18985
|
|
27
27
|
phoenix/experimental/evals/functions/executor.py,sha256=bM7PI2rcPukQQzZ2rWqN_-Kfo_a935YJj0bh1Red8Ps,13406
|
|
28
|
-
phoenix/experimental/evals/functions/generate.py,sha256=
|
|
28
|
+
phoenix/experimental/evals/functions/generate.py,sha256=E_yt3Td_LpNWQOSR-jYCxNG7vVfe7fxX9WYeBhApMzc,5412
|
|
29
29
|
phoenix/experimental/evals/functions/processing.py,sha256=F4xtLsulLV4a8CkuLldRddsCim75dSTIShEJUYN6I6w,1823
|
|
30
30
|
phoenix/experimental/evals/models/__init__.py,sha256=j1N7DhiOPbcaemtVBONcQ0miNnGQwEXz4u3P3Vwe6-4,320
|
|
31
31
|
phoenix/experimental/evals/models/anthropic.py,sha256=Tcv8R-vTyY8sLAv1wIHeZdMCBtqhyayqMPJXRDc7blI,6267
|
|
32
|
-
phoenix/experimental/evals/models/base.py,sha256=
|
|
32
|
+
phoenix/experimental/evals/models/base.py,sha256=412CN7R3LcUSRd8dJjz6xwRXZqBBRq5HK5MNP4RVhHA,7785
|
|
33
33
|
phoenix/experimental/evals/models/bedrock.py,sha256=CRPmBuSLc_nRnKKWLHhGMxdWEISIKUJM1tzIlOQ_qWM,7927
|
|
34
34
|
phoenix/experimental/evals/models/litellm.py,sha256=YvlYeAV-gG0IxFoVJ_OuRYwVwQ0LEtYBuWmp-uPGrNU,4368
|
|
35
|
-
phoenix/experimental/evals/models/openai.py,sha256=
|
|
35
|
+
phoenix/experimental/evals/models/openai.py,sha256=EcTkv1DqdrtMNhyfiUTzD5gDbEZVUI_zQyrDgsnuYig,17168
|
|
36
36
|
phoenix/experimental/evals/models/rate_limiters.py,sha256=5GVN0RQKt36Przg3-9jLgocRmyg-tbeO-cdbuLIx89w,10160
|
|
37
|
-
phoenix/experimental/evals/models/vertex.py,sha256=
|
|
37
|
+
phoenix/experimental/evals/models/vertex.py,sha256=LevfIUl85ZpwfKMcpck4Tt057Od89VO1Iw_wJSgFq-k,6417
|
|
38
38
|
phoenix/experimental/evals/models/vertexai.py,sha256=NfBpQq0l7XzP-wDEDsK27IRiQBzA1GXEdfwlAf8leX4,5609
|
|
39
39
|
phoenix/experimental/evals/templates/__init__.py,sha256=GSJSoWJ4jwyoUANniidmWMUtXQhNQYbTJbfFqCvuYuo,1470
|
|
40
40
|
phoenix/experimental/evals/templates/default_templates.py,sha256=RgiSD6xnN8UO5tCHsounk44XqqHuAX1hXQL3Z3Mw99g,21208
|
|
@@ -125,21 +125,21 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
|
|
|
125
125
|
phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
|
|
126
126
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
127
127
|
phoenix/server/static/index.css,sha256=KKGpx4iwF91VGRm0YN-4cn8oC-oIqC6HecoPf0x3ZM8,1885
|
|
128
|
-
phoenix/server/static/index.js,sha256=
|
|
128
|
+
phoenix/server/static/index.js,sha256=fmq95YEmj2bkWIA2x96bf7iV5ZisW1k8EtwAIsy4jD4,3259870
|
|
129
129
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
130
130
|
phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
131
|
phoenix/server/templates/index.html,sha256=_ZVGz2JYDgJjCL2kxSbVjN1qY7drKYerVIXNfmcW30k,1765
|
|
132
132
|
phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
-
phoenix/session/evaluation.py,sha256=
|
|
133
|
+
phoenix/session/evaluation.py,sha256=s5OivScAMSj8qfU4IexpmbyKvcGBj_nt-GP_13_o-iY,4843
|
|
134
134
|
phoenix/session/session.py,sha256=WL0lUGnBp9ZJHOwkLPkf32QvmHOThC5VIERa4SP0o_E,17815
|
|
135
|
-
phoenix/trace/__init__.py,sha256=
|
|
135
|
+
phoenix/trace/__init__.py,sha256=4d_MqzUIFmlY9WWcFeTONJ4xL5mPGoWZaPM2TJ0ZDBQ,266
|
|
136
136
|
phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKyttYdw-ddvPOk,1048
|
|
137
137
|
phoenix/trace/exporter.py,sha256=z3xrGJhIRh7XMy4Q1FkR3KmFZym-GX0XxLTZ6eSnN0Q,4347
|
|
138
138
|
phoenix/trace/fixtures.py,sha256=lFuhPe-di54BmCT-RxS95m3e2-z1YBOo8CxsqYSgDD8,6341
|
|
139
139
|
phoenix/trace/otel.py,sha256=Efc6S0IuvI-NEJ_Mv1VWEzQS94-lR_6nJ3ecTzwmyQ4,13933
|
|
140
140
|
phoenix/trace/schemas.py,sha256=m1wVlYFT6qL3FovD3TtTYsEgN6OHvv52gNdJkoPCmuY,5400
|
|
141
141
|
phoenix/trace/semantic_conventions.py,sha256=u6NG85ZhbreriZr8cqJaddldM_jUcew7JilszY7JUk8,4652
|
|
142
|
-
phoenix/trace/span_evaluations.py,sha256=
|
|
142
|
+
phoenix/trace/span_evaluations.py,sha256=k6bwsa040AihvxTpve33MpkPN3gT8z_kSROpmJwOeCs,12579
|
|
143
143
|
phoenix/trace/span_json_decoder.py,sha256=Xv-0uCsHgwzQb0dqTa7CuuDeXAPaXjQICyCFK3ZQaSs,3089
|
|
144
144
|
phoenix/trace/span_json_encoder.py,sha256=C5y7rkyOcV08oJC5t8TZqVxsKCZMJKad7bBQzAgLoDs,1763
|
|
145
145
|
phoenix/trace/trace_dataset.py,sha256=nFclw-wuY_q7hqpqe7fEVVH67yAku9qJ5EiJ61lz0WM,8691
|
|
@@ -154,7 +154,7 @@ phoenix/trace/langchain/__init__.py,sha256=vAjrmrreetV7L5IL8VH_9efG9VJunJTgT0iKy
|
|
|
154
154
|
phoenix/trace/langchain/instrumentor.py,sha256=HkNKbFNclTYjRXBM8qU4qvZHdyw06J9bhwgE7JnqbNI,1323
|
|
155
155
|
phoenix/trace/langchain/tracer.py,sha256=1Oz3orSDpZX1pZKwtZbeM_f9tiAhQb7Of8ARjRlKVQY,16827
|
|
156
156
|
phoenix/trace/llama_index/__init__.py,sha256=wCcQgD9CG5TA8i-1XsSed4ZzwHTUmqZwegQAV_FqEng,178
|
|
157
|
-
phoenix/trace/llama_index/callback.py,sha256=
|
|
157
|
+
phoenix/trace/llama_index/callback.py,sha256=ARi33dYQtBsY3_h9eE5ZLoM7OXQfYtoZ1--571zILgg,27570
|
|
158
158
|
phoenix/trace/llama_index/debug_callback.py,sha256=SKToD9q_QADSGTJ5lhilqRVKaUnUSRXUvURCzN4by2U,1367
|
|
159
159
|
phoenix/trace/llama_index/streaming.py,sha256=5cTtr8evvcEAB88Xb4ih3WEw0xAF4x5W9PehUX9l5_0,3258
|
|
160
160
|
phoenix/trace/openai/__init__.py,sha256=J3G0uqCxGdksUpaQVHds_Egv2drvh8UEqoLjiQAOveg,79
|
|
@@ -165,8 +165,8 @@ phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQd
|
|
|
165
165
|
phoenix/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
166
166
|
phoenix/utilities/error_handling.py,sha256=7b5rpGFj9EWZ8yrZK1IHvxB89suWk3lggDayUQcvZds,1946
|
|
167
167
|
phoenix/utilities/logging.py,sha256=lDXd6EGaamBNcQxL4vP1au9-i_SXe0OraUDiJOcszSw,222
|
|
168
|
-
arize_phoenix-2.
|
|
169
|
-
arize_phoenix-2.
|
|
170
|
-
arize_phoenix-2.
|
|
171
|
-
arize_phoenix-2.
|
|
172
|
-
arize_phoenix-2.
|
|
168
|
+
arize_phoenix-2.4.1.dist-info/METADATA,sha256=r8ce8SoT9PsPr5nGQxVs8MfGDTmxeJRY1AkyKcpNz_0,26479
|
|
169
|
+
arize_phoenix-2.4.1.dist-info/WHEEL,sha256=mRYSEL3Ih6g5a_CVMIcwiF__0Ae4_gLYh01YFNwiq1k,87
|
|
170
|
+
arize_phoenix-2.4.1.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
171
|
+
arize_phoenix-2.4.1.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
172
|
+
arize_phoenix-2.4.1.dist-info/RECORD,,
|
phoenix/config.py
CHANGED
|
@@ -127,6 +127,9 @@ def llm_classify(
|
|
|
127
127
|
from the entries in the rails argument or "NOT_PARSABLE" if the model's output could
|
|
128
128
|
not be parsed.
|
|
129
129
|
"""
|
|
130
|
+
# clients need to be reloaded to ensure that async evals work properly
|
|
131
|
+
model.reload_client()
|
|
132
|
+
|
|
130
133
|
tqdm_bar_format = get_tqdm_progress_bar_formatter("llm_classify")
|
|
131
134
|
use_openai_function_call = (
|
|
132
135
|
use_function_calling_if_available
|
|
@@ -385,6 +388,9 @@ def run_evals(
|
|
|
385
388
|
List[DataFrame]: A list of dataframes, one for each evaluator, all of
|
|
386
389
|
which have the same number of rows as the input dataframe.
|
|
387
390
|
"""
|
|
391
|
+
# clients need to be reloaded to ensure that async evals work properly
|
|
392
|
+
for evaluator in evaluators:
|
|
393
|
+
evaluator.reload_client()
|
|
388
394
|
|
|
389
395
|
async def _arun_eval(
|
|
390
396
|
payload: RunEvalsPayload,
|
|
@@ -78,6 +78,9 @@ def llm_generate(
|
|
|
78
78
|
represents the generated output
|
|
79
79
|
|
|
80
80
|
"""
|
|
81
|
+
# clients need to be reloaded to ensure that async evals work properly
|
|
82
|
+
model.reload_client()
|
|
83
|
+
|
|
81
84
|
tqdm_bar_format = get_tqdm_progress_bar_formatter("llm_generate")
|
|
82
85
|
output_parser = output_parser or _no_op_parser
|
|
83
86
|
template = normalize_prompt_template(template)
|
|
@@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Any, Dict, List
|
|
|
4
4
|
|
|
5
5
|
from phoenix.experimental.evals.models.base import BaseEvalModel
|
|
6
6
|
from phoenix.experimental.evals.models.rate_limiters import RateLimiter
|
|
7
|
+
from phoenix.utilities.logging import printif
|
|
7
8
|
|
|
8
9
|
if TYPE_CHECKING:
|
|
9
10
|
from tiktoken import Encoding
|
|
@@ -125,8 +126,7 @@ class GeminiModel(BaseEvalModel):
|
|
|
125
126
|
response = self._model.generate_content(
|
|
126
127
|
contents=prompt, generation_config=generation_config, **kwargs
|
|
127
128
|
)
|
|
128
|
-
|
|
129
|
-
return candidate.text
|
|
129
|
+
return self._parse_response_candidates(response)
|
|
130
130
|
|
|
131
131
|
return _completion_with_retry(**kwargs)
|
|
132
132
|
|
|
@@ -149,7 +149,29 @@ class GeminiModel(BaseEvalModel):
|
|
|
149
149
|
response = await self._model.generate_content_async(
|
|
150
150
|
contents=prompt, generation_config=generation_config, **kwargs
|
|
151
151
|
)
|
|
152
|
-
|
|
153
|
-
return candidate.text
|
|
152
|
+
return self._parse_response_candidates(response)
|
|
154
153
|
|
|
155
154
|
return await _completion_with_retry(**kwargs)
|
|
155
|
+
|
|
156
|
+
def _parse_response_candidates(self, response: Any) -> Any:
|
|
157
|
+
if hasattr(response, "candidates"):
|
|
158
|
+
if isinstance(response.candidates, list) and len(response.candidates) > 0:
|
|
159
|
+
try:
|
|
160
|
+
candidate = response.candidates[0].text
|
|
161
|
+
except ValueError:
|
|
162
|
+
printif(
|
|
163
|
+
self._verbose, "The 'candidates' object does not have a 'text' attribute."
|
|
164
|
+
)
|
|
165
|
+
printif(self._verbose, response.candidates[0])
|
|
166
|
+
candidate = ""
|
|
167
|
+
else:
|
|
168
|
+
printif(
|
|
169
|
+
self._verbose,
|
|
170
|
+
"The 'candidates' attribute of 'response' is either not a list or is empty.",
|
|
171
|
+
)
|
|
172
|
+
printif(self._verbose, response)
|
|
173
|
+
candidate = ""
|
|
174
|
+
else:
|
|
175
|
+
printif(self._verbose, "The 'response' object does not have a 'candidates' attribute.")
|
|
176
|
+
candidate = ""
|
|
177
|
+
return candidate
|