Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2e2886e

Browse files
committedJun 12, 2025·
Moved feedback
1 parent cec8a64 commit 2e2886e

File tree

7 files changed

+50
-41
lines changed

7 files changed

+50
-41
lines changed
 

‎deepeval/feedback/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .feedback import collect_feedback, a_collect_feedback
1+
from .feedback import collect_feedback, a_collect_feedback, Feedback

‎deepeval/feedback/feedback.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
from typing import Optional
2+
from pydantic import BaseModel
23

34
from deepeval.confident.api import Api, Endpoints, HttpMethods
45
from deepeval.feedback.api import APIFeedback
56

67

8+
class Feedback(BaseModel):
9+
rating: int
10+
expected_output: Optional[str] = None
11+
explanation: Optional[str] = None
12+
13+
714
def collect_feedback(
815
rating: int,
916
trace_uuid: Optional[str] = None,

‎deepeval/feedback/utils.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import Optional
2+
from deepeval.feedback.feedback import Feedback
3+
from deepeval.feedback.api import APIFeedback
4+
5+
6+
def convert_feedback_to_api_feedback(
7+
feedback: Optional[Feedback] = None,
8+
trace_uuid: Optional[str] = None,
9+
span_uuid: Optional[str] = None,
10+
) -> Optional[APIFeedback]:
11+
if feedback is None:
12+
return None
13+
14+
if trace_uuid is not None:
15+
return APIFeedback(
16+
traceUuid=trace_uuid,
17+
rating=feedback.rating,
18+
expectedResponse=feedback.expected_output,
19+
explanation=feedback.explanation,
20+
)
21+
if span_uuid is not None:
22+
return APIFeedback(
23+
spanUuid=span_uuid,
24+
rating=feedback.rating,
25+
expectedResponse=feedback.expected_output,
26+
explanation=feedback.explanation,
27+
)
28+
else:
29+
return None

‎deepeval/telemetry.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,11 @@ def capture_evaluation_run(type: str):
167167
# data
168168
event = f"Ran {type}"
169169
distinct_id = get_unique_id()
170-
feature = Feature.COMPONENT_EVALUATION if event == "Ran traceable evaluate()" else Feature.EVALUATION
170+
feature = (
171+
Feature.COMPONENT_EVALUATION
172+
if event == "Ran traceable evaluate()"
173+
else Feature.EVALUATION
174+
)
171175
properties = {
172176
"logged_in_with": get_logged_in_with(),
173177
"environment": IS_RUNNING_IN_JUPYTER,
@@ -178,9 +182,13 @@ def capture_evaluation_run(type: str):
178182
),
179183
}
180184
if feature == Feature.EVALUATION:
181-
properties["feature_status.evaluation"] = get_feature_status(feature)
185+
properties["feature_status.evaluation"] = get_feature_status(
186+
feature
187+
)
182188
elif feature == Feature.COMPONENT_EVALUATION:
183-
properties["feature_status.component_evaluation"] = get_feature_status(feature)
189+
properties["feature_status.component_evaluation"] = (
190+
get_feature_status(feature)
191+
)
184192
set_last_feature(feature)
185193
# capture posthog
186194
posthog.capture(

‎deepeval/tracing/tracing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@
5050
)
5151
from deepeval.tracing.utils import (
5252
Environment,
53-
convert_feedback_to_api_feedback,
5453
make_json_serializable,
5554
perf_counter_to_datetime,
5655
to_zod_compatible_iso,
5756
validate_environment,
5857
validate_sampling_rate,
5958
)
59+
from deepeval.feedback.utils import convert_feedback_to_api_feedback
6060
from deepeval.utils import dataclass_to_dict, is_confident
6161
from deepeval.tracing.context import current_span_context, current_trace_context
6262

‎deepeval/tracing/types.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import Any, Dict, List, Optional, Union
44
from rich.progress import Progress
55

6+
from deepeval.feedback import Feedback
67
from deepeval.tracing.attributes import (
78
AgentAttributes,
89
LlmAttributes,
@@ -13,12 +14,6 @@
1314
from deepeval.metrics import BaseMetric
1415

1516

16-
class Feedback(BaseModel):
17-
rating: int
18-
expected_output: Optional[str] = None
19-
explanation: Optional[str] = None
20-
21-
2217
class TraceWorkerStatus(Enum):
2318
SUCCESS = "success"
2419
FAILURE = "failure"

‎deepeval/tracing/utils.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
from datetime import datetime, timezone
22
from enum import Enum
33
from time import perf_counter
4-
from typing import Optional
5-
6-
from deepeval.feedback.api import APIFeedback
7-
from deepeval.tracing.types import Feedback
84

95

106
class Environment(Enum):
@@ -14,32 +10,6 @@ class Environment(Enum):
1410
TESTING = "testing"
1511

1612

17-
def convert_feedback_to_api_feedback(
18-
feedback: Optional[Feedback] = None,
19-
trace_uuid: Optional[str] = None,
20-
span_uuid: Optional[str] = None,
21-
) -> Optional[APIFeedback]:
22-
if feedback is None:
23-
return None
24-
25-
if trace_uuid is not None:
26-
return APIFeedback(
27-
traceUuid=trace_uuid,
28-
rating=feedback.rating,
29-
expectedResponse=feedback.expected_output,
30-
explanation=feedback.explanation,
31-
)
32-
if span_uuid is not None:
33-
return APIFeedback(
34-
spanUuid=span_uuid,
35-
rating=feedback.rating,
36-
expectedResponse=feedback.expected_output,
37-
explanation=feedback.explanation,
38-
)
39-
else:
40-
return None
41-
42-
4313
def validate_environment(environment: str):
4414
if environment not in [env.value for env in Environment]:
4515
valid_values = ", ".join(f'"{env.value}"' for env in Environment)

0 commit comments

Comments
 (0)
Please sign in to comment.