azure-ai-evaluation 1.3.0__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.
Potentially problematic release.
This version of azure-ai-evaluation might be problematic. Click here for more details.
- azure/ai/evaluation/__init__.py +27 -1
- azure/ai/evaluation/_azure/_models.py +6 -6
- azure/ai/evaluation/_common/constants.py +6 -2
- azure/ai/evaluation/_common/rai_service.py +39 -5
- azure/ai/evaluation/_common/raiclient/__init__.py +34 -0
- azure/ai/evaluation/_common/raiclient/_client.py +128 -0
- azure/ai/evaluation/_common/raiclient/_configuration.py +87 -0
- azure/ai/evaluation/_common/raiclient/_model_base.py +1235 -0
- azure/ai/evaluation/_common/raiclient/_patch.py +20 -0
- azure/ai/evaluation/_common/raiclient/_serialization.py +2050 -0
- azure/ai/evaluation/_common/raiclient/_version.py +9 -0
- azure/ai/evaluation/_common/raiclient/aio/__init__.py +29 -0
- azure/ai/evaluation/_common/raiclient/aio/_client.py +130 -0
- azure/ai/evaluation/_common/raiclient/aio/_configuration.py +87 -0
- azure/ai/evaluation/_common/raiclient/aio/_patch.py +20 -0
- azure/ai/evaluation/_common/raiclient/aio/operations/__init__.py +25 -0
- azure/ai/evaluation/_common/raiclient/aio/operations/_operations.py +981 -0
- azure/ai/evaluation/_common/raiclient/aio/operations/_patch.py +20 -0
- azure/ai/evaluation/_common/raiclient/models/__init__.py +60 -0
- azure/ai/evaluation/_common/raiclient/models/_enums.py +18 -0
- azure/ai/evaluation/_common/raiclient/models/_models.py +651 -0
- azure/ai/evaluation/_common/raiclient/models/_patch.py +20 -0
- azure/ai/evaluation/_common/raiclient/operations/__init__.py +25 -0
- azure/ai/evaluation/_common/raiclient/operations/_operations.py +1225 -0
- azure/ai/evaluation/_common/raiclient/operations/_patch.py +20 -0
- azure/ai/evaluation/_common/raiclient/py.typed +1 -0
- azure/ai/evaluation/_common/utils.py +23 -3
- azure/ai/evaluation/_constants.py +7 -0
- azure/ai/evaluation/_converters/__init__.py +3 -0
- azure/ai/evaluation/_converters/_ai_services.py +804 -0
- azure/ai/evaluation/_converters/_models.py +302 -0
- azure/ai/evaluation/_evaluate/_batch_run/__init__.py +10 -3
- azure/ai/evaluation/_evaluate/_batch_run/_run_submitter_client.py +104 -0
- azure/ai/evaluation/_evaluate/_batch_run/batch_clients.py +82 -0
- azure/ai/evaluation/_evaluate/_batch_run/code_client.py +18 -12
- azure/ai/evaluation/_evaluate/_batch_run/eval_run_context.py +9 -4
- azure/ai/evaluation/_evaluate/_batch_run/proxy_client.py +42 -22
- azure/ai/evaluation/_evaluate/_batch_run/target_run_context.py +1 -1
- azure/ai/evaluation/_evaluate/_eval_run.py +2 -2
- azure/ai/evaluation/_evaluate/_evaluate.py +109 -64
- azure/ai/evaluation/_evaluate/_telemetry/__init__.py +5 -89
- azure/ai/evaluation/_evaluate/_utils.py +3 -3
- azure/ai/evaluation/_evaluators/_bleu/_bleu.py +23 -3
- azure/ai/evaluation/_evaluators/_code_vulnerability/__init__.py +5 -0
- azure/ai/evaluation/_evaluators/_code_vulnerability/_code_vulnerability.py +120 -0
- azure/ai/evaluation/_evaluators/_coherence/_coherence.py +21 -2
- azure/ai/evaluation/_evaluators/_common/_base_eval.py +44 -4
- azure/ai/evaluation/_evaluators/_common/_base_multi_eval.py +4 -2
- azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py +44 -5
- azure/ai/evaluation/_evaluators/_common/_base_rai_svc_eval.py +16 -4
- azure/ai/evaluation/_evaluators/_content_safety/_content_safety.py +42 -5
- azure/ai/evaluation/_evaluators/_content_safety/_hate_unfairness.py +15 -0
- azure/ai/evaluation/_evaluators/_content_safety/_self_harm.py +15 -0
- azure/ai/evaluation/_evaluators/_content_safety/_sexual.py +15 -0
- azure/ai/evaluation/_evaluators/_content_safety/_violence.py +15 -0
- azure/ai/evaluation/_evaluators/_f1_score/_f1_score.py +28 -4
- azure/ai/evaluation/_evaluators/_fluency/_fluency.py +21 -2
- azure/ai/evaluation/_evaluators/_gleu/_gleu.py +26 -3
- azure/ai/evaluation/_evaluators/_groundedness/_groundedness.py +22 -4
- azure/ai/evaluation/_evaluators/_intent_resolution/__init__.py +7 -0
- azure/ai/evaluation/_evaluators/_intent_resolution/_intent_resolution.py +152 -0
- azure/ai/evaluation/_evaluators/_intent_resolution/intent_resolution.prompty +161 -0
- azure/ai/evaluation/_evaluators/_meteor/_meteor.py +26 -3
- azure/ai/evaluation/_evaluators/_qa/_qa.py +51 -7
- azure/ai/evaluation/_evaluators/_relevance/_relevance.py +26 -2
- azure/ai/evaluation/_evaluators/_response_completeness/__init__.py +7 -0
- azure/ai/evaluation/_evaluators/_response_completeness/_response_completeness.py +158 -0
- azure/ai/evaluation/_evaluators/_response_completeness/response_completeness.prompty +99 -0
- azure/ai/evaluation/_evaluators/_retrieval/_retrieval.py +21 -2
- azure/ai/evaluation/_evaluators/_rouge/_rouge.py +113 -4
- azure/ai/evaluation/_evaluators/_service_groundedness/_service_groundedness.py +23 -3
- azure/ai/evaluation/_evaluators/_similarity/_similarity.py +24 -5
- azure/ai/evaluation/_evaluators/_task_adherence/__init__.py +7 -0
- azure/ai/evaluation/_evaluators/_task_adherence/_task_adherence.py +148 -0
- azure/ai/evaluation/_evaluators/_task_adherence/task_adherence.prompty +117 -0
- azure/ai/evaluation/_evaluators/_tool_call_accuracy/__init__.py +9 -0
- azure/ai/evaluation/_evaluators/_tool_call_accuracy/_tool_call_accuracy.py +292 -0
- azure/ai/evaluation/_evaluators/_tool_call_accuracy/tool_call_accuracy.prompty +71 -0
- azure/ai/evaluation/_evaluators/_ungrounded_attributes/__init__.py +5 -0
- azure/ai/evaluation/_evaluators/_ungrounded_attributes/_ungrounded_attributes.py +103 -0
- azure/ai/evaluation/_evaluators/_xpia/xpia.py +2 -0
- azure/ai/evaluation/_exceptions.py +5 -0
- azure/ai/evaluation/_legacy/__init__.py +3 -0
- azure/ai/evaluation/_legacy/_adapters/__init__.py +21 -0
- azure/ai/evaluation/_legacy/_adapters/_configuration.py +45 -0
- azure/ai/evaluation/_legacy/_adapters/_constants.py +10 -0
- azure/ai/evaluation/_legacy/_adapters/_errors.py +29 -0
- azure/ai/evaluation/_legacy/_adapters/_flows.py +28 -0
- azure/ai/evaluation/_legacy/_adapters/_service.py +16 -0
- azure/ai/evaluation/_legacy/_adapters/client.py +51 -0
- azure/ai/evaluation/_legacy/_adapters/entities.py +26 -0
- azure/ai/evaluation/_legacy/_adapters/tracing.py +28 -0
- azure/ai/evaluation/_legacy/_adapters/types.py +15 -0
- azure/ai/evaluation/_legacy/_adapters/utils.py +31 -0
- azure/ai/evaluation/_legacy/_batch_engine/__init__.py +9 -0
- azure/ai/evaluation/_legacy/_batch_engine/_config.py +45 -0
- azure/ai/evaluation/_legacy/_batch_engine/_engine.py +368 -0
- azure/ai/evaluation/_legacy/_batch_engine/_exceptions.py +88 -0
- azure/ai/evaluation/_legacy/_batch_engine/_logging.py +292 -0
- azure/ai/evaluation/_legacy/_batch_engine/_openai_injector.py +23 -0
- azure/ai/evaluation/_legacy/_batch_engine/_result.py +99 -0
- azure/ai/evaluation/_legacy/_batch_engine/_run.py +121 -0
- azure/ai/evaluation/_legacy/_batch_engine/_run_storage.py +128 -0
- azure/ai/evaluation/_legacy/_batch_engine/_run_submitter.py +217 -0
- azure/ai/evaluation/_legacy/_batch_engine/_status.py +25 -0
- azure/ai/evaluation/_legacy/_batch_engine/_trace.py +105 -0
- azure/ai/evaluation/_legacy/_batch_engine/_utils.py +82 -0
- azure/ai/evaluation/_legacy/_batch_engine/_utils_deprecated.py +131 -0
- azure/ai/evaluation/_legacy/prompty/__init__.py +36 -0
- azure/ai/evaluation/_legacy/prompty/_connection.py +182 -0
- azure/ai/evaluation/_legacy/prompty/_exceptions.py +59 -0
- azure/ai/evaluation/_legacy/prompty/_prompty.py +313 -0
- azure/ai/evaluation/_legacy/prompty/_utils.py +545 -0
- azure/ai/evaluation/_legacy/prompty/_yaml_utils.py +99 -0
- azure/ai/evaluation/_safety_evaluation/__init__.py +1 -1
- azure/ai/evaluation/_safety_evaluation/_generated_rai_client.py +0 -0
- azure/ai/evaluation/_safety_evaluation/_safety_evaluation.py +251 -150
- azure/ai/evaluation/_version.py +1 -1
- azure/ai/evaluation/red_team/__init__.py +19 -0
- azure/ai/evaluation/red_team/_attack_objective_generator.py +195 -0
- azure/ai/evaluation/red_team/_attack_strategy.py +45 -0
- azure/ai/evaluation/red_team/_callback_chat_target.py +74 -0
- azure/ai/evaluation/red_team/_default_converter.py +21 -0
- azure/ai/evaluation/red_team/_red_team.py +1887 -0
- azure/ai/evaluation/red_team/_red_team_result.py +382 -0
- azure/ai/evaluation/red_team/_utils/__init__.py +3 -0
- azure/ai/evaluation/red_team/_utils/constants.py +65 -0
- azure/ai/evaluation/red_team/_utils/formatting_utils.py +165 -0
- azure/ai/evaluation/red_team/_utils/logging_utils.py +139 -0
- azure/ai/evaluation/red_team/_utils/strategy_utils.py +192 -0
- azure/ai/evaluation/simulator/_adversarial_scenario.py +3 -1
- azure/ai/evaluation/simulator/_adversarial_simulator.py +54 -27
- azure/ai/evaluation/simulator/_model_tools/_generated_rai_client.py +145 -0
- azure/ai/evaluation/simulator/_model_tools/_rai_client.py +71 -1
- azure/ai/evaluation/simulator/_simulator.py +1 -1
- {azure_ai_evaluation-1.3.0.dist-info → azure_ai_evaluation-1.5.0.dist-info}/METADATA +80 -15
- azure_ai_evaluation-1.5.0.dist-info/RECORD +207 -0
- {azure_ai_evaluation-1.3.0.dist-info → azure_ai_evaluation-1.5.0.dist-info}/WHEEL +1 -1
- azure/ai/evaluation/simulator/_tracing.py +0 -89
- azure_ai_evaluation-1.3.0.dist-info/RECORD +0 -119
- {azure_ai_evaluation-1.3.0.dist-info → azure_ai_evaluation-1.5.0.dist-info}/NOTICE.txt +0 -0
- {azure_ai_evaluation-1.3.0.dist-info → azure_ai_evaluation-1.5.0.dist-info}/top_level.txt +0 -0
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
# ---------------------------------------------------------
|
|
4
4
|
import os
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any, Dict, List
|
|
6
6
|
from urllib.parse import urljoin, urlparse
|
|
7
7
|
import base64
|
|
8
|
+
import json
|
|
8
9
|
|
|
9
10
|
from azure.ai.evaluation._exceptions import ErrorBlame, ErrorCategory, ErrorTarget, EvaluationException
|
|
10
11
|
from azure.ai.evaluation._http_utils import AsyncHttpPipeline, get_async_http_client, get_http_client
|
|
@@ -62,6 +63,7 @@ class RAIClient: # pylint: disable=client-accepts-api-version-keyword
|
|
|
62
63
|
self.jailbreaks_json_endpoint = urljoin(self.api_url, "simulation/jailbreak")
|
|
63
64
|
self.simulation_submit_endpoint = urljoin(self.api_url, "simulation/chat/completions/submit")
|
|
64
65
|
self.xpia_jailbreaks_json_endpoint = urljoin(self.api_url, "simulation/jailbreak/xpia")
|
|
66
|
+
self.attack_objectives_endpoint = urljoin(self.api_url, "simulation/attackobjectives")
|
|
65
67
|
|
|
66
68
|
def _get_service_discovery_url(self):
|
|
67
69
|
bearer_token = self.token_manager.get_token()
|
|
@@ -206,3 +208,71 @@ class RAIClient: # pylint: disable=client-accepts-api-version-keyword
|
|
|
206
208
|
category=ErrorCategory.UNKNOWN,
|
|
207
209
|
blame=ErrorBlame.USER_ERROR,
|
|
208
210
|
)
|
|
211
|
+
|
|
212
|
+
async def get_attack_objectives(self, risk_categories: List[str], application_scenario: str = None, strategy: str = None) -> Any:
|
|
213
|
+
"""Get the attack objectives based on risk categories and application scenario
|
|
214
|
+
|
|
215
|
+
:param risk_categories: List of risk categories to generate attack objectives for
|
|
216
|
+
:type risk_categories: List[str]
|
|
217
|
+
:param application_scenario: Optional description of the application scenario for context
|
|
218
|
+
:type application_scenario: str
|
|
219
|
+
:param strategy: Optional attack strategy to get specific objectives for
|
|
220
|
+
:type strategy: str
|
|
221
|
+
:return: The attack objectives
|
|
222
|
+
:rtype: Any
|
|
223
|
+
"""
|
|
224
|
+
# Create query parameters for the request
|
|
225
|
+
if application_scenario:
|
|
226
|
+
raise NotImplementedError("Application scenario is not supported yet")
|
|
227
|
+
|
|
228
|
+
params = {
|
|
229
|
+
"api-version": "2022-11-01-preview",
|
|
230
|
+
"riskTypes": ",".join(risk_categories),
|
|
231
|
+
"lang": "en" # Default to English
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
# Add strategy parameter if provided
|
|
235
|
+
if strategy:
|
|
236
|
+
params["strategy"] = strategy
|
|
237
|
+
|
|
238
|
+
try:
|
|
239
|
+
# Make the request using the existing get method
|
|
240
|
+
result = await self.get(self.attack_objectives_endpoint)
|
|
241
|
+
# from collections import defaultdict
|
|
242
|
+
# counts_by_risk = defaultdict(int)
|
|
243
|
+
# for item in result:
|
|
244
|
+
# target_harms = item.get("Metadata", {}).get("TargetHarms", [])
|
|
245
|
+
# if not target_harms:
|
|
246
|
+
# # No risk type specified
|
|
247
|
+
# counts_by_risk["empty"] += 1
|
|
248
|
+
# else:
|
|
249
|
+
# for harm in target_harms:
|
|
250
|
+
# # Use "empty" if the risk type field is missing
|
|
251
|
+
# risk_type = harm.get("RiskType", "") or "empty"
|
|
252
|
+
# counts_by_risk[risk_type] += 1
|
|
253
|
+
return result
|
|
254
|
+
except Exception:
|
|
255
|
+
# If the API fails or isn't implemented yet, return a mock response
|
|
256
|
+
# This is temporary until the API endpoint is fully implemented
|
|
257
|
+
return [{
|
|
258
|
+
"metadata": {
|
|
259
|
+
"lang": "en",
|
|
260
|
+
"target_harms": [
|
|
261
|
+
{
|
|
262
|
+
"risk-type": "violence",
|
|
263
|
+
"risk-subtype": ""
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
"messages": [
|
|
268
|
+
{
|
|
269
|
+
"role": "user",
|
|
270
|
+
"content": "Risky content"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"modality": "text",
|
|
274
|
+
"source": [
|
|
275
|
+
"source"
|
|
276
|
+
]
|
|
277
|
+
}]
|
|
278
|
+
|
|
@@ -11,7 +11,7 @@ import re
|
|
|
11
11
|
import warnings
|
|
12
12
|
from typing import Any, Callable, Dict, List, Optional, Union, Tuple
|
|
13
13
|
|
|
14
|
-
from
|
|
14
|
+
from azure.ai.evaluation._legacy._adapters._flows import AsyncPrompty
|
|
15
15
|
from tqdm import tqdm
|
|
16
16
|
|
|
17
17
|
from azure.ai.evaluation._common._experimental import experimental
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: azure-ai-evaluation
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Microsoft Azure Evaluation Library for Python
|
|
5
5
|
Home-page: https://github.com/Azure/azure-sdk-for-python
|
|
6
6
|
Author: Microsoft Corporation
|
|
@@ -21,13 +21,20 @@ Classifier: Operating System :: OS Independent
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: NOTICE.txt
|
|
24
|
-
Requires-Dist: promptflow-devkit
|
|
25
|
-
Requires-Dist: promptflow-core
|
|
26
|
-
Requires-Dist: pyjwt
|
|
27
|
-
Requires-Dist: azure-identity
|
|
28
|
-
Requires-Dist: azure-core
|
|
29
|
-
Requires-Dist: nltk
|
|
30
|
-
Requires-Dist: azure-storage-blob
|
|
24
|
+
Requires-Dist: promptflow-devkit>=1.17.1
|
|
25
|
+
Requires-Dist: promptflow-core>=1.17.1
|
|
26
|
+
Requires-Dist: pyjwt>=2.8.0
|
|
27
|
+
Requires-Dist: azure-identity>=1.16.0
|
|
28
|
+
Requires-Dist: azure-core>=1.30.2
|
|
29
|
+
Requires-Dist: nltk>=3.9.1
|
|
30
|
+
Requires-Dist: azure-storage-blob>=12.10.0
|
|
31
|
+
Requires-Dist: httpx>=0.25.1
|
|
32
|
+
Requires-Dist: pandas<3.0.0,>=2.1.2
|
|
33
|
+
Requires-Dist: openai>=1.40.0
|
|
34
|
+
Requires-Dist: ruamel.yaml<1.0.0,>=0.17.10
|
|
35
|
+
Requires-Dist: msrest>=0.6.21
|
|
36
|
+
Provides-Extra: redteam
|
|
37
|
+
Requires-Dist: pyrit==0.8.1; extra == "redteam"
|
|
31
38
|
|
|
32
39
|
# Azure AI Evaluation client library for Python
|
|
33
40
|
|
|
@@ -54,7 +61,7 @@ Azure AI SDK provides following to evaluate Generative AI Applications:
|
|
|
54
61
|
### Prerequisites
|
|
55
62
|
|
|
56
63
|
- Python 3.9 or later is required to use this package.
|
|
57
|
-
- [Optional] You must have [Azure AI Project][ai_project] or [Azure Open AI][azure_openai] to use AI-assisted evaluators
|
|
64
|
+
- [Optional] You must have [Azure AI Foundry Project][ai_project] or [Azure Open AI][azure_openai] to use AI-assisted evaluators
|
|
58
65
|
|
|
59
66
|
### Install the package
|
|
60
67
|
|
|
@@ -63,10 +70,6 @@ Install the Azure AI Evaluation SDK for Python with [pip][pip_link]:
|
|
|
63
70
|
```bash
|
|
64
71
|
pip install azure-ai-evaluation
|
|
65
72
|
```
|
|
66
|
-
If you want to track results in [AI Studio][ai_studio], install `remote` extra:
|
|
67
|
-
```python
|
|
68
|
-
pip install azure-ai-evaluation[remote]
|
|
69
|
-
```
|
|
70
73
|
|
|
71
74
|
## Key concepts
|
|
72
75
|
|
|
@@ -175,9 +178,9 @@ result = evaluate(
|
|
|
175
178
|
}
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
|
-
# Optionally provide your AI
|
|
181
|
+
# Optionally provide your AI Foundry project information to track your evaluation results in your Azure AI Foundry project
|
|
179
182
|
azure_ai_project = azure_ai_project,
|
|
180
|
-
# Optionally provide an output path to dump a json of metric summary, row level data and metric and
|
|
183
|
+
# Optionally provide an output path to dump a json of metric summary, row level data and metric and AI Foundry URL
|
|
181
184
|
output_path="./evaluation_results.json"
|
|
182
185
|
)
|
|
183
186
|
```
|
|
@@ -375,8 +378,70 @@ This project has adopted the [Microsoft Open Source Code of Conduct][code_of_con
|
|
|
375
378
|
[simulate_with_conversation_starter]: https://github.com/Azure-Samples/azureai-samples/tree/main/scenarios/evaluate/Simulators/Simulate_Context-Relevant_Data/Simulate_From_Conversation_Starter
|
|
376
379
|
[adversarial_jailbreak]: https://learn.microsoft.com/azure/ai-studio/how-to/develop/simulator-interaction-data#simulating-jailbreak-attacks
|
|
377
380
|
|
|
381
|
+
|
|
378
382
|
# Release History
|
|
379
383
|
|
|
384
|
+
## 1.5.0 (2025-04-04)
|
|
385
|
+
|
|
386
|
+
### Features Added
|
|
387
|
+
|
|
388
|
+
- New `RedTeam` agent functionality to assess the safety and resilience of AI systems against adversarial prompt attacks
|
|
389
|
+
|
|
390
|
+
## 1.4.0 (2025-03-27)
|
|
391
|
+
|
|
392
|
+
### Features Added
|
|
393
|
+
- Enhanced binary evaluation results with customizable thresholds
|
|
394
|
+
- Added threshold support for QA and ContentSafety evaluators
|
|
395
|
+
- Evaluation results now include both the score and threshold values
|
|
396
|
+
- Configurable threshold parameter allows custom binary classification boundaries
|
|
397
|
+
- Default thresholds provided for backward compatibility
|
|
398
|
+
- Quality evaluators use "higher is better" scoring (score ≥ threshold is positive)
|
|
399
|
+
- Content safety evaluators use "lower is better" scoring (score ≤ threshold is positive)
|
|
400
|
+
- New Built-in evaluator called CodeVulnerabilityEvaluator is added.
|
|
401
|
+
- It provides capabilities to identify the following code vulnerabilities.
|
|
402
|
+
- path-injection
|
|
403
|
+
- sql-injection
|
|
404
|
+
- code-injection
|
|
405
|
+
- stack-trace-exposure
|
|
406
|
+
- incomplete-url-substring-sanitization
|
|
407
|
+
- flask-debug
|
|
408
|
+
- clear-text-logging-sensitive-data
|
|
409
|
+
- incomplete-hostname-regexp
|
|
410
|
+
- server-side-unvalidated-url-redirection
|
|
411
|
+
- weak-cryptographic-algorithm
|
|
412
|
+
- full-ssrf
|
|
413
|
+
- bind-socket-all-network-interfaces
|
|
414
|
+
- client-side-unvalidated-url-redirection
|
|
415
|
+
- likely-bugs
|
|
416
|
+
- reflected-xss
|
|
417
|
+
- clear-text-storage-sensitive-data
|
|
418
|
+
- tarslip
|
|
419
|
+
- hardcoded-credentials
|
|
420
|
+
- insecure-randomness
|
|
421
|
+
- It also supports multiple coding languages such as (Python, Java, C++, C#, Go, Javascript, SQL)
|
|
422
|
+
|
|
423
|
+
- New Built-in evaluator called UngroundedAttributesEvaluator is added.
|
|
424
|
+
- It evaluates ungrounded inference of human attributes for a given query, response, and context for a single-turn evaluation only,
|
|
425
|
+
- where query represents the user query and response represents the AI system response given the provided context.
|
|
426
|
+
|
|
427
|
+
- Ungrounded Attributes checks for whether a response is first, ungrounded, and checks if it contains information about protected class
|
|
428
|
+
- or emotional state of a person.
|
|
429
|
+
|
|
430
|
+
- It identifies the following attributes:
|
|
431
|
+
|
|
432
|
+
- emotional_state
|
|
433
|
+
- protected_class
|
|
434
|
+
- groundedness
|
|
435
|
+
- New Built-in evaluators for Agent Evaluation (Preview)
|
|
436
|
+
- IntentResolutionEvaluator - Evaluates the intent resolution of an agent's response to a user query.
|
|
437
|
+
- ResponseCompletenessEvaluator - Evaluates the response completeness of an agent's response to a user query.
|
|
438
|
+
- TaskAdherenceEvaluator - Evaluates the task adherence of an agent's response to a user query.
|
|
439
|
+
- ToolCallAccuracyEvaluator - Evaluates the accuracy of tool calls made by an agent in response to a user query.
|
|
440
|
+
|
|
441
|
+
### Bugs Fixed
|
|
442
|
+
- Fixed error in `GroundednessProEvaluator` when handling non-numeric values like "n/a" returned from the service.
|
|
443
|
+
- Uploading local evaluation results from `evaluate` with the same run name will no longer result in each online run sharing (and bashing) result files.
|
|
444
|
+
|
|
380
445
|
## 1.3.0 (2025-02-28)
|
|
381
446
|
|
|
382
447
|
### Breaking Changes
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
azure/ai/evaluation/__init__.py,sha256=kAtHb6ouzfFDk8KOVaLdraayQCJmnj6SSM-YZ3sAy4Y,3417
|
|
2
|
+
azure/ai/evaluation/_constants.py,sha256=mrIKAUZvISRcaVpv1fAzIUDbwWS2bFlzCAMp1eB5jsY,3052
|
|
3
|
+
azure/ai/evaluation/_exceptions.py,sha256=v70aKkYfXqCj0FDDXsC41OrDjrfnXzgXUC6G07wwOdE,5344
|
|
4
|
+
azure/ai/evaluation/_http_utils.py,sha256=1bGce6pKAL-vmaUGRPxVX7DVO05XVQ8YPIwIQ3q7mfA,17221
|
|
5
|
+
azure/ai/evaluation/_model_configurations.py,sha256=MNN6cQlz7P9vNfHmfEKsUcly3j1FEOEFsA8WV7GPuKQ,4043
|
|
6
|
+
azure/ai/evaluation/_user_agent.py,sha256=O2y-QPBAcw7w7qQ6M2aRPC3Vy3TKd789u5lcs2yuFaI,290
|
|
7
|
+
azure/ai/evaluation/_version.py,sha256=YpsqP-vu09qp1HVH74yl4WSsHSEc4bGuEPdb2hj15Z8,229
|
|
8
|
+
azure/ai/evaluation/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
azure/ai/evaluation/_azure/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
10
|
+
azure/ai/evaluation/_azure/_clients.py,sha256=N1V-LyQkItPuoKl0aieypFPdGSRSld9lQqH1x-n3L7U,9119
|
|
11
|
+
azure/ai/evaluation/_azure/_models.py,sha256=Vxcg7WfpAyxLQ-EesZzLGqopguV9Oohfjf-vWKTOA-8,12527
|
|
12
|
+
azure/ai/evaluation/_azure/_token_manager.py,sha256=1NZHwgEc9BMXWPz5Ear_J5-oYjouD77crLHHqNLldEw,5193
|
|
13
|
+
azure/ai/evaluation/_common/__init__.py,sha256=LHTkf6dMLLxikrGNgbUuREBVQcs4ORHR6Eryo4bm9M8,586
|
|
14
|
+
azure/ai/evaluation/_common/_experimental.py,sha256=GVtSn9r1CeR_yEa578dJVNDJ3P24eqe8WYdH7llbiQY,5694
|
|
15
|
+
azure/ai/evaluation/_common/constants.py,sha256=7gwcSbcJr-KHA-7Llmpuo4kap_l3X5-emAn2LMb_wk4,2281
|
|
16
|
+
azure/ai/evaluation/_common/math.py,sha256=d4bwWe35_RWDIZNcbV1BTBbHNx2QHQ4-I3EofDyyNE0,2863
|
|
17
|
+
azure/ai/evaluation/_common/rai_service.py,sha256=7izMNrZxLDMjbL5gAWmU9aUnFHv7Yb0OQU-A-1XnVcA,28304
|
|
18
|
+
azure/ai/evaluation/_common/utils.py,sha256=SqZfm_DXhZC6JBVvdtzMEuLott2B6uWNVFz-rVSSSiA,18392
|
|
19
|
+
azure/ai/evaluation/_common/raiclient/__init__.py,sha256=SaoPfbEPhdoXpIKqOPmRVNyYky1mW5c7UobHt08ksAI,1153
|
|
20
|
+
azure/ai/evaluation/_common/raiclient/_client.py,sha256=ZnFRcpZ0UD3MeFWnJ44AbkbUqPHsvGM502ra28pm_No,5812
|
|
21
|
+
azure/ai/evaluation/_common/raiclient/_configuration.py,sha256=exABHzDcOl5295p5LnWxL82x21z6_ruyBbigW3WoQRA,4246
|
|
22
|
+
azure/ai/evaluation/_common/raiclient/_model_base.py,sha256=loH1BeKpp3UeO6hFvAzcNbT2hhotWQIDu3JRQgQZV_M,45135
|
|
23
|
+
azure/ai/evaluation/_common/raiclient/_patch.py,sha256=P7PMm3Gbjlk56lI6B_Ra43hSW5qGMEmN3cNYGH5uZ3s,674
|
|
24
|
+
azure/ai/evaluation/_common/raiclient/_serialization.py,sha256=vN_jYB0jHUw2hVIWB6M9n6_0AvFw9mFa3ndcz2y6gaQ,82802
|
|
25
|
+
azure/ai/evaluation/_common/raiclient/_version.py,sha256=O4QAKqUqd5NYgBOMaio5NlyJfhohrHXcqV8Xdbpuh50,486
|
|
26
|
+
azure/ai/evaluation/_common/raiclient/py.typed,sha256=dcrsqJrcYfTX-ckLFJMTaj6mD8aDe2u0tkQG-ZYxnEg,26
|
|
27
|
+
azure/ai/evaluation/_common/raiclient/aio/__init__.py,sha256=hq21DCvcidiGXghKHYHLNSfEMNjbj43jyVssEV6fF3M,1001
|
|
28
|
+
azure/ai/evaluation/_common/raiclient/aio/_client.py,sha256=D8Qx3tiOEgbnv1M8nU6_rJB8QG0JdY7rwwTcLLgv36w,5961
|
|
29
|
+
azure/ai/evaluation/_common/raiclient/aio/_configuration.py,sha256=t3IUIutMUucIgvn7LTDzpG4adroh5ZfA99ImZFhy26E,4289
|
|
30
|
+
azure/ai/evaluation/_common/raiclient/aio/_patch.py,sha256=P7PMm3Gbjlk56lI6B_Ra43hSW5qGMEmN3cNYGH5uZ3s,674
|
|
31
|
+
azure/ai/evaluation/_common/raiclient/aio/operations/__init__.py,sha256=Ah41eszCE4ZDISukKSdOWQQcZGv0TbDduaT35Q8PQz8,925
|
|
32
|
+
azure/ai/evaluation/_common/raiclient/aio/operations/_operations.py,sha256=mP03I6IEmDgfXWE_StqGaLRbDYhNOWHsPuOi0ZEPw6A,41385
|
|
33
|
+
azure/ai/evaluation/_common/raiclient/aio/operations/_patch.py,sha256=P7PMm3Gbjlk56lI6B_Ra43hSW5qGMEmN3cNYGH5uZ3s,674
|
|
34
|
+
azure/ai/evaluation/_common/raiclient/models/__init__.py,sha256=SPbkbuJRkjd2l52gXR-p9g67p7ix1L6q3td0hvrd86I,1531
|
|
35
|
+
azure/ai/evaluation/_common/raiclient/models/_enums.py,sha256=Dc574fkQb8GiXRzemFO9EQc23W4YjvziykDj-baSatA,747
|
|
36
|
+
azure/ai/evaluation/_common/raiclient/models/_models.py,sha256=oUolMwRT4QIiQCwI-nEJhxvlX_7o9BJLCMu6v5tkeCM,20665
|
|
37
|
+
azure/ai/evaluation/_common/raiclient/models/_patch.py,sha256=P7PMm3Gbjlk56lI6B_Ra43hSW5qGMEmN3cNYGH5uZ3s,674
|
|
38
|
+
azure/ai/evaluation/_common/raiclient/operations/__init__.py,sha256=Ah41eszCE4ZDISukKSdOWQQcZGv0TbDduaT35Q8PQz8,925
|
|
39
|
+
azure/ai/evaluation/_common/raiclient/operations/_operations.py,sha256=_-B8zU6GQ4RciGvBcAoVNlfGdNXaqf2XsS3EP-kYu10,50944
|
|
40
|
+
azure/ai/evaluation/_common/raiclient/operations/_patch.py,sha256=P7PMm3Gbjlk56lI6B_Ra43hSW5qGMEmN3cNYGH5uZ3s,674
|
|
41
|
+
azure/ai/evaluation/_converters/__init__.py,sha256=UwArlb5cGLN4pRUm8nG7mXsmxhgdIving2OslYhQDAg,179
|
|
42
|
+
azure/ai/evaluation/_converters/_ai_services.py,sha256=U2s-KdCAv4ja-Xo0nGUhjIQEoyg9QmSj2Dqt73uufUo,37091
|
|
43
|
+
azure/ai/evaluation/_converters/_models.py,sha256=LlrB7Vj_uW3-Ng06b3EHahRXf690W4j2XfYihS7dejo,11029
|
|
44
|
+
azure/ai/evaluation/_evaluate/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
45
|
+
azure/ai/evaluation/_evaluate/_eval_run.py,sha256=Bu_7uV8-reRllUChXZDjILpXX8ym57VIUaKvUNhono0,21985
|
|
46
|
+
azure/ai/evaluation/_evaluate/_evaluate.py,sha256=QO4H8-G53qif8NnsYFEULmr3eWQ4sudpf6gOzhnaNDo,40647
|
|
47
|
+
azure/ai/evaluation/_evaluate/_utils.py,sha256=Cn6BpKzRkIXeywB1zbYMvEBvJXWIIlvPVy_2z8nOfFE,14289
|
|
48
|
+
azure/ai/evaluation/_evaluate/_batch_run/__init__.py,sha256=cPLi_MJ_pCp8eKBxJbiSoxgTnN3nDLuaP57dMkKuyhg,552
|
|
49
|
+
azure/ai/evaluation/_evaluate/_batch_run/_run_submitter_client.py,sha256=fbDkx_qhYlBSGrxoRLPFiNccgd3pToDnLRmBb0QWzmM,3941
|
|
50
|
+
azure/ai/evaluation/_evaluate/_batch_run/batch_clients.py,sha256=dTZYdQGweGzEN6OHtn1jOmGG767AJ7RJwfHoCCeRddg,2761
|
|
51
|
+
azure/ai/evaluation/_evaluate/_batch_run/code_client.py,sha256=n4JxDAFNnetfpAj4FyhtZms3kuGmDWXCBOogqeO4F98,8607
|
|
52
|
+
azure/ai/evaluation/_evaluate/_batch_run/eval_run_context.py,sha256=NXlXHyQ9TFIcXdozmMqc3CmOsyzh2N9EexprBhQwoTQ,3737
|
|
53
|
+
azure/ai/evaluation/_evaluate/_batch_run/proxy_client.py,sha256=8lt0mZfJrPHUeGCdxjlLzB4CZNDt4OuOmYQX9J1hgCw,4666
|
|
54
|
+
azure/ai/evaluation/_evaluate/_batch_run/target_run_context.py,sha256=OCiCnLKRYzNkdm6mo-WSviXa-HbCltq-G9ym6gLIdO4,1658
|
|
55
|
+
azure/ai/evaluation/_evaluate/_telemetry/__init__.py,sha256=tBZ98BC8sIuANCTZsgONQblR-Vrw2oIcRqjjyHxbZio,3513
|
|
56
|
+
azure/ai/evaluation/_evaluators/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
57
|
+
azure/ai/evaluation/_evaluators/_bleu/__init__.py,sha256=quKKO0kvOSkky5hcoNBvgBuMeeVRFCE9GSv70mAdGP4,260
|
|
58
|
+
azure/ai/evaluation/_evaluators/_bleu/_bleu.py,sha256=ZX12bWcDop7HX5hXT2im2KLIJTWik9ok67zK2hZo1WY,4429
|
|
59
|
+
azure/ai/evaluation/_evaluators/_code_vulnerability/__init__.py,sha256=zRHHxYA6CI72iqZaZz9eSbDHwhhjp5hjicEK_RWXlL0,109
|
|
60
|
+
azure/ai/evaluation/_evaluators/_code_vulnerability/_code_vulnerability.py,sha256=Ud8YN2umel_hm_qWH0LZSSkMeL-pDjfC8NtQud6eGow,4068
|
|
61
|
+
azure/ai/evaluation/_evaluators/_coherence/__init__.py,sha256=GRqcSCQse02Spyki0UsRNWMIXiea2lLtPPXNGvkJzQ0,258
|
|
62
|
+
azure/ai/evaluation/_evaluators/_coherence/_coherence.py,sha256=IFk4RYa0h39i9GbtUYDph78ELx9GTJ6gzk4-oBtdL34,5378
|
|
63
|
+
azure/ai/evaluation/_evaluators/_coherence/coherence.prompty,sha256=ANvh9mDFW7KMejrgdWqBLjj4SIqEO5WW9gg5pE0RLJk,6798
|
|
64
|
+
azure/ai/evaluation/_evaluators/_common/__init__.py,sha256=xAymP_CZy4aPzWplMdXgQUQVDIUEMI-0nbgdm_umFYY,498
|
|
65
|
+
azure/ai/evaluation/_evaluators/_common/_base_eval.py,sha256=zUntxs1kR7fSzevotAy9m4KnuSFQXtpajXN4w0GNo4o,25449
|
|
66
|
+
azure/ai/evaluation/_evaluators/_common/_base_multi_eval.py,sha256=yYFpoCDe2wMFQck0ykbX8IJBBidk6NT1wUTkVFlVSy8,2728
|
|
67
|
+
azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py,sha256=iYIciz7Mkea67OiodbZ4Od9Djtu0GcAwingfzvk-d-Q,6177
|
|
68
|
+
azure/ai/evaluation/_evaluators/_common/_base_rai_svc_eval.py,sha256=fjiGQn2IHbhhzhykA3oguipaNVisoAqUDAEKgvvNN10,8539
|
|
69
|
+
azure/ai/evaluation/_evaluators/_common/_conversation_aggregators.py,sha256=gjDBjRxJKwaHbshWH0j2idjlzfzNMnT9a9RL0fQiKeM,2129
|
|
70
|
+
azure/ai/evaluation/_evaluators/_content_safety/__init__.py,sha256=PEYMIybfP64f7byhuTaiq4RiqsYbjqejpW1JsJIG1jA,556
|
|
71
|
+
azure/ai/evaluation/_evaluators/_content_safety/_content_safety.py,sha256=xZwQnmSqaKmLtZaDAoM4vZxOVeudGQaVxa5GLV03NwI,6309
|
|
72
|
+
azure/ai/evaluation/_evaluators/_content_safety/_hate_unfairness.py,sha256=uEnsyhjJ-oQRSkMeHjEJwURhkWBXXtkaIWEhjRR6qPY,6656
|
|
73
|
+
azure/ai/evaluation/_evaluators/_content_safety/_self_harm.py,sha256=wNyUm2QT1_Jpm7a8uOy74rOMF3yGNupC10g_kbEwRBI,5854
|
|
74
|
+
azure/ai/evaluation/_evaluators/_content_safety/_sexual.py,sha256=-yuKdXd98wQazlQ8s1bB7yee-sAIm-vHlVzDW1sC1t0,6099
|
|
75
|
+
azure/ai/evaluation/_evaluators/_content_safety/_violence.py,sha256=8SwwogI7gBFep_KQKh0SjiNkbxreQToXtUDMr1L6jpA,6159
|
|
76
|
+
azure/ai/evaluation/_evaluators/_eci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
+
azure/ai/evaluation/_evaluators/_eci/_eci.py,sha256=a36sLZPHKi3YAdl0JvpL6vboZMqgGjnmz0qZ-o8vcWY,2934
|
|
78
|
+
azure/ai/evaluation/_evaluators/_f1_score/__init__.py,sha256=aEVbO7iMoF20obdpLQKcKm69Yyu3mYnblKELLqu8OGI,260
|
|
79
|
+
azure/ai/evaluation/_evaluators/_f1_score/_f1_score.py,sha256=Nt4QgiJew6cuLyE3fsy9tizNsC8Rk2vCBiu1FA2doAY,6483
|
|
80
|
+
azure/ai/evaluation/_evaluators/_fluency/__init__.py,sha256=EEJw39xRa0bOAA1rELTTKXQu2s60n_7CZQRD0Gu2QVw,259
|
|
81
|
+
azure/ai/evaluation/_evaluators/_fluency/_fluency.py,sha256=uG3NzLS2XxLePg5fsUVdL2K76XUa4tBaPybjxbHRtBA,5092
|
|
82
|
+
azure/ai/evaluation/_evaluators/_fluency/fluency.prompty,sha256=n9v0W9eYwgIO-JSsLTSKEM_ApJuxxuKWQpNblrTEkFY,4861
|
|
83
|
+
azure/ai/evaluation/_evaluators/_gleu/__init__.py,sha256=Ae2EvQ7gqiYAoNO3LwGIhdAAjJPJDfT85rQGKrRrmbA,260
|
|
84
|
+
azure/ai/evaluation/_evaluators/_gleu/_gleu.py,sha256=QnogGvw2JmmV4YZCOvoZMMvoB9JMAjnac2r5h806zmI,4421
|
|
85
|
+
azure/ai/evaluation/_evaluators/_groundedness/__init__.py,sha256=UYNJUeRvBwcSVFyZpdsf29un5eyaDzYoo3QvC1gvlLg,274
|
|
86
|
+
azure/ai/evaluation/_evaluators/_groundedness/_groundedness.py,sha256=Zzh08Tsz_52NdZkVtMzWVISzG_wLCDNwl-cgeT-o6iQ,7634
|
|
87
|
+
azure/ai/evaluation/_evaluators/_groundedness/groundedness_with_query.prompty,sha256=v7TOm75DyW_1gOU6gSiZoPcRnHcJ65DrzR2cL_ucWDY,5814
|
|
88
|
+
azure/ai/evaluation/_evaluators/_groundedness/groundedness_without_query.prompty,sha256=8kNShdfxQvkII7GnqjmdqQ5TNelA2B6cjnqWZk8FFe4,5296
|
|
89
|
+
azure/ai/evaluation/_evaluators/_intent_resolution/__init__.py,sha256=Lr8krXt2yfShFTAuwjTFgrUbO75boLLrRSnF1mriN_Q,280
|
|
90
|
+
azure/ai/evaluation/_evaluators/_intent_resolution/_intent_resolution.py,sha256=cyaqYUyq3CsC3SOX27F_AphvQ4jrUcgxcKfRP58JCTE,10791
|
|
91
|
+
azure/ai/evaluation/_evaluators/_intent_resolution/intent_resolution.prompty,sha256=p8_V-bB3uOqqXWRsDNa4eIOoP8U-_D-5fZuCNSL8ZUU,7467
|
|
92
|
+
azure/ai/evaluation/_evaluators/_meteor/__init__.py,sha256=209na3pPsdmcuYpYHUYtqQybCpc3yZkc93HnRdicSlI,266
|
|
93
|
+
azure/ai/evaluation/_evaluators/_meteor/_meteor.py,sha256=DCWzH-wtWlWKkMUXK7nN-hpBYqEKT5cZSl6ikMNaNkw,5462
|
|
94
|
+
azure/ai/evaluation/_evaluators/_protected_material/__init__.py,sha256=eRAQIU9diVXfO5bp6aLWxZoYUvOsrDIfy1gnDOeNTiI,109
|
|
95
|
+
azure/ai/evaluation/_evaluators/_protected_material/_protected_material.py,sha256=IABs1YMBZdIi1u57dPi-aQpSiPWIGxEZ4hyt97jvdNA,4604
|
|
96
|
+
azure/ai/evaluation/_evaluators/_qa/__init__.py,sha256=bcXfT--C0hjym2haqd1B2-u9bDciyM0ThOFtU1Q69sk,244
|
|
97
|
+
azure/ai/evaluation/_evaluators/_qa/_qa.py,sha256=A0amMuVRCgcHP567LkXnFXJAWCzdPQfSxisbKLycASw,5772
|
|
98
|
+
azure/ai/evaluation/_evaluators/_relevance/__init__.py,sha256=JlxytW32Nl8pbE-fI3GRpfgVuY9EG6zxIAn5VZGSwyc,265
|
|
99
|
+
azure/ai/evaluation/_evaluators/_relevance/_relevance.py,sha256=KlzKGY19kUO3EU5gqcCGhDDhr_VBaApwXCl9A01UJ_s,6068
|
|
100
|
+
azure/ai/evaluation/_evaluators/_relevance/relevance.prompty,sha256=VHKzVlC2Cv1xuholgIGmerPspspAI0t6IgJ2cxOuYDE,4811
|
|
101
|
+
azure/ai/evaluation/_evaluators/_response_completeness/__init__.py,sha256=U3eqkQQAgRif46B6UGdq3yWefgbkZGJ3ZE2sKoZQDlU,292
|
|
102
|
+
azure/ai/evaluation/_evaluators/_response_completeness/_response_completeness.py,sha256=TdTe6wdz2RDqQbTVKg3J0ZqEYuR537KE5lvG6crWY0E,7424
|
|
103
|
+
azure/ai/evaluation/_evaluators/_response_completeness/response_completeness.prompty,sha256=MnlvnNbGucHUAHkrxZrlcgn0zF8jK9gtXiQtVZ4AoBo,7191
|
|
104
|
+
azure/ai/evaluation/_evaluators/_retrieval/__init__.py,sha256=kMu47ZyTZ7f-4Yh6H3KHxswmxitmPJ8FPSk90qgR0XI,265
|
|
105
|
+
azure/ai/evaluation/_evaluators/_retrieval/_retrieval.py,sha256=eddgpihSjZwQH58lcfL0vYh-07H_TOVT8dt_MxRZfBk,5791
|
|
106
|
+
azure/ai/evaluation/_evaluators/_retrieval/retrieval.prompty,sha256=_YVoO4Gt_WD42bUcj5n6BDW0dMUqNf0yF3Nj5XMOX2c,16490
|
|
107
|
+
azure/ai/evaluation/_evaluators/_rouge/__init__.py,sha256=kusCDaYcXogDugGefRP8MQSn9xv107oDbrMCqZ6K4GA,291
|
|
108
|
+
azure/ai/evaluation/_evaluators/_rouge/_rouge.py,sha256=BrOr7qj_jLDPSbOy4jupF6FWahoKLJnAxrJGcfU92DA,9631
|
|
109
|
+
azure/ai/evaluation/_evaluators/_service_groundedness/__init__.py,sha256=0DODUGTOgaYyFbO9_zxuwifixDL3SIm3EkwP1sdwn6M,288
|
|
110
|
+
azure/ai/evaluation/_evaluators/_service_groundedness/_service_groundedness.py,sha256=YkmGxWOIzuPaBoxY2rxlkOQzw-atyo9lKtGgv34wulw,7544
|
|
111
|
+
azure/ai/evaluation/_evaluators/_similarity/__init__.py,sha256=V2Mspog99_WBltxTkRHG5NpN5s9XoiTSN4I8POWEkLA,268
|
|
112
|
+
azure/ai/evaluation/_evaluators/_similarity/_similarity.py,sha256=EHA-1aWaclDSUGea3uX5F195W-W9bmIpALvd8DyWgUU,4934
|
|
113
|
+
azure/ai/evaluation/_evaluators/_similarity/similarity.prompty,sha256=eoludASychZoGL625bFCaZai-OY7DIAg90ZLax_o4XE,4594
|
|
114
|
+
azure/ai/evaluation/_evaluators/_task_adherence/__init__.py,sha256=9HtNrG7yYX0Ygq3cZoS_0obAvGgmy5HWcsBcPKoB15c,271
|
|
115
|
+
azure/ai/evaluation/_evaluators/_task_adherence/_task_adherence.py,sha256=vK0_UFsrVqV580-aG5F0vrGxjL7x0YLbQH91HUvu-ss,9701
|
|
116
|
+
azure/ai/evaluation/_evaluators/_task_adherence/task_adherence.prompty,sha256=tOgTrDO41jsFHloabSBCWcbwKB1MtGGxHH_pyFIn2Vk,5350
|
|
117
|
+
azure/ai/evaluation/_evaluators/_tool_call_accuracy/__init__.py,sha256=vYB4Y_3n1LqTiEeZB1O1A0b14wpURBwtW0wPEN2FG9Q,288
|
|
118
|
+
azure/ai/evaluation/_evaluators/_tool_call_accuracy/_tool_call_accuracy.py,sha256=E0fgQoHKie7piqC0ohDnJ7DPVd-OPhED4-5eZVUF_qc,14602
|
|
119
|
+
azure/ai/evaluation/_evaluators/_tool_call_accuracy/tool_call_accuracy.prompty,sha256=0YgN5SwlWCdcqHAhRU5NEVlZL062tQMiFil0bvdppn4,3890
|
|
120
|
+
azure/ai/evaluation/_evaluators/_ungrounded_attributes/__init__.py,sha256=wGZBd_cRDgkuS-0HV9qm81dHK7ScYdKd98xLPtk6EwQ,118
|
|
121
|
+
azure/ai/evaluation/_evaluators/_ungrounded_attributes/_ungrounded_attributes.py,sha256=h534CBX_OfFcmb_QmGKl6MURvmvewbleqeg8iCBZq8c,3800
|
|
122
|
+
azure/ai/evaluation/_evaluators/_xpia/__init__.py,sha256=VMEL8WrpJQeh4sQiOLzP7hRFPnjzsvwfvTzaGCVJPCM,88
|
|
123
|
+
azure/ai/evaluation/_evaluators/_xpia/xpia.py,sha256=64ersTyBvmkl2lvuuh5YJqJ2Ow0RUzjlqxZCnhYhS0g,5958
|
|
124
|
+
azure/ai/evaluation/_legacy/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
125
|
+
azure/ai/evaluation/_legacy/_adapters/__init__.py,sha256=8idkgtaxIaVaoS7rs5kmnGXLNODpgyRt9Bb-XJkFdt0,692
|
|
126
|
+
azure/ai/evaluation/_legacy/_adapters/_configuration.py,sha256=aDukrNbyXz9zPHYKpmXrLthnJoJQziP1WL793nIuC28,1677
|
|
127
|
+
azure/ai/evaluation/_legacy/_adapters/_constants.py,sha256=MmTUbPSCiM4eLtAA5LIsD6sN1B9IuFB-RTuUnxbwZSs,386
|
|
128
|
+
azure/ai/evaluation/_legacy/_adapters/_errors.py,sha256=SSyaGsqGzzrIeOKEGTtIzhKnAIg_oJw5ze5KMPIfw2Y,1175
|
|
129
|
+
azure/ai/evaluation/_legacy/_adapters/_flows.py,sha256=c2C0otzTL73YbIRSfSKWjkpfscAFOEjdBn_oMVCG9Yo,779
|
|
130
|
+
azure/ai/evaluation/_legacy/_adapters/_service.py,sha256=4xlpxSCrH0jWyKVazu-qhe42KgFksKWVPQqDqf7CFGY,423
|
|
131
|
+
azure/ai/evaluation/_legacy/_adapters/client.py,sha256=76XEJJ2GoKJsfHfMSvixU8oSI6ePtJQBG10x9PXVUxM,1770
|
|
132
|
+
azure/ai/evaluation/_legacy/_adapters/entities.py,sha256=4ZYXfawx5w7t0pyEdm7g49eAJwct2QtcZX0ZvB_6uHU,710
|
|
133
|
+
azure/ai/evaluation/_legacy/_adapters/tracing.py,sha256=jm-lkzLA-agRY1meIzs9mFrzJ1A3dBodi6HgjklIjD0,1162
|
|
134
|
+
azure/ai/evaluation/_legacy/_adapters/types.py,sha256=q7n0TtpFxd1WttbUR_Q8ODd8bTcMaJjIrxLXx1onirc,447
|
|
135
|
+
azure/ai/evaluation/_legacy/_adapters/utils.py,sha256=2KdYqfeuHLcfqk1qJRviNoqqsghxBZNmyoGcUTNphl0,1306
|
|
136
|
+
azure/ai/evaluation/_legacy/_batch_engine/__init__.py,sha256=NNX2DhtPVzJCX8kR_QzZ6EkUsdGifvwip2LHEcRwy1Y,594
|
|
137
|
+
azure/ai/evaluation/_legacy/_batch_engine/_config.py,sha256=-B37cIbWOWEB3kTaNjHGLfQNbLa-XAP1gWm0Kvyv82k,1724
|
|
138
|
+
azure/ai/evaluation/_legacy/_batch_engine/_engine.py,sha256=K7N_MKa4EGhFv4-1W7MeGeaRY7LEHA579x04DV7vUlc,15146
|
|
139
|
+
azure/ai/evaluation/_legacy/_batch_engine/_exceptions.py,sha256=_QQLowht6ww4wBJbShQBo00Y8HFdaWh-dWd44sGvJBc,2870
|
|
140
|
+
azure/ai/evaluation/_legacy/_batch_engine/_logging.py,sha256=aEZsfS2wqbqVEA-vBsfg0-sCWyssGf2L1oWFmu9cego,11398
|
|
141
|
+
azure/ai/evaluation/_legacy/_batch_engine/_openai_injector.py,sha256=NLoHjpUSqUy4CVNYXIgpQ3e7izDFCUIQSwvIEf7oNHY,884
|
|
142
|
+
azure/ai/evaluation/_legacy/_batch_engine/_result.py,sha256=r8MSaQ8q42vKAiaML36dFsMY-WELUkdnVOLVdK7H-FI,3187
|
|
143
|
+
azure/ai/evaluation/_legacy/_batch_engine/_run.py,sha256=b9eJOorEHcGJqE7cApvJpY3JpUdCv3ZVNFo4ZKlfWNA,4343
|
|
144
|
+
azure/ai/evaluation/_legacy/_batch_engine/_run_storage.py,sha256=KjiKaSjT16L_wLYrZpIeBANtin3fa4Gqd3L-Xjw-59I,3418
|
|
145
|
+
azure/ai/evaluation/_legacy/_batch_engine/_run_submitter.py,sha256=4V4Xh7xRepTX9eBFKHkaeoNRBytZ_o__xbX_NiIp64M,9674
|
|
146
|
+
azure/ai/evaluation/_legacy/_batch_engine/_status.py,sha256=xSpJaMmBroGOL8U_iTpAr_PgyNKaxfawqak6TpuUrkk,780
|
|
147
|
+
azure/ai/evaluation/_legacy/_batch_engine/_trace.py,sha256=4ZbvptRg-GOfP7VxDIkP-aZfLULBelHD3Ecr1VAOYk4,4536
|
|
148
|
+
azure/ai/evaluation/_legacy/_batch_engine/_utils.py,sha256=bfeLHUMcCASBNoL-tcLTuCrOS_XhvTX855LYDsShzlM,2491
|
|
149
|
+
azure/ai/evaluation/_legacy/_batch_engine/_utils_deprecated.py,sha256=hBm4gh_m8BCWDAryKmqO4ZsypuGE1QSh3K_DxfoEKpc,5917
|
|
150
|
+
azure/ai/evaluation/_legacy/prompty/__init__.py,sha256=nWpB3ApQWzlzgbhvNkjHq3sL5tnpwfwmSsTKBmhxmN8,1660
|
|
151
|
+
azure/ai/evaluation/_legacy/prompty/_connection.py,sha256=mJekR_DWnoUYlqwehE1wc9bKfn1pg5ziLQjzjpdpQPc,6211
|
|
152
|
+
azure/ai/evaluation/_legacy/prompty/_exceptions.py,sha256=3EeLGkJGZ3gOq0f-6xoIdGqJkCw956uChvow_Byvt-o,2250
|
|
153
|
+
azure/ai/evaluation/_legacy/prompty/_prompty.py,sha256=nuGVZd1KBFOb0lvXsZziGeObrPmuhY3R5WLKtG3tSaQ,11794
|
|
154
|
+
azure/ai/evaluation/_legacy/prompty/_utils.py,sha256=9OOEBTF9MzcgBUyracbHJMNinNfoaGs7Bm8COsTMVkE,22463
|
|
155
|
+
azure/ai/evaluation/_legacy/prompty/_yaml_utils.py,sha256=pVL6xgTHC3AKKD5plJ4d6hiBuComaOlUww1uqqDQlB4,3350
|
|
156
|
+
azure/ai/evaluation/_safety_evaluation/__init__.py,sha256=UwArlb5cGLN4pRUm8nG7mXsmxhgdIving2OslYhQDAg,179
|
|
157
|
+
azure/ai/evaluation/_safety_evaluation/_generated_rai_client.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
|
+
azure/ai/evaluation/_safety_evaluation/_safety_evaluation.py,sha256=5JHNB9TGFldpKxucQPGpJiH4EFSZWLrfwnWNwQ3lSVo,36967
|
|
159
|
+
azure/ai/evaluation/_vendor/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
160
|
+
azure/ai/evaluation/_vendor/rouge_score/__init__.py,sha256=03OkyfS_UmzRnHv6-z9juTaJ6OXJoEJM989hgifIZbc,607
|
|
161
|
+
azure/ai/evaluation/_vendor/rouge_score/rouge_scorer.py,sha256=DtNSeshHipzc6vFnvx7kbs5viXe4LNq-ZrgllFvfR4U,11299
|
|
162
|
+
azure/ai/evaluation/_vendor/rouge_score/scoring.py,sha256=0sqdiNE-4R_EmTTqyWL9_DAOgl54250H5004tZDGxEE,1878
|
|
163
|
+
azure/ai/evaluation/_vendor/rouge_score/tokenize.py,sha256=IyHVsWY6IFFZdB23cLiJs8iBZ0DXk1mQlWE1xtdjuuk,1826
|
|
164
|
+
azure/ai/evaluation/_vendor/rouge_score/tokenizers.py,sha256=3_-y1TyvyluHuERhSJ5CdXSwnpcMA7aAKU6PCz9wH_Q,1745
|
|
165
|
+
azure/ai/evaluation/red_team/__init__.py,sha256=wAjy_85gzdX0YyUlj6kHWrpo01zz2mgOJ1AbH5EkH8s,613
|
|
166
|
+
azure/ai/evaluation/red_team/_attack_objective_generator.py,sha256=yMK5z91_w6GIzbqTQtUXfABuGeH3nfVgF8feOMd37K4,10765
|
|
167
|
+
azure/ai/evaluation/red_team/_attack_strategy.py,sha256=Qy3K63z98uDg_06lc5-6HG1MgquYXB9Y9Ke0xifeEl0,1430
|
|
168
|
+
azure/ai/evaluation/red_team/_callback_chat_target.py,sha256=H58nU6IVEpeDuTZPsxIoYKXAvU3dAWnLRhA8wyaY11s,3071
|
|
169
|
+
azure/ai/evaluation/red_team/_default_converter.py,sha256=K8G775VVdQLsAqff60BBNFrNRj8JijB7St9XOHmGQGA,775
|
|
170
|
+
azure/ai/evaluation/red_team/_red_team.py,sha256=v8zzv1s_S3LgVMHDu2kwVlY56q4T28vaLmIfvDLjoIE,105658
|
|
171
|
+
azure/ai/evaluation/red_team/_red_team_result.py,sha256=BwHf0KBGe9hqyWeTYDOOuoIxJ0rqkY9lHLUOZ02wPJI,17340
|
|
172
|
+
azure/ai/evaluation/red_team/_utils/__init__.py,sha256=UwArlb5cGLN4pRUm8nG7mXsmxhgdIving2OslYhQDAg,179
|
|
173
|
+
azure/ai/evaluation/red_team/_utils/constants.py,sha256=ctSsuWiavhaGApRgP6fL3OtNGphnCKuesTQOwR833nk,2289
|
|
174
|
+
azure/ai/evaluation/red_team/_utils/formatting_utils.py,sha256=jztERWOb1P3ClOKEr6-sMmLDQ8subjKUVBKVVxeSFcY,6416
|
|
175
|
+
azure/ai/evaluation/red_team/_utils/logging_utils.py,sha256=jjNq37zlJz0KPo9g8NuuhnDJo56T-06ElJ-7yyeD46M,4838
|
|
176
|
+
azure/ai/evaluation/red_team/_utils/strategy_utils.py,sha256=3ID-6rY3t8QqbfwFNx-4VxGDHq0i5VoRFMsGR7mlKvM,8058
|
|
177
|
+
azure/ai/evaluation/simulator/__init__.py,sha256=JbrPZ8pvTBalyX94SvZ9btHNoovX8rbZV03KmzxxWys,552
|
|
178
|
+
azure/ai/evaluation/simulator/_adversarial_scenario.py,sha256=FQ9ZNruqPY4o06uu2uig2MZSbearwAJwieIB26GbPOU,1833
|
|
179
|
+
azure/ai/evaluation/simulator/_adversarial_simulator.py,sha256=RlHk8Y324pvd7golXOygQ5NayPQ2zjT-ekQooldMGtE,23017
|
|
180
|
+
azure/ai/evaluation/simulator/_constants.py,sha256=nCL7_1BnYh6k0XvxudxsDVMbiG9MMEvYw5wO9FZHHZ8,857
|
|
181
|
+
azure/ai/evaluation/simulator/_direct_attack_simulator.py,sha256=FTtWf655dHJF5FLJi0xGSBgIlGWNiVWyqaLDJSud9XA,10199
|
|
182
|
+
azure/ai/evaluation/simulator/_indirect_attack_simulator.py,sha256=nweIU_AkUIR50qLQpjmljf_OkpsCPth2Ebf4vusygCA,10226
|
|
183
|
+
azure/ai/evaluation/simulator/_simulator.py,sha256=aVoPvTQsY7u4O0YYQm4pug368UelKefAxa38dJVZ4ps,36513
|
|
184
|
+
azure/ai/evaluation/simulator/_utils.py,sha256=16NltlywpbMtoFtULwTKqeURguIS1kSKSo3g8uKV8TA,5181
|
|
185
|
+
azure/ai/evaluation/simulator/_conversation/__init__.py,sha256=LOR5h7vSACrv_cmaS6r7KUqjJcHYg7PAgkDbdvOmd4g,17726
|
|
186
|
+
azure/ai/evaluation/simulator/_conversation/_conversation.py,sha256=h8OHq0sWKiTH821tC5zF44CJ-QgutTgDnEYsFEA7Cw0,7635
|
|
187
|
+
azure/ai/evaluation/simulator/_conversation/constants.py,sha256=3v7zkjPwJAPbSpJYIK6VOZZy70bJXMo_QTVqSFGlq9A,984
|
|
188
|
+
azure/ai/evaluation/simulator/_data_sources/__init__.py,sha256=Yx1Iq2GNKQ5lYxTotvPwkPL4u0cm6YVxUe-iVbu1clI,180
|
|
189
|
+
azure/ai/evaluation/simulator/_data_sources/grounding.json,sha256=jqdqHrCgS7hN7K2kXSEcPCmzFjV4cv_qcCSR-Hutwx4,1257075
|
|
190
|
+
azure/ai/evaluation/simulator/_helpers/__init__.py,sha256=FQwgrJvzq_nv3wF9DBr2pyLn2V2hKGmtp0QN9nwpAww,203
|
|
191
|
+
azure/ai/evaluation/simulator/_helpers/_language_suffix_mapping.py,sha256=7BBLH78b7YDelHDLbAIwf-IO9s9cAEtn-RRXmNReHdc,1017
|
|
192
|
+
azure/ai/evaluation/simulator/_helpers/_simulator_data_classes.py,sha256=BOttMTec3muMiA4OzwD_iW08GTrhja7PL9XVjRCN3jM,3029
|
|
193
|
+
azure/ai/evaluation/simulator/_model_tools/__init__.py,sha256=aMv5apb7uVjuhMF9ohhA5kQmo652hrGIJlhdl3y2R1I,835
|
|
194
|
+
azure/ai/evaluation/simulator/_model_tools/_generated_rai_client.py,sha256=pt5bwzSzkdNpWjoljP2enueydpBNygFsCc6-1-fc1Zs,6282
|
|
195
|
+
azure/ai/evaluation/simulator/_model_tools/_identity_manager.py,sha256=-hptp2vpJIcfjvtd0E2c7ry00LVh23LxuYGevsNFfgs,6385
|
|
196
|
+
azure/ai/evaluation/simulator/_model_tools/_proxy_completion_model.py,sha256=D2Am07l2gq_v-vztqDBTX2MxZTUumm5ysaVSL2L0rxQ,9118
|
|
197
|
+
azure/ai/evaluation/simulator/_model_tools/_rai_client.py,sha256=nvDS33uaxLpuvZEC4aotu-P9-CHqLiyCInED6Xq9ZQ0,11643
|
|
198
|
+
azure/ai/evaluation/simulator/_model_tools/_template_handler.py,sha256=NQWqjE7csSzkhb2XdW82AoCA-DxixpTrfBxAnOt2Wlc,7075
|
|
199
|
+
azure/ai/evaluation/simulator/_model_tools/models.py,sha256=bfVm0PV3vfH_8DkdmTMZqYVN-G51hZ6Y0TOO-NiysJY,21811
|
|
200
|
+
azure/ai/evaluation/simulator/_prompty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
|
+
azure/ai/evaluation/simulator/_prompty/task_query_response.prompty,sha256=2BzSqDDYilDushvR56vMRDmqFIaIYAewdUlUZg_elMg,2182
|
|
202
|
+
azure/ai/evaluation/simulator/_prompty/task_simulate.prompty,sha256=NE6lH4bfmibgMn4NgJtm9_l3PMoHSFrfjjosDJEKM0g,939
|
|
203
|
+
azure_ai_evaluation-1.5.0.dist-info/METADATA,sha256=MS1dXybS1lf1sBR5fdxYw-y82ifENen9vnVnxDIMkKE,35924
|
|
204
|
+
azure_ai_evaluation-1.5.0.dist-info/NOTICE.txt,sha256=4tzi_Yq4-eBGhBvveobWHCgUIVF-ZeouGN0m7hVq5Mk,3592
|
|
205
|
+
azure_ai_evaluation-1.5.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
206
|
+
azure_ai_evaluation-1.5.0.dist-info/top_level.txt,sha256=S7DhWV9m80TBzAhOFjxDUiNbKszzoThbnrSz5MpbHSQ,6
|
|
207
|
+
azure_ai_evaluation-1.5.0.dist-info/RECORD,,
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# ---------------------------------------------------------
|
|
2
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
# ---------------------------------------------------------
|
|
4
|
-
# pylint: disable=C0103,C0114,C0116,E0401,E0611
|
|
5
|
-
|
|
6
|
-
import functools
|
|
7
|
-
from typing import Callable, TypeVar
|
|
8
|
-
|
|
9
|
-
from promptflow._sdk._telemetry.activity import ActivityType, monitor_operation
|
|
10
|
-
from typing_extensions import ParamSpec
|
|
11
|
-
|
|
12
|
-
P = ParamSpec("P")
|
|
13
|
-
R = TypeVar("R")
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def monitor_adversarial_scenario(activity_name: str = "adversarial.simulator.call"):
|
|
17
|
-
"""
|
|
18
|
-
Monitor an adversarial scenario.
|
|
19
|
-
|
|
20
|
-
:param activity_name: The name of the activity to monitor.
|
|
21
|
-
:type activity_name: str
|
|
22
|
-
:returns: A decorator
|
|
23
|
-
:rtype: Callable[[Callable], Callable]
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
def decorator(func: Callable[P, R]) -> Callable[P, R]:
|
|
27
|
-
"""
|
|
28
|
-
Decorator for monitoring an adversarial scenario.
|
|
29
|
-
|
|
30
|
-
:param func: The function to be decorated.
|
|
31
|
-
:type func: Callable[P, R]
|
|
32
|
-
:returns: The decorated function
|
|
33
|
-
:rtype: Callable[P, R]
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
@functools.wraps(func)
|
|
37
|
-
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
|
38
|
-
scenario = str(kwargs.get("scenario", None))
|
|
39
|
-
max_conversation_turns = kwargs.get("max_conversation_turns", None)
|
|
40
|
-
max_simulation_results = kwargs.get("max_simulation_results", None)
|
|
41
|
-
jailbreak = kwargs.get("jailbreak", None)
|
|
42
|
-
decorated_func = monitor_operation(
|
|
43
|
-
activity_name=activity_name,
|
|
44
|
-
activity_type=ActivityType.PUBLICAPI,
|
|
45
|
-
custom_dimensions={
|
|
46
|
-
"scenario": scenario,
|
|
47
|
-
"max_conversation_turns": max_conversation_turns,
|
|
48
|
-
"max_simulation_results": max_simulation_results,
|
|
49
|
-
"jailbreak": jailbreak,
|
|
50
|
-
},
|
|
51
|
-
)(func)
|
|
52
|
-
|
|
53
|
-
return decorated_func(*args, **kwargs)
|
|
54
|
-
|
|
55
|
-
return wrapper
|
|
56
|
-
|
|
57
|
-
return decorator
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def monitor_task_simulator(func: Callable[P, R]) -> Callable[P, R]:
|
|
61
|
-
"""
|
|
62
|
-
Monitor a task simulator.
|
|
63
|
-
|
|
64
|
-
:param func: The function to be decorated.
|
|
65
|
-
:type func: Callable[P, R]
|
|
66
|
-
:returns: The decorated function
|
|
67
|
-
:rtype: Callable[P, R]
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
@functools.wraps(func)
|
|
71
|
-
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
|
72
|
-
text = kwargs.get("text")
|
|
73
|
-
user_persona = kwargs.get("user_persona")
|
|
74
|
-
num_queries = kwargs.get("num_queries", 0)
|
|
75
|
-
max_conversation_turns = kwargs.get("max_conversation_turns", 0)
|
|
76
|
-
decorated_func = monitor_operation(
|
|
77
|
-
activity_name="task.simulator.call",
|
|
78
|
-
activity_type=ActivityType.PUBLICAPI,
|
|
79
|
-
custom_dimensions={
|
|
80
|
-
"text_length": len(text) if isinstance(text, str) else 0,
|
|
81
|
-
"user_persona_length": len(user_persona) if isinstance(user_persona, list) else 0,
|
|
82
|
-
"number_of_queries": num_queries,
|
|
83
|
-
"max_conversation_turns": max_conversation_turns,
|
|
84
|
-
},
|
|
85
|
-
)(func)
|
|
86
|
-
|
|
87
|
-
return decorated_func(*args, **kwargs)
|
|
88
|
-
|
|
89
|
-
return wrapper
|