Skip to content

Commit 244317f

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

File tree

16 files changed

+227
-14
lines changed

16 files changed

+227
-14
lines changed

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: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
CommentObjectType,
8080
ConfigCategory,
8181
CorrectionScore,
82+
CreateScoreDataTypeV1,
8283
CreateScoreValue,
8384
Dataset,
8485
DatasetItem,
@@ -116,8 +117,10 @@
116117
Score_Categorical,
117118
Score_Correction,
118119
Score_Numeric,
120+
Score_Text,
119121
Session,
120122
SessionWithTraces,
123+
TextScore,
121124
Trace,
122125
TraceWithDetails,
123126
TraceWithFullDetails,
@@ -281,10 +284,12 @@
281284
GetScoresResponseDataCategorical,
282285
GetScoresResponseDataCorrection,
283286
GetScoresResponseDataNumeric,
287+
GetScoresResponseDataText,
284288
GetScoresResponseData_Boolean,
285289
GetScoresResponseData_Categorical,
286290
GetScoresResponseData_Correction,
287291
GetScoresResponseData_Numeric,
292+
GetScoresResponseData_Text,
288293
GetScoresResponseTraceData,
289294
)
290295
from .sessions import PaginatedSessions
@@ -347,6 +352,7 @@
347352
"CreateObservationEvent": ".ingestion",
348353
"CreatePromptRequest": ".prompts",
349354
"CreateScoreConfigRequest": ".score_configs",
355+
"CreateScoreDataTypeV1": ".commons",
350356
"CreateScoreValue": ".commons",
351357
"CreateSpanBody": ".ingestion",
352358
"CreateSpanEvent": ".ingestion",
@@ -377,10 +383,12 @@
377383
"GetScoresResponseDataCategorical": ".scores",
378384
"GetScoresResponseDataCorrection": ".scores",
379385
"GetScoresResponseDataNumeric": ".scores",
386+
"GetScoresResponseDataText": ".scores",
380387
"GetScoresResponseData_Boolean": ".scores",
381388
"GetScoresResponseData_Categorical": ".scores",
382389
"GetScoresResponseData_Correction": ".scores",
383390
"GetScoresResponseData_Numeric": ".scores",
391+
"GetScoresResponseData_Text": ".scores",
384392
"GetScoresResponseTraceData": ".scores",
385393
"HealthResponse": ".health",
386394
"IngestionError": ".ingestion",
@@ -493,6 +501,7 @@
493501
"Score_Categorical": ".commons",
494502
"Score_Correction": ".commons",
495503
"Score_Numeric": ".commons",
504+
"Score_Text": ".commons",
496505
"SdkLogBody": ".ingestion",
497506
"SdkLogEvent": ".ingestion",
498507
"ServiceProviderConfig": ".scim",
@@ -501,6 +510,7 @@
501510
"SessionWithTraces": ".commons",
502511
"Sort": ".trace",
503512
"TextPrompt": ".prompts",
513+
"TextScore": ".commons",
504514
"Trace": ".commons",
505515
"TraceBody": ".ingestion",
506516
"TraceEvent": ".ingestion",
@@ -634,6 +644,7 @@ def __dir__():
634644
"CreateObservationEvent",
635645
"CreatePromptRequest",
636646
"CreateScoreConfigRequest",
647+
"CreateScoreDataTypeV1",
637648
"CreateScoreValue",
638649
"CreateSpanBody",
639650
"CreateSpanEvent",
@@ -664,10 +675,12 @@ def __dir__():
664675
"GetScoresResponseDataCategorical",
665676
"GetScoresResponseDataCorrection",
666677
"GetScoresResponseDataNumeric",
678+
"GetScoresResponseDataText",
667679
"GetScoresResponseData_Boolean",
668680
"GetScoresResponseData_Categorical",
669681
"GetScoresResponseData_Correction",
670682
"GetScoresResponseData_Numeric",
683+
"GetScoresResponseData_Text",
671684
"GetScoresResponseTraceData",
672685
"HealthResponse",
673686
"IngestionError",
@@ -780,6 +793,7 @@ def __dir__():
780793
"Score_Categorical",
781794
"Score_Correction",
782795
"Score_Numeric",
796+
"Score_Text",
783797
"SdkLogBody",
784798
"SdkLogEvent",
785799
"ServiceProviderConfig",
@@ -788,6 +802,7 @@ def __dir__():
788802
"SessionWithTraces",
789803
"Sort",
790804
"TextPrompt",
805+
"TextScore",
791806
"Trace",
792807
"TraceBody",
793808
"TraceEvent",

langfuse/api/commons/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
CommentObjectType,
1818
ConfigCategory,
1919
CorrectionScore,
20+
CreateScoreDataTypeV1,
2021
CreateScoreValue,
2122
Dataset,
2223
DatasetItem,
@@ -51,8 +52,10 @@
5152
Score_Categorical,
5253
Score_Correction,
5354
Score_Numeric,
55+
Score_Text,
5456
Session,
5557
SessionWithTraces,
58+
TextScore,
5659
Trace,
5760
TraceWithDetails,
5861
TraceWithFullDetails,
@@ -77,6 +80,7 @@
7780
"CommentObjectType": ".types",
7881
"ConfigCategory": ".types",
7982
"CorrectionScore": ".types",
83+
"CreateScoreDataTypeV1": ".types",
8084
"CreateScoreValue": ".types",
8185
"Dataset": ".types",
8286
"DatasetItem": ".types",
@@ -114,8 +118,10 @@
114118
"Score_Categorical": ".types",
115119
"Score_Correction": ".types",
116120
"Score_Numeric": ".types",
121+
"Score_Text": ".types",
117122
"Session": ".types",
118123
"SessionWithTraces": ".types",
124+
"TextScore": ".types",
119125
"Trace": ".types",
120126
"TraceWithDetails": ".types",
121127
"TraceWithFullDetails": ".types",
@@ -163,6 +169,7 @@ def __dir__():
163169
"CommentObjectType",
164170
"ConfigCategory",
165171
"CorrectionScore",
172+
"CreateScoreDataTypeV1",
166173
"CreateScoreValue",
167174
"Dataset",
168175
"DatasetItem",
@@ -200,8 +207,10 @@ def __dir__():
200207
"Score_Categorical",
201208
"Score_Correction",
202209
"Score_Numeric",
210+
"Score_Text",
203211
"Session",
204212
"SessionWithTraces",
213+
"TextScore",
205214
"Trace",
206215
"TraceWithDetails",
207216
"TraceWithFullDetails",

langfuse/api/commons/types/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .comment_object_type import CommentObjectType
1717
from .config_category import ConfigCategory
1818
from .correction_score import CorrectionScore
19+
from .create_score_data_type_v1 import CreateScoreDataTypeV1
1920
from .create_score_value import CreateScoreValue
2021
from .dataset import Dataset
2122
from .dataset_item import DatasetItem
@@ -43,6 +44,7 @@
4344
Score_Categorical,
4445
Score_Correction,
4546
Score_Numeric,
47+
Score_Text,
4648
)
4749
from .score_config import ScoreConfig
4850
from .score_config_data_type import ScoreConfigDataType
@@ -51,6 +53,7 @@
5153
from .score_v1 import ScoreV1, ScoreV1_Boolean, ScoreV1_Categorical, ScoreV1_Numeric
5254
from .session import Session
5355
from .session_with_traces import SessionWithTraces
56+
from .text_score import TextScore
5457
from .trace import Trace
5558
from .trace_with_details import TraceWithDetails
5659
from .trace_with_full_details import TraceWithFullDetails
@@ -66,6 +69,7 @@
6669
"CommentObjectType": ".comment_object_type",
6770
"ConfigCategory": ".config_category",
6871
"CorrectionScore": ".correction_score",
72+
"CreateScoreDataTypeV1": ".create_score_data_type_v1",
6973
"CreateScoreValue": ".create_score_value",
7074
"Dataset": ".dataset",
7175
"DatasetItem": ".dataset_item",
@@ -100,8 +104,10 @@
100104
"Score_Categorical": ".score",
101105
"Score_Correction": ".score",
102106
"Score_Numeric": ".score",
107+
"Score_Text": ".score",
103108
"Session": ".session",
104109
"SessionWithTraces": ".session_with_traces",
110+
"TextScore": ".text_score",
105111
"Trace": ".trace",
106112
"TraceWithDetails": ".trace_with_details",
107113
"TraceWithFullDetails": ".trace_with_full_details",
@@ -147,6 +153,7 @@ def __dir__():
147153
"CommentObjectType",
148154
"ConfigCategory",
149155
"CorrectionScore",
156+
"CreateScoreDataTypeV1",
150157
"CreateScoreValue",
151158
"Dataset",
152159
"DatasetItem",
@@ -181,8 +188,10 @@ def __dir__():
181188
"Score_Categorical",
182189
"Score_Correction",
183190
"Score_Numeric",
191+
"Score_Text",
184192
"Session",
185193
"SessionWithTraces",
194+
"TextScore",
186195
"Trace",
187196
"TraceWithDetails",
188197
"TraceWithFullDetails",
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
import typing
4+
5+
from ...core import enum
6+
7+
T_Result = typing.TypeVar("T_Result")
8+
9+
10+
class CreateScoreDataTypeV1(enum.StrEnum):
11+
NUMERIC = "NUMERIC"
12+
BOOLEAN = "BOOLEAN"
13+
CATEGORICAL = "CATEGORICAL"
14+
CORRECTION = "CORRECTION"
15+
16+
def visit(
17+
self,
18+
numeric: typing.Callable[[], T_Result],
19+
boolean: typing.Callable[[], T_Result],
20+
categorical: typing.Callable[[], T_Result],
21+
correction: typing.Callable[[], T_Result],
22+
) -> T_Result:
23+
if self is CreateScoreDataTypeV1.NUMERIC:
24+
return numeric()
25+
if self is CreateScoreDataTypeV1.BOOLEAN:
26+
return boolean()
27+
if self is CreateScoreDataTypeV1.CATEGORICAL:
28+
return categorical()
29+
if self is CreateScoreDataTypeV1.CORRECTION:
30+
return correction()

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+
)

0 commit comments

Comments
 (0)