Skip to content

Commit 4130ef4

Browse files
committed
push
1 parent a7c98a2 commit 4130ef4

3 files changed

Lines changed: 10 additions & 76 deletions

File tree

langfuse/_client/client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,14 +2055,14 @@ def create_score(
20552055
new_body = ScoreBody(
20562056
id=score_id,
20572057
session_id=session_id,
2058-
dataset_run_id=dataset_run_id,
2059-
trace_id=trace_id,
2058+
datasetRunId=dataset_run_id,
2059+
traceId=trace_id,
20602060
observation_id=observation_id,
20612061
name=name,
20622062
value=value,
20632063
dataType=data_type, # type: ignore
20642064
comment=comment,
2065-
config_id=config_id,
2065+
configId=config_id,
20662066
environment=self._environment,
20672067
metadata=metadata,
20682068
)

langfuse/_task_manager/score_ingestion_consumer.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,19 @@
77
from typing import Any, List, Optional
88

99
import backoff
10-
11-
from ..version import __version__ as langfuse_version
12-
13-
try:
14-
import pydantic.v1 as pydantic
15-
except ImportError:
16-
import pydantic # type: ignore
10+
from pydantic import BaseModel
1711

1812
from langfuse._utils.parse_error import handle_exception
1913
from langfuse._utils.request import APIError, LangfuseClient
2014
from langfuse._utils.serializer import EventSerializer
2115

16+
from ..version import __version__ as langfuse_version
17+
2218
MAX_EVENT_SIZE_BYTES = int(os.environ.get("LANGFUSE_MAX_EVENT_SIZE_BYTES", 1_000_000))
2319
MAX_BATCH_SIZE_BYTES = int(os.environ.get("LANGFUSE_MAX_BATCH_SIZE_BYTES", 2_500_000))
2420

2521

26-
class ScoreIngestionMetadata(pydantic.BaseModel):
22+
class ScoreIngestionMetadata(BaseModel):
2723
batch_size: int
2824
sdk_name: str
2925
sdk_version: str
@@ -78,8 +74,8 @@ def _next(self) -> list:
7874
)
7975

8076
# convert pydantic models to dicts
81-
if "body" in event and isinstance(event["body"], pydantic.BaseModel):
82-
event["body"] = event["body"].dict(exclude_none=True)
77+
if "body" in event and isinstance(event["body"], BaseModel):
78+
event["body"] = event["body"].model_dump(exclude_none=True)
8379

8480
item_size = self._get_item_size(event)
8581

@@ -156,7 +152,7 @@ def _upload_batch(self, batch: List[Any]) -> None:
156152
sdk_name="python",
157153
sdk_version=langfuse_version,
158154
public_key=self._public_key,
159-
).dict()
155+
).model_dump()
160156

161157
@backoff.on_exception(
162158
backoff.expo, Exception, max_tries=self._max_retries, logger=None

tests/utils.py

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
import base64
22
import os
3-
import typing
43
from time import sleep
54
from uuid import uuid4
65

7-
try:
8-
import pydantic.v1 as pydantic # type: ignore
9-
except ImportError:
10-
import pydantic # type: ignore
11-
126
from langfuse.api import LangfuseAPI
137

148

@@ -26,62 +20,6 @@ def get_api():
2620
)
2721

2822

29-
class LlmUsageWithCost(pydantic.BaseModel):
30-
prompt_tokens: typing.Optional[int] = pydantic.Field(
31-
alias="promptTokens", default=None
32-
)
33-
completion_tokens: typing.Optional[int] = pydantic.Field(
34-
alias="completionTokens", default=None
35-
)
36-
total_tokens: typing.Optional[int] = pydantic.Field(
37-
alias="totalTokens", default=None
38-
)
39-
input_cost: typing.Optional[float] = pydantic.Field(alias="inputCost", default=None)
40-
output_cost: typing.Optional[float] = pydantic.Field(
41-
alias="outputCost", default=None
42-
)
43-
total_cost: typing.Optional[float] = pydantic.Field(alias="totalCost", default=None)
44-
45-
46-
class CompletionUsage(pydantic.BaseModel):
47-
completion_tokens: int
48-
"""Number of tokens in the generated completion."""
49-
50-
prompt_tokens: int
51-
"""Number of tokens in the prompt."""
52-
53-
total_tokens: int
54-
"""Total number of tokens used in the request (prompt + completion)."""
55-
56-
57-
class LlmUsage(pydantic.BaseModel):
58-
prompt_tokens: typing.Optional[int] = pydantic.Field(
59-
alias="promptTokens", default=None
60-
)
61-
completion_tokens: typing.Optional[int] = pydantic.Field(
62-
alias="completionTokens", default=None
63-
)
64-
total_tokens: typing.Optional[int] = pydantic.Field(
65-
alias="totalTokens", default=None
66-
)
67-
68-
def json(self, **kwargs: typing.Any) -> str:
69-
kwargs_with_defaults: typing.Any = {
70-
"by_alias": True,
71-
"exclude_unset": True,
72-
**kwargs,
73-
}
74-
return super().json(**kwargs_with_defaults)
75-
76-
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
77-
kwargs_with_defaults: typing.Any = {
78-
"by_alias": True,
79-
"exclude_unset": True,
80-
**kwargs,
81-
}
82-
return super().dict(**kwargs_with_defaults)
83-
84-
8523
def encode_file_to_base64(image_path) -> str:
8624
with open(image_path, "rb") as file:
8725
return base64.b64encode(file.read()).decode("utf-8")

0 commit comments

Comments
 (0)