From a67aea813e581b1ae5482803fda7ee77101a224d Mon Sep 17 00:00:00 2001 From: langfuse-bot Date: Fri, 30 Jan 2026 11:35:01 +0000 Subject: [PATCH] feat(api): update API spec from langfuse/langfuse b9162bf --- langfuse/api/__init__.py | 8 +++ langfuse/api/resources/__init__.py | 8 +++ langfuse/api/resources/commons/__init__.py | 4 ++ .../api/resources/commons/types/__init__.py | 11 ++- .../commons/types/correction_score.py | 53 +++++++++++++++ langfuse/api/resources/commons/types/score.py | 67 ++++++++++++++++++- langfuse/api/resources/score_v_2/__init__.py | 4 ++ .../api/resources/score_v_2/types/__init__.py | 4 ++ .../types/get_scores_response_data.py | 67 +++++++++++++++++++ .../get_scores_response_data_correction.py | 46 +++++++++++++ 10 files changed, 270 insertions(+), 2 deletions(-) create mode 100644 langfuse/api/resources/commons/types/correction_score.py create mode 100644 langfuse/api/resources/score_v_2/types/get_scores_response_data_correction.py diff --git a/langfuse/api/__init__.py b/langfuse/api/__init__.py index 835bdfefa..d1a6414ed 100644 --- a/langfuse/api/__init__.py +++ b/langfuse/api/__init__.py @@ -36,6 +36,7 @@ Comment, CommentObjectType, ConfigCategory, + CorrectionScore, CreateAnnotationQueueAssignmentResponse, CreateAnnotationQueueItemRequest, CreateAnnotationQueueRequest, @@ -85,9 +86,11 @@ GetScoresResponseData, GetScoresResponseDataBoolean, GetScoresResponseDataCategorical, + GetScoresResponseDataCorrection, GetScoresResponseDataNumeric, GetScoresResponseData_Boolean, GetScoresResponseData_Categorical, + GetScoresResponseData_Correction, GetScoresResponseData_Numeric, GetScoresResponseTraceData, HealthResponse, @@ -199,6 +202,7 @@ ScoreV1_Numeric, Score_Boolean, Score_Categorical, + Score_Correction, Score_Numeric, SdkLogBody, SdkLogEvent, @@ -293,6 +297,7 @@ "Comment", "CommentObjectType", "ConfigCategory", + "CorrectionScore", "CreateAnnotationQueueAssignmentResponse", "CreateAnnotationQueueItemRequest", "CreateAnnotationQueueRequest", @@ -342,9 +347,11 @@ "GetScoresResponseData", "GetScoresResponseDataBoolean", "GetScoresResponseDataCategorical", + "GetScoresResponseDataCorrection", "GetScoresResponseDataNumeric", "GetScoresResponseData_Boolean", "GetScoresResponseData_Categorical", + "GetScoresResponseData_Correction", "GetScoresResponseData_Numeric", "GetScoresResponseTraceData", "HealthResponse", @@ -456,6 +463,7 @@ "ScoreV1_Numeric", "Score_Boolean", "Score_Categorical", + "Score_Correction", "Score_Numeric", "SdkLogBody", "SdkLogEvent", diff --git a/langfuse/api/resources/__init__.py b/langfuse/api/resources/__init__.py index 55c4e012a..0de0a56a5 100644 --- a/langfuse/api/resources/__init__.py +++ b/langfuse/api/resources/__init__.py @@ -67,6 +67,7 @@ Comment, CommentObjectType, ConfigCategory, + CorrectionScore, CreateScoreValue, Dataset, DatasetItem, @@ -101,6 +102,7 @@ ScoreV1_Numeric, Score_Boolean, Score_Categorical, + Score_Correction, Score_Numeric, Session, SessionWithTraces, @@ -268,9 +270,11 @@ GetScoresResponseData, GetScoresResponseDataBoolean, GetScoresResponseDataCategorical, + GetScoresResponseDataCorrection, GetScoresResponseDataNumeric, GetScoresResponseData_Boolean, GetScoresResponseData_Categorical, + GetScoresResponseData_Correction, GetScoresResponseData_Numeric, GetScoresResponseTraceData, ) @@ -313,6 +317,7 @@ "Comment", "CommentObjectType", "ConfigCategory", + "CorrectionScore", "CreateAnnotationQueueAssignmentResponse", "CreateAnnotationQueueItemRequest", "CreateAnnotationQueueRequest", @@ -362,9 +367,11 @@ "GetScoresResponseData", "GetScoresResponseDataBoolean", "GetScoresResponseDataCategorical", + "GetScoresResponseDataCorrection", "GetScoresResponseDataNumeric", "GetScoresResponseData_Boolean", "GetScoresResponseData_Categorical", + "GetScoresResponseData_Correction", "GetScoresResponseData_Numeric", "GetScoresResponseTraceData", "HealthResponse", @@ -476,6 +483,7 @@ "ScoreV1_Numeric", "Score_Boolean", "Score_Categorical", + "Score_Correction", "Score_Numeric", "SdkLogBody", "SdkLogEvent", diff --git a/langfuse/api/resources/commons/__init__.py b/langfuse/api/resources/commons/__init__.py index 9e522548e..7105b22c5 100644 --- a/langfuse/api/resources/commons/__init__.py +++ b/langfuse/api/resources/commons/__init__.py @@ -10,6 +10,7 @@ Comment, CommentObjectType, ConfigCategory, + CorrectionScore, CreateScoreValue, Dataset, DatasetItem, @@ -41,6 +42,7 @@ ScoreV1_Numeric, Score_Boolean, Score_Categorical, + Score_Correction, Score_Numeric, Session, SessionWithTraces, @@ -68,6 +70,7 @@ "Comment", "CommentObjectType", "ConfigCategory", + "CorrectionScore", "CreateScoreValue", "Dataset", "DatasetItem", @@ -102,6 +105,7 @@ "ScoreV1_Numeric", "Score_Boolean", "Score_Categorical", + "Score_Correction", "Score_Numeric", "Session", "SessionWithTraces", diff --git a/langfuse/api/resources/commons/types/__init__.py b/langfuse/api/resources/commons/types/__init__.py index b9063f3fb..df87680b7 100644 --- a/langfuse/api/resources/commons/types/__init__.py +++ b/langfuse/api/resources/commons/types/__init__.py @@ -9,6 +9,7 @@ from .comment import Comment from .comment_object_type import CommentObjectType from .config_category import ConfigCategory +from .correction_score import CorrectionScore from .create_score_value import CreateScoreValue from .dataset import Dataset from .dataset_item import DatasetItem @@ -29,7 +30,13 @@ from .pricing_tier_condition import PricingTierCondition from .pricing_tier_input import PricingTierInput from .pricing_tier_operator import PricingTierOperator -from .score import Score, Score_Boolean, Score_Categorical, Score_Numeric +from .score import ( + Score, + Score_Boolean, + Score_Categorical, + Score_Correction, + Score_Numeric, +) from .score_config import ScoreConfig from .score_config_data_type import ScoreConfigDataType from .score_data_type import ScoreDataType @@ -52,6 +59,7 @@ "Comment", "CommentObjectType", "ConfigCategory", + "CorrectionScore", "CreateScoreValue", "Dataset", "DatasetItem", @@ -83,6 +91,7 @@ "ScoreV1_Numeric", "Score_Boolean", "Score_Categorical", + "Score_Correction", "Score_Numeric", "Session", "SessionWithTraces", diff --git a/langfuse/api/resources/commons/types/correction_score.py b/langfuse/api/resources/commons/types/correction_score.py new file mode 100644 index 000000000..26abeae49 --- /dev/null +++ b/langfuse/api/resources/commons/types/correction_score.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from .base_score import BaseScore + + +class CorrectionScore(BaseScore): + value: float = pydantic_v1.Field() + """ + The numeric value of the score. Always 0 for correction scores. + """ + + string_value: str = pydantic_v1.Field(alias="stringValue") + """ + The string representation of the correction content + """ + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} diff --git a/langfuse/api/resources/commons/types/score.py b/langfuse/api/resources/commons/types/score.py index 8d54b6575..dab6eee43 100644 --- a/langfuse/api/resources/commons/types/score.py +++ b/langfuse/api/resources/commons/types/score.py @@ -204,4 +204,69 @@ class Config: json_encoders = {dt.datetime: serialize_datetime} -Score = typing.Union[Score_Numeric, Score_Categorical, Score_Boolean] +class Score_Correction(pydantic_v1.BaseModel): + value: float + string_value: str = pydantic_v1.Field(alias="stringValue") + id: str + trace_id: typing.Optional[str] = pydantic_v1.Field(alias="traceId", default=None) + session_id: typing.Optional[str] = pydantic_v1.Field( + alias="sessionId", default=None + ) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + dataset_run_id: typing.Optional[str] = pydantic_v1.Field( + alias="datasetRunId", default=None + ) + name: str + source: ScoreSource + timestamp: dt.datetime + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + comment: typing.Optional[str] = None + metadata: typing.Any + config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + environment: str + data_type: typing.Literal["CORRECTION"] = pydantic_v1.Field( + alias="dataType", default="CORRECTION" + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} + + +Score = typing.Union[Score_Numeric, Score_Categorical, Score_Boolean, Score_Correction] diff --git a/langfuse/api/resources/score_v_2/__init__.py b/langfuse/api/resources/score_v_2/__init__.py index 40599eec1..4e333a693 100644 --- a/langfuse/api/resources/score_v_2/__init__.py +++ b/langfuse/api/resources/score_v_2/__init__.py @@ -5,9 +5,11 @@ GetScoresResponseData, GetScoresResponseDataBoolean, GetScoresResponseDataCategorical, + GetScoresResponseDataCorrection, GetScoresResponseDataNumeric, GetScoresResponseData_Boolean, GetScoresResponseData_Categorical, + GetScoresResponseData_Correction, GetScoresResponseData_Numeric, GetScoresResponseTraceData, ) @@ -17,9 +19,11 @@ "GetScoresResponseData", "GetScoresResponseDataBoolean", "GetScoresResponseDataCategorical", + "GetScoresResponseDataCorrection", "GetScoresResponseDataNumeric", "GetScoresResponseData_Boolean", "GetScoresResponseData_Categorical", + "GetScoresResponseData_Correction", "GetScoresResponseData_Numeric", "GetScoresResponseTraceData", ] diff --git a/langfuse/api/resources/score_v_2/types/__init__.py b/langfuse/api/resources/score_v_2/types/__init__.py index 480ed3406..d08e687ef 100644 --- a/langfuse/api/resources/score_v_2/types/__init__.py +++ b/langfuse/api/resources/score_v_2/types/__init__.py @@ -5,10 +5,12 @@ GetScoresResponseData, GetScoresResponseData_Boolean, GetScoresResponseData_Categorical, + GetScoresResponseData_Correction, GetScoresResponseData_Numeric, ) from .get_scores_response_data_boolean import GetScoresResponseDataBoolean from .get_scores_response_data_categorical import GetScoresResponseDataCategorical +from .get_scores_response_data_correction import GetScoresResponseDataCorrection from .get_scores_response_data_numeric import GetScoresResponseDataNumeric from .get_scores_response_trace_data import GetScoresResponseTraceData @@ -17,9 +19,11 @@ "GetScoresResponseData", "GetScoresResponseDataBoolean", "GetScoresResponseDataCategorical", + "GetScoresResponseDataCorrection", "GetScoresResponseDataNumeric", "GetScoresResponseData_Boolean", "GetScoresResponseData_Categorical", + "GetScoresResponseData_Correction", "GetScoresResponseData_Numeric", "GetScoresResponseTraceData", ] diff --git a/langfuse/api/resources/score_v_2/types/get_scores_response_data.py b/langfuse/api/resources/score_v_2/types/get_scores_response_data.py index 965a01c80..4f73fbcae 100644 --- a/langfuse/api/resources/score_v_2/types/get_scores_response_data.py +++ b/langfuse/api/resources/score_v_2/types/get_scores_response_data.py @@ -208,8 +208,75 @@ class Config: json_encoders = {dt.datetime: serialize_datetime} +class GetScoresResponseData_Correction(pydantic_v1.BaseModel): + trace: typing.Optional[GetScoresResponseTraceData] = None + value: float + string_value: str = pydantic_v1.Field(alias="stringValue") + id: str + trace_id: typing.Optional[str] = pydantic_v1.Field(alias="traceId", default=None) + session_id: typing.Optional[str] = pydantic_v1.Field( + alias="sessionId", default=None + ) + observation_id: typing.Optional[str] = pydantic_v1.Field( + alias="observationId", default=None + ) + dataset_run_id: typing.Optional[str] = pydantic_v1.Field( + alias="datasetRunId", default=None + ) + name: str + source: ScoreSource + timestamp: dt.datetime + created_at: dt.datetime = pydantic_v1.Field(alias="createdAt") + updated_at: dt.datetime = pydantic_v1.Field(alias="updatedAt") + author_user_id: typing.Optional[str] = pydantic_v1.Field( + alias="authorUserId", default=None + ) + comment: typing.Optional[str] = None + metadata: typing.Any + config_id: typing.Optional[str] = pydantic_v1.Field(alias="configId", default=None) + queue_id: typing.Optional[str] = pydantic_v1.Field(alias="queueId", default=None) + environment: str + data_type: typing.Literal["CORRECTION"] = pydantic_v1.Field( + alias="dataType", default="CORRECTION" + ) + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime} + + GetScoresResponseData = typing.Union[ GetScoresResponseData_Numeric, GetScoresResponseData_Categorical, GetScoresResponseData_Boolean, + GetScoresResponseData_Correction, ] diff --git a/langfuse/api/resources/score_v_2/types/get_scores_response_data_correction.py b/langfuse/api/resources/score_v_2/types/get_scores_response_data_correction.py new file mode 100644 index 000000000..0c59f29a8 --- /dev/null +++ b/langfuse/api/resources/score_v_2/types/get_scores_response_data_correction.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ....core.datetime_utils import serialize_datetime +from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1 +from ...commons.types.correction_score import CorrectionScore +from .get_scores_response_trace_data import GetScoresResponseTraceData + + +class GetScoresResponseDataCorrection(CorrectionScore): + trace: typing.Optional[GetScoresResponseTraceData] = None + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults_exclude_unset: typing.Any = { + "by_alias": True, + "exclude_unset": True, + **kwargs, + } + kwargs_with_defaults_exclude_none: typing.Any = { + "by_alias": True, + "exclude_none": True, + **kwargs, + } + + return deep_union_pydantic_dicts( + super().dict(**kwargs_with_defaults_exclude_unset), + super().dict(**kwargs_with_defaults_exclude_none), + ) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + populate_by_name = True + extra = pydantic_v1.Extra.allow + json_encoders = {dt.datetime: serialize_datetime}