Files
2026-07-13 13:32:05 +08:00

77 lines
2.2 KiB
Python

from typing import Optional
from deepeval.confident.api import Api, Endpoints, HttpMethods
from deepeval.annotation.api import APIAnnotation, AnnotationType
def send_annotation(
rating: int,
trace_uuid: Optional[str] = None,
span_uuid: Optional[str] = None,
thread_id: Optional[str] = None,
expected_output: Optional[str] = None,
expected_outcome: Optional[str] = None,
explanation: Optional[str] = None,
user_id: Optional[str] = None,
type: Optional[AnnotationType] = AnnotationType.THUMBS_RATING,
) -> None:
api_annotation = APIAnnotation(
rating=rating,
traceUuid=trace_uuid,
spanUuid=span_uuid,
threadId=thread_id,
expectedOutput=expected_output,
expectedOutcome=expected_outcome,
explanation=explanation,
type=type,
userId=user_id,
)
api = Api()
try:
body = api_annotation.model_dump(by_alias=True, exclude_none=True)
except AttributeError:
# Pydantic version below 2.0
body = api_annotation.dict(by_alias=True, exclude_none=True)
api.send_request(
method=HttpMethods.POST,
endpoint=Endpoints.ANNOTATIONS_ENDPOINT,
body=body,
)
async def a_send_annotation(
rating: int,
trace_uuid: Optional[str] = None,
span_uuid: Optional[str] = None,
thread_id: Optional[str] = None,
expected_output: Optional[str] = None,
expected_outcome: Optional[str] = None,
explanation: Optional[str] = None,
type: Optional[AnnotationType] = AnnotationType.THUMBS_RATING,
user_id: Optional[str] = None,
) -> None:
api_annotation = APIAnnotation(
rating=rating,
traceUuid=trace_uuid,
spanUuid=span_uuid,
threadId=thread_id,
expectedOutput=expected_output,
expectedOutcome=expected_outcome,
explanation=explanation,
type=type,
userId=user_id,
)
api = Api()
try:
body = api_annotation.model_dump(by_alias=True, exclude_none=True)
except AttributeError:
# Pydantic version below 2.0
body = api_annotation.dict(by_alias=True, exclude_none=True)
await api.a_send_request(
method=HttpMethods.POST,
endpoint=Endpoints.ANNOTATIONS_ENDPOINT,
body=body,
)