Skip to content

Commit 3139c86

Browse files
committed
feat(scores): add support for TEXT scores
1 parent b680136 commit 3139c86

12 files changed

Lines changed: 176 additions & 2 deletions

langfuse/api/.fern/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"cliVersion": "3.30.3",
2+
"cliVersion": "3.88.0",
33
"generatorName": "fernapi/fern-python-sdk",
44
"generatorVersion": "4.46.2",
55
"generatorConfig": {

langfuse/api/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,10 @@
116116
Score_Categorical,
117117
Score_Correction,
118118
Score_Numeric,
119+
Score_Text,
119120
Session,
120121
SessionWithTraces,
122+
TextScore,
121123
Trace,
122124
TraceWithDetails,
123125
TraceWithFullDetails,
@@ -281,10 +283,12 @@
281283
GetScoresResponseDataCategorical,
282284
GetScoresResponseDataCorrection,
283285
GetScoresResponseDataNumeric,
286+
GetScoresResponseDataText,
284287
GetScoresResponseData_Boolean,
285288
GetScoresResponseData_Categorical,
286289
GetScoresResponseData_Correction,
287290
GetScoresResponseData_Numeric,
291+
GetScoresResponseData_Text,
288292
GetScoresResponseTraceData,
289293
)
290294
from .sessions import PaginatedSessions
@@ -377,10 +381,12 @@
377381
"GetScoresResponseDataCategorical": ".scores",
378382
"GetScoresResponseDataCorrection": ".scores",
379383
"GetScoresResponseDataNumeric": ".scores",
384+
"GetScoresResponseDataText": ".scores",
380385
"GetScoresResponseData_Boolean": ".scores",
381386
"GetScoresResponseData_Categorical": ".scores",
382387
"GetScoresResponseData_Correction": ".scores",
383388
"GetScoresResponseData_Numeric": ".scores",
389+
"GetScoresResponseData_Text": ".scores",
384390
"GetScoresResponseTraceData": ".scores",
385391
"HealthResponse": ".health",
386392
"IngestionError": ".ingestion",
@@ -493,6 +499,7 @@
493499
"Score_Categorical": ".commons",
494500
"Score_Correction": ".commons",
495501
"Score_Numeric": ".commons",
502+
"Score_Text": ".commons",
496503
"SdkLogBody": ".ingestion",
497504
"SdkLogEvent": ".ingestion",
498505
"ServiceProviderConfig": ".scim",
@@ -501,6 +508,7 @@
501508
"SessionWithTraces": ".commons",
502509
"Sort": ".trace",
503510
"TextPrompt": ".prompts",
511+
"TextScore": ".commons",
504512
"Trace": ".commons",
505513
"TraceBody": ".ingestion",
506514
"TraceEvent": ".ingestion",
@@ -664,10 +672,12 @@ def __dir__():
664672
"GetScoresResponseDataCategorical",
665673
"GetScoresResponseDataCorrection",
666674
"GetScoresResponseDataNumeric",
675+
"GetScoresResponseDataText",
667676
"GetScoresResponseData_Boolean",
668677
"GetScoresResponseData_Categorical",
669678
"GetScoresResponseData_Correction",
670679
"GetScoresResponseData_Numeric",
680+
"GetScoresResponseData_Text",
671681
"GetScoresResponseTraceData",
672682
"HealthResponse",
673683
"IngestionError",
@@ -780,6 +790,7 @@ def __dir__():
780790
"Score_Categorical",
781791
"Score_Correction",
782792
"Score_Numeric",
793+
"Score_Text",
783794
"SdkLogBody",
784795
"SdkLogEvent",
785796
"ServiceProviderConfig",
@@ -788,6 +799,7 @@ def __dir__():
788799
"SessionWithTraces",
789800
"Sort",
790801
"TextPrompt",
802+
"TextScore",
791803
"Trace",
792804
"TraceBody",
793805
"TraceEvent",

langfuse/api/commons/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@
5151
Score_Categorical,
5252
Score_Correction,
5353
Score_Numeric,
54+
Score_Text,
5455
Session,
5556
SessionWithTraces,
57+
TextScore,
5658
Trace,
5759
TraceWithDetails,
5860
TraceWithFullDetails,
@@ -114,8 +116,10 @@
114116
"Score_Categorical": ".types",
115117
"Score_Correction": ".types",
116118
"Score_Numeric": ".types",
119+
"Score_Text": ".types",
117120
"Session": ".types",
118121
"SessionWithTraces": ".types",
122+
"TextScore": ".types",
119123
"Trace": ".types",
120124
"TraceWithDetails": ".types",
121125
"TraceWithFullDetails": ".types",
@@ -200,8 +204,10 @@ def __dir__():
200204
"Score_Categorical",
201205
"Score_Correction",
202206
"Score_Numeric",
207+
"Score_Text",
203208
"Session",
204209
"SessionWithTraces",
210+
"TextScore",
205211
"Trace",
206212
"TraceWithDetails",
207213
"TraceWithFullDetails",

langfuse/api/commons/types/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
Score_Categorical,
4444
Score_Correction,
4545
Score_Numeric,
46+
Score_Text,
4647
)
4748
from .score_config import ScoreConfig
4849
from .score_config_data_type import ScoreConfigDataType
@@ -51,6 +52,7 @@
5152
from .score_v1 import ScoreV1, ScoreV1_Boolean, ScoreV1_Categorical, ScoreV1_Numeric
5253
from .session import Session
5354
from .session_with_traces import SessionWithTraces
55+
from .text_score import TextScore
5456
from .trace import Trace
5557
from .trace_with_details import TraceWithDetails
5658
from .trace_with_full_details import TraceWithFullDetails
@@ -100,8 +102,10 @@
100102
"Score_Categorical": ".score",
101103
"Score_Correction": ".score",
102104
"Score_Numeric": ".score",
105+
"Score_Text": ".score",
103106
"Session": ".session",
104107
"SessionWithTraces": ".session_with_traces",
108+
"TextScore": ".text_score",
105109
"Trace": ".trace",
106110
"TraceWithDetails": ".trace_with_details",
107111
"TraceWithFullDetails": ".trace_with_full_details",
@@ -181,8 +185,10 @@ def __dir__():
181185
"Score_Categorical",
182186
"Score_Correction",
183187
"Score_Numeric",
188+
"Score_Text",
184189
"Session",
185190
"SessionWithTraces",
191+
"TextScore",
186192
"Trace",
187193
"TraceWithDetails",
188194
"TraceWithFullDetails",

langfuse/api/commons/types/score.py

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,54 @@ class Score_Correction(UniversalBaseModel):
195195
)
196196

197197

198+
class Score_Text(UniversalBaseModel):
199+
data_type: typing_extensions.Annotated[
200+
typing.Literal["TEXT"], FieldMetadata(alias="dataType")
201+
] = "TEXT"
202+
string_value: typing_extensions.Annotated[str, FieldMetadata(alias="stringValue")]
203+
id: str
204+
trace_id: typing_extensions.Annotated[
205+
typing.Optional[str], FieldMetadata(alias="traceId")
206+
] = None
207+
session_id: typing_extensions.Annotated[
208+
typing.Optional[str], FieldMetadata(alias="sessionId")
209+
] = None
210+
observation_id: typing_extensions.Annotated[
211+
typing.Optional[str], FieldMetadata(alias="observationId")
212+
] = None
213+
dataset_run_id: typing_extensions.Annotated[
214+
typing.Optional[str], FieldMetadata(alias="datasetRunId")
215+
] = None
216+
name: str
217+
source: ScoreSource
218+
timestamp: dt.datetime
219+
created_at: typing_extensions.Annotated[
220+
dt.datetime, FieldMetadata(alias="createdAt")
221+
]
222+
updated_at: typing_extensions.Annotated[
223+
dt.datetime, FieldMetadata(alias="updatedAt")
224+
]
225+
author_user_id: typing_extensions.Annotated[
226+
typing.Optional[str], FieldMetadata(alias="authorUserId")
227+
] = None
228+
comment: typing.Optional[str] = None
229+
metadata: typing.Any
230+
config_id: typing_extensions.Annotated[
231+
typing.Optional[str], FieldMetadata(alias="configId")
232+
] = None
233+
queue_id: typing_extensions.Annotated[
234+
typing.Optional[str], FieldMetadata(alias="queueId")
235+
] = None
236+
environment: str
237+
238+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
239+
extra="allow", frozen=True
240+
)
241+
242+
198243
Score = typing_extensions.Annotated[
199-
typing.Union[Score_Numeric, Score_Categorical, Score_Boolean, Score_Correction],
244+
typing.Union[
245+
Score_Numeric, Score_Categorical, Score_Boolean, Score_Correction, Score_Text
246+
],
200247
pydantic.Field(discriminator="data_type"),
201248
]

langfuse/api/commons/types/score_config_data_type.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@ class ScoreConfigDataType(enum.StrEnum):
1111
NUMERIC = "NUMERIC"
1212
BOOLEAN = "BOOLEAN"
1313
CATEGORICAL = "CATEGORICAL"
14+
TEXT = "TEXT"
1415

1516
def visit(
1617
self,
1718
numeric: typing.Callable[[], T_Result],
1819
boolean: typing.Callable[[], T_Result],
1920
categorical: typing.Callable[[], T_Result],
21+
text: typing.Callable[[], T_Result],
2022
) -> T_Result:
2123
if self is ScoreConfigDataType.NUMERIC:
2224
return numeric()
2325
if self is ScoreConfigDataType.BOOLEAN:
2426
return boolean()
2527
if self is ScoreConfigDataType.CATEGORICAL:
2628
return categorical()
29+
if self is ScoreConfigDataType.TEXT:
30+
return text()

langfuse/api/commons/types/score_data_type.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ class ScoreDataType(enum.StrEnum):
1212
BOOLEAN = "BOOLEAN"
1313
CATEGORICAL = "CATEGORICAL"
1414
CORRECTION = "CORRECTION"
15+
TEXT = "TEXT"
1516

1617
def visit(
1718
self,
1819
numeric: typing.Callable[[], T_Result],
1920
boolean: typing.Callable[[], T_Result],
2021
categorical: typing.Callable[[], T_Result],
2122
correction: typing.Callable[[], T_Result],
23+
text: typing.Callable[[], T_Result],
2224
) -> T_Result:
2325
if self is ScoreDataType.NUMERIC:
2426
return numeric()
@@ -28,3 +30,5 @@ def visit(
2830
return categorical()
2931
if self is ScoreDataType.CORRECTION:
3032
return correction()
33+
if self is ScoreDataType.TEXT:
34+
return text()
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
import typing
4+
5+
import pydantic
6+
import typing_extensions
7+
from ...core.serialization import FieldMetadata
8+
from .base_score import BaseScore
9+
10+
11+
class TextScore(BaseScore):
12+
string_value: typing_extensions.Annotated[
13+
str, FieldMetadata(alias="stringValue")
14+
] = pydantic.Field()
15+
"""
16+
The text content of the score (1-500 characters)
17+
"""
18+
19+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
20+
extra="allow", frozen=True
21+
)

langfuse/api/scores/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
GetScoresResponseDataCategorical,
1414
GetScoresResponseDataCorrection,
1515
GetScoresResponseDataNumeric,
16+
GetScoresResponseDataText,
1617
GetScoresResponseData_Boolean,
1718
GetScoresResponseData_Categorical,
1819
GetScoresResponseData_Correction,
1920
GetScoresResponseData_Numeric,
21+
GetScoresResponseData_Text,
2022
GetScoresResponseTraceData,
2123
)
2224
_dynamic_imports: typing.Dict[str, str] = {
@@ -26,10 +28,12 @@
2628
"GetScoresResponseDataCategorical": ".types",
2729
"GetScoresResponseDataCorrection": ".types",
2830
"GetScoresResponseDataNumeric": ".types",
31+
"GetScoresResponseDataText": ".types",
2932
"GetScoresResponseData_Boolean": ".types",
3033
"GetScoresResponseData_Categorical": ".types",
3134
"GetScoresResponseData_Correction": ".types",
3235
"GetScoresResponseData_Numeric": ".types",
36+
"GetScoresResponseData_Text": ".types",
3337
"GetScoresResponseTraceData": ".types",
3438
}
3539

@@ -68,9 +72,11 @@ def __dir__():
6872
"GetScoresResponseDataCategorical",
6973
"GetScoresResponseDataCorrection",
7074
"GetScoresResponseDataNumeric",
75+
"GetScoresResponseDataText",
7176
"GetScoresResponseData_Boolean",
7277
"GetScoresResponseData_Categorical",
7378
"GetScoresResponseData_Correction",
7479
"GetScoresResponseData_Numeric",
80+
"GetScoresResponseData_Text",
7581
"GetScoresResponseTraceData",
7682
]

langfuse/api/scores/types/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
GetScoresResponseData_Categorical,
1414
GetScoresResponseData_Correction,
1515
GetScoresResponseData_Numeric,
16+
GetScoresResponseData_Text,
1617
)
1718
from .get_scores_response_data_boolean import GetScoresResponseDataBoolean
1819
from .get_scores_response_data_categorical import GetScoresResponseDataCategorical
1920
from .get_scores_response_data_correction import GetScoresResponseDataCorrection
2021
from .get_scores_response_data_numeric import GetScoresResponseDataNumeric
22+
from .get_scores_response_data_text import GetScoresResponseDataText
2123
from .get_scores_response_trace_data import GetScoresResponseTraceData
2224
_dynamic_imports: typing.Dict[str, str] = {
2325
"GetScoresResponse": ".get_scores_response",
@@ -26,10 +28,12 @@
2628
"GetScoresResponseDataCategorical": ".get_scores_response_data_categorical",
2729
"GetScoresResponseDataCorrection": ".get_scores_response_data_correction",
2830
"GetScoresResponseDataNumeric": ".get_scores_response_data_numeric",
31+
"GetScoresResponseDataText": ".get_scores_response_data_text",
2932
"GetScoresResponseData_Boolean": ".get_scores_response_data",
3033
"GetScoresResponseData_Categorical": ".get_scores_response_data",
3134
"GetScoresResponseData_Correction": ".get_scores_response_data",
3235
"GetScoresResponseData_Numeric": ".get_scores_response_data",
36+
"GetScoresResponseData_Text": ".get_scores_response_data",
3337
"GetScoresResponseTraceData": ".get_scores_response_trace_data",
3438
}
3539

@@ -68,9 +72,11 @@ def __dir__():
6872
"GetScoresResponseDataCategorical",
6973
"GetScoresResponseDataCorrection",
7074
"GetScoresResponseDataNumeric",
75+
"GetScoresResponseDataText",
7176
"GetScoresResponseData_Boolean",
7277
"GetScoresResponseData_Categorical",
7378
"GetScoresResponseData_Correction",
7479
"GetScoresResponseData_Numeric",
80+
"GetScoresResponseData_Text",
7581
"GetScoresResponseTraceData",
7682
]

0 commit comments

Comments
 (0)