Skip to content

Commit c438cbb

Browse files
committed
refactor
1 parent 23fa4ec commit c438cbb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+134
-6451
lines changed

langfuse/Sampler.py

Lines changed: 0 additions & 66 deletions
This file was deleted.

langfuse/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
""".. include:: ../README.md"""
22

3-
from .client import Langfuse # noqa
3+
from ._client.attributes import LangfuseOtelSpanAttributes # noqa
4+
from ._client.client import Langfuse # noqa
5+
from ._client.get_client import get_client # noqa
6+
from ._client.observe import observe # noqa
47
from .version import __version__ # noqa
Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@
1414
from datetime import datetime
1515
from typing import Any, Dict, List, Literal, Optional
1616

17+
from langfuse._utils.serializer import EventSerializer
1718
from langfuse.model import PromptClient
19+
from langfuse.types import MapValue, SpanLevel
1820

19-
from ..serializer import EventSerializer
20-
from ..types import MapValue, SpanLevel
2121

22-
23-
class LangfuseSpanAttributes:
22+
class LangfuseOtelSpanAttributes:
2423
# Langfuse-Trace attributes
2524
TRACE_NAME = "langfuse.trace.name"
2625
TRACE_USER_ID = "user.id"
@@ -71,15 +70,15 @@ def create_trace_attributes(
7170
public: Optional[bool] = None,
7271
):
7372
attributes = {
74-
LangfuseSpanAttributes.TRACE_NAME: name,
75-
LangfuseSpanAttributes.TRACE_USER_ID: user_id,
76-
LangfuseSpanAttributes.TRACE_SESSION_ID: session_id,
77-
LangfuseSpanAttributes.VERSION: version,
78-
LangfuseSpanAttributes.RELEASE: release,
79-
LangfuseSpanAttributes.TRACE_INPUT: _serialize(input),
80-
LangfuseSpanAttributes.TRACE_OUTPUT: _serialize(output),
81-
LangfuseSpanAttributes.TRACE_TAGS: tags,
82-
LangfuseSpanAttributes.TRACE_PUBLIC: public,
73+
LangfuseOtelSpanAttributes.TRACE_NAME: name,
74+
LangfuseOtelSpanAttributes.TRACE_USER_ID: user_id,
75+
LangfuseOtelSpanAttributes.TRACE_SESSION_ID: session_id,
76+
LangfuseOtelSpanAttributes.VERSION: version,
77+
LangfuseOtelSpanAttributes.RELEASE: release,
78+
LangfuseOtelSpanAttributes.TRACE_INPUT: _serialize(input),
79+
LangfuseOtelSpanAttributes.TRACE_OUTPUT: _serialize(output),
80+
LangfuseOtelSpanAttributes.TRACE_TAGS: tags,
81+
LangfuseOtelSpanAttributes.TRACE_PUBLIC: public,
8382
**_flatten_and_serialize_metadata(metadata, "trace"),
8483
}
8584

@@ -96,12 +95,12 @@ def create_span_attributes(
9695
version: Optional[str] = None,
9796
):
9897
attributes = {
99-
LangfuseSpanAttributes.OBSERVATION_TYPE: "span",
100-
LangfuseSpanAttributes.OBSERVATION_LEVEL: level,
101-
LangfuseSpanAttributes.OBSERVATION_STATUS_MESSAGE: status_message,
102-
LangfuseSpanAttributes.VERSION: version,
103-
LangfuseSpanAttributes.OBSERVATION_INPUT: _serialize(input),
104-
LangfuseSpanAttributes.OBSERVATION_OUTPUT: _serialize(output),
98+
LangfuseOtelSpanAttributes.OBSERVATION_TYPE: "span",
99+
LangfuseOtelSpanAttributes.OBSERVATION_LEVEL: level,
100+
LangfuseOtelSpanAttributes.OBSERVATION_STATUS_MESSAGE: status_message,
101+
LangfuseOtelSpanAttributes.VERSION: version,
102+
LangfuseOtelSpanAttributes.OBSERVATION_INPUT: _serialize(input),
103+
LangfuseOtelSpanAttributes.OBSERVATION_OUTPUT: _serialize(output),
105104
**_flatten_and_serialize_metadata(metadata, "observation"),
106105
}
107106

@@ -125,25 +124,25 @@ def create_generation_attributes(
125124
prompt: Optional[PromptClient] = None,
126125
):
127126
attributes = {
128-
LangfuseSpanAttributes.OBSERVATION_TYPE: "generation",
129-
LangfuseSpanAttributes.OBSERVATION_LEVEL: level,
130-
LangfuseSpanAttributes.OBSERVATION_STATUS_MESSAGE: status_message,
131-
LangfuseSpanAttributes.VERSION: version,
132-
LangfuseSpanAttributes.OBSERVATION_INPUT: _serialize(input),
133-
LangfuseSpanAttributes.OBSERVATION_OUTPUT: _serialize(output),
134-
LangfuseSpanAttributes.OBSERVATION_MODEL: model,
135-
LangfuseSpanAttributes.OBSERVATION_PROMPT_NAME: prompt.name
127+
LangfuseOtelSpanAttributes.OBSERVATION_TYPE: "generation",
128+
LangfuseOtelSpanAttributes.OBSERVATION_LEVEL: level,
129+
LangfuseOtelSpanAttributes.OBSERVATION_STATUS_MESSAGE: status_message,
130+
LangfuseOtelSpanAttributes.VERSION: version,
131+
LangfuseOtelSpanAttributes.OBSERVATION_INPUT: _serialize(input),
132+
LangfuseOtelSpanAttributes.OBSERVATION_OUTPUT: _serialize(output),
133+
LangfuseOtelSpanAttributes.OBSERVATION_MODEL: model,
134+
LangfuseOtelSpanAttributes.OBSERVATION_PROMPT_NAME: prompt.name
136135
if prompt and not prompt.is_fallback
137136
else None,
138-
LangfuseSpanAttributes.OBSERVATION_PROMPT_VERSION: prompt.version
137+
LangfuseOtelSpanAttributes.OBSERVATION_PROMPT_VERSION: prompt.version
139138
if prompt and not prompt.is_fallback
140139
else None,
141-
LangfuseSpanAttributes.OBSERVATION_USAGE_DETAILS: _serialize(usage_details),
142-
LangfuseSpanAttributes.OBSERVATION_COST_DETAILS: _serialize(cost_details),
143-
LangfuseSpanAttributes.OBSERVATION_COMPLETION_START_TIME: _serialize(
140+
LangfuseOtelSpanAttributes.OBSERVATION_USAGE_DETAILS: _serialize(usage_details),
141+
LangfuseOtelSpanAttributes.OBSERVATION_COST_DETAILS: _serialize(cost_details),
142+
LangfuseOtelSpanAttributes.OBSERVATION_COMPLETION_START_TIME: _serialize(
144143
completion_start_time
145144
),
146-
LangfuseSpanAttributes.OBSERVATION_MODEL_PARAMETERS: _serialize(
145+
LangfuseOtelSpanAttributes.OBSERVATION_MODEL_PARAMETERS: _serialize(
147146
model_parameters
148147
),
149148
**_flatten_and_serialize_metadata(metadata, "observation"),
@@ -160,9 +159,9 @@ def _flatten_and_serialize_metadata(
160159
metadata: Any, type: Literal["observation", "trace"]
161160
):
162161
prefix = (
163-
LangfuseSpanAttributes.OBSERVATION_METADATA
162+
LangfuseOtelSpanAttributes.OBSERVATION_METADATA
164163
if type == "observation"
165-
else LangfuseSpanAttributes.TRACE_METADATA
164+
else LangfuseOtelSpanAttributes.TRACE_METADATA
166165
)
167166

168167
metadata_attributes = {}
Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,25 @@
3131
from opentelemetry.sdk.trace.id_generator import RandomIdGenerator
3232
from opentelemetry.util._decorator import _agnosticcontextmanager
3333

34+
from langfuse._client.attributes import (
35+
LangfuseOtelSpanAttributes,
36+
create_generation_attributes,
37+
create_span_attributes,
38+
)
39+
from langfuse._client.datasets import DatasetClient, DatasetItemClient
40+
from langfuse._client.environment_variables import (
41+
LANGFUSE_DEBUG,
42+
LANGFUSE_HOST,
43+
LANGFUSE_PUBLIC_KEY,
44+
LANGFUSE_SECRET_KEY,
45+
LANGFUSE_TRACING_ENABLED,
46+
LANGFUSE_TRACING_ENVIRONMENT,
47+
)
48+
from langfuse._client.span import LangfuseGeneration, LangfuseSpan
49+
from langfuse._client.tracer import LangfuseTracer
50+
from langfuse._utils import _get_timestamp
51+
from langfuse._utils.parse_error import handle_fern_exception
52+
from langfuse._utils.prompt_cache import PromptCache
3453
from langfuse.api.resources.commons.errors.error import Error
3554
from langfuse.api.resources.ingestion.types.score_body import ScoreBody
3655
from langfuse.api.resources.prompts.types import (
@@ -39,6 +58,8 @@
3958
Prompt_Chat,
4059
Prompt_Text,
4160
)
61+
from langfuse.logger import langfuse_logger
62+
from langfuse.media import LangfuseMedia
4263
from langfuse.model import (
4364
ChatMessageDict,
4465
ChatPromptClient,
@@ -51,29 +72,7 @@
5172
PromptClient,
5273
TextPromptClient,
5374
)
54-
from langfuse.otel._span import LangfuseGeneration, LangfuseSpan
55-
from langfuse.otel.attributes import (
56-
LangfuseSpanAttributes,
57-
create_generation_attributes,
58-
create_span_attributes,
59-
)
60-
from langfuse.otel.environment_variables import (
61-
LANGFUSE_DEBUG,
62-
LANGFUSE_HOST,
63-
LANGFUSE_PUBLIC_KEY,
64-
LANGFUSE_SECRET_KEY,
65-
LANGFUSE_TRACING_ENABLED,
66-
LANGFUSE_TRACING_ENVIRONMENT,
67-
)
68-
from langfuse.parse_error import handle_fern_exception
69-
from langfuse.prompt_cache import PromptCache
70-
from langfuse.utils import _get_timestamp
71-
72-
from ..media import LangfuseMedia
73-
from ..types import MaskFunction, ScoreDataType, SpanLevel, TraceContext
74-
from ._datasets import DatasetClient, DatasetItemClient
75-
from ._logger import langfuse_logger
76-
from ._tracer import LangfuseTracer
75+
from langfuse.types import MaskFunction, ScoreDataType, SpanLevel, TraceContext
7776

7877

7978
class Langfuse:
@@ -290,7 +289,7 @@ def start_span(
290289
cast(otel_trace_api.Span, remote_parent_span)
291290
):
292291
otel_span = self.tracer.start_span(name=name, attributes=attributes)
293-
otel_span.set_attribute(LangfuseSpanAttributes.AS_ROOT, True)
292+
otel_span.set_attribute(LangfuseOtelSpanAttributes.AS_ROOT, True)
294293

295294
return LangfuseSpan(
296295
otel_span=otel_span,
@@ -490,7 +489,7 @@ def start_generation(
490489
cast(otel_trace_api.Span, remote_parent_span)
491490
):
492491
otel_span = self.tracer.start_span(name=name, attributes=attributes)
493-
otel_span.set_attribute(LangfuseSpanAttributes.AS_ROOT, True)
492+
otel_span.set_attribute(LangfuseOtelSpanAttributes.AS_ROOT, True)
494493

495494
return LangfuseGeneration(
496495
otel_span=otel_span,
@@ -649,7 +648,7 @@ def _create_span_with_parent_context(
649648
) as langfuse_span:
650649
if remote_parent_span is not None:
651650
langfuse_span._otel_span.set_attribute(
652-
LangfuseSpanAttributes.AS_ROOT, True
651+
LangfuseOtelSpanAttributes.AS_ROOT, True
653652
)
654653

655654
yield langfuse_span
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
)
1313

1414
if TYPE_CHECKING:
15-
from langfuse.otel import Langfuse
15+
from langfuse._client.client import Langfuse
1616

1717

1818
class DatasetItemClient:
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from typing import Optional
22

3-
from ..otel import Langfuse
4-
from ._logger import langfuse_logger
5-
from ._tracer import LangfuseTracer
3+
from langfuse._client.client import Langfuse
4+
from langfuse._client.tracer import LangfuseTracer
5+
from langfuse.logger import langfuse_logger
66

77

88
def get_client(*, public_key: Optional[str] = None) -> Langfuse:
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
from typing_extensions import ParamSpec
2222

23-
from langfuse.otel._get_client import get_client
24-
from langfuse.otel._span import LangfuseGeneration, LangfuseSpan
23+
from langfuse._client.get_client import get_client
24+
from langfuse._client.span import LangfuseGeneration, LangfuseSpan
2525
from langfuse.types import TraceContext
2626

2727
F = TypeVar("F", bound=Callable[..., Any])
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,16 @@
3232
from langfuse.model import PromptClient
3333

3434
if TYPE_CHECKING:
35-
from langfuse.otel import Langfuse
35+
from langfuse._client.client import Langfuse
3636

37-
from langfuse.otel.attributes import (
38-
LangfuseSpanAttributes,
37+
from langfuse._client.attributes import (
38+
LangfuseOtelSpanAttributes,
3939
create_generation_attributes,
4040
create_span_attributes,
4141
create_trace_attributes,
4242
)
43-
44-
from ..types import MapValue, ScoreDataType, SpanLevel
45-
from ._logger import langfuse_logger
43+
from langfuse.logger import langfuse_logger
44+
from langfuse.types import MapValue, ScoreDataType, SpanLevel
4645

4746

4847
class LangfuseSpanWrapper(ABC):
@@ -80,7 +79,9 @@ def __init__(
8079
metadata: Additional metadata to associate with the span
8180
"""
8281
self._otel_span = otel_span
83-
self._otel_span.set_attribute(LangfuseSpanAttributes.OBSERVATION_TYPE, as_type)
82+
self._otel_span.set_attribute(
83+
LangfuseOtelSpanAttributes.OBSERVATION_TYPE, as_type
84+
)
8485
self._langfuse_client = langfuse_client
8586

8687
self.trace_id = self._langfuse_client._get_otel_trace_id(otel_span)
@@ -103,7 +104,7 @@ def __init__(
103104
output=media_processed_output,
104105
metadata=media_processed_metadata,
105106
)
106-
attributes.pop(LangfuseSpanAttributes.OBSERVATION_TYPE)
107+
attributes.pop(LangfuseOtelSpanAttributes.OBSERVATION_TYPE)
107108

108109
self._otel_span.set_attributes(
109110
{k: v for k, v in attributes.items() if v is not None}

0 commit comments

Comments
 (0)