Skip to content

Commit a7c98a2

Browse files
committed
push
1 parent 5114fa4 commit a7c98a2

25 files changed

Lines changed: 2462 additions & 183 deletions

langfuse/_client/client.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@
7979
from langfuse._utils.parse_error import handle_fern_exception
8080
from langfuse._utils.prompt_cache import PromptCache
8181
from langfuse.api import (
82-
CreatePromptRequest_Chat,
83-
CreatePromptRequest_Text,
82+
CreateChatPromptRequest,
83+
CreateTextPromptRequest,
8484
Dataset,
8585
DatasetItem,
8686
DatasetStatus,
@@ -3702,8 +3702,8 @@ def create_prompt(
37023702
raise ValueError(
37033703
"For 'chat' type, 'prompt' must be a list of chat messages with role and content attributes."
37043704
)
3705-
request: Union[CreatePromptRequest_Chat, CreatePromptRequest_Text] = (
3706-
CreatePromptRequest_Chat(
3705+
request: Union[CreateChatPromptRequest, CreateTextPromptRequest] = (
3706+
CreateChatPromptRequest(
37073707
name=name,
37083708
prompt=cast(Any, prompt),
37093709
labels=labels,
@@ -3723,14 +3723,13 @@ def create_prompt(
37233723
if not isinstance(prompt, str):
37243724
raise ValueError("For 'text' type, 'prompt' must be a string.")
37253725

3726-
request = CreatePromptRequest_Text(
3726+
request = CreateTextPromptRequest(
37273727
name=name,
37283728
prompt=prompt,
37293729
labels=labels,
37303730
tags=tags,
37313731
config=config or {},
37323732
commit_message=commit_message,
3733-
type="text",
37343733
)
37353734

37363735
server_prompt = self.api.prompts.create(request=request)

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.24.3",
2+
"cliVersion": "3.30.3",
33
"generatorName": "fernapi/fern-python-sdk",
44
"generatorVersion": "4.46.2",
55
"generatorConfig": {

langfuse/api/__init__.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
llm_connections,
2020
media,
2121
metrics,
22+
metrics_v2,
2223
models,
2324
observations,
25+
observations_v2,
2426
opentelemetry,
2527
organizations,
2628
projects,
@@ -189,8 +191,10 @@
189191
PatchMediaBody,
190192
)
191193
from .metrics import MetricsResponse
194+
from .metrics_v2 import MetricsV2Response
192195
from .models import CreateModelRequest, PaginatedModels
193196
from .observations import Observations, ObservationsViews
197+
from .observations_v2 import ObservationsV2Meta, ObservationsV2Response
194198
from .opentelemetry import (
195199
OtelAttribute,
196200
OtelAttributeValue,
@@ -226,14 +230,12 @@
226230
BasePrompt,
227231
ChatMessage,
228232
ChatMessageWithPlaceholders,
229-
ChatMessageWithPlaceholders_Chatmessage,
230-
ChatMessageWithPlaceholders_Placeholder,
231233
ChatPrompt,
232234
CreateChatPromptRequest,
235+
CreateChatPromptType,
233236
CreatePromptRequest,
234-
CreatePromptRequest_Chat,
235-
CreatePromptRequest_Text,
236237
CreateTextPromptRequest,
238+
CreateTextPromptType,
237239
PlaceholderMessage,
238240
Prompt,
239241
PromptMeta,
@@ -312,8 +314,6 @@
312314
"CategoricalScoreV1": ".commons",
313315
"ChatMessage": ".prompts",
314316
"ChatMessageWithPlaceholders": ".prompts",
315-
"ChatMessageWithPlaceholders_Chatmessage": ".prompts",
316-
"ChatMessageWithPlaceholders_Placeholder": ".prompts",
317317
"ChatPrompt": ".prompts",
318318
"Comment": ".commons",
319319
"CommentObjectType": ".commons",
@@ -323,6 +323,7 @@
323323
"CreateAnnotationQueueRequest": ".annotation_queues",
324324
"CreateBlobStorageIntegrationRequest": ".blob_storage_integrations",
325325
"CreateChatPromptRequest": ".prompts",
326+
"CreateChatPromptType": ".prompts",
326327
"CreateCommentRequest": ".comments",
327328
"CreateCommentResponse": ".comments",
328329
"CreateDatasetItemRequest": ".dataset_items",
@@ -335,15 +336,14 @@
335336
"CreateModelRequest": ".models",
336337
"CreateObservationEvent": ".ingestion",
337338
"CreatePromptRequest": ".prompts",
338-
"CreatePromptRequest_Chat": ".prompts",
339-
"CreatePromptRequest_Text": ".prompts",
340339
"CreateScoreConfigRequest": ".score_configs",
341340
"CreateScoreRequest": ".score",
342341
"CreateScoreResponse": ".score",
343342
"CreateScoreValue": ".commons",
344343
"CreateSpanBody": ".ingestion",
345344
"CreateSpanEvent": ".ingestion",
346345
"CreateTextPromptRequest": ".prompts",
346+
"CreateTextPromptType": ".prompts",
347347
"Dataset": ".commons",
348348
"DatasetItem": ".commons",
349349
"DatasetRun": ".commons",
@@ -400,6 +400,7 @@
400400
"MembershipsResponse": ".organizations",
401401
"MethodNotAllowedError": ".commons",
402402
"MetricsResponse": ".metrics",
403+
"MetricsV2Response": ".metrics_v2",
403404
"Model": ".commons",
404405
"ModelPrice": ".commons",
405406
"ModelUsageUnit": ".commons",
@@ -411,6 +412,8 @@
411412
"ObservationLevel": ".commons",
412413
"ObservationType": ".ingestion",
413414
"Observations": ".observations",
415+
"ObservationsV2Meta": ".observations_v2",
416+
"ObservationsV2Response": ".observations_v2",
414417
"ObservationsView": ".commons",
415418
"ObservationsViews": ".observations",
416419
"OpenAiCompletionUsageSchema": ".ingestion",
@@ -517,8 +520,10 @@
517520
"llm_connections": ".llm_connections",
518521
"media": ".media",
519522
"metrics": ".metrics",
523+
"metrics_v2": ".metrics_v2",
520524
"models": ".models",
521525
"observations": ".observations",
526+
"observations_v2": ".observations_v2",
522527
"opentelemetry": ".opentelemetry",
523528
"organizations": ".organizations",
524529
"projects": ".projects",
@@ -592,8 +597,6 @@ def __dir__():
592597
"CategoricalScoreV1",
593598
"ChatMessage",
594599
"ChatMessageWithPlaceholders",
595-
"ChatMessageWithPlaceholders_Chatmessage",
596-
"ChatMessageWithPlaceholders_Placeholder",
597600
"ChatPrompt",
598601
"Comment",
599602
"CommentObjectType",
@@ -603,6 +606,7 @@ def __dir__():
603606
"CreateAnnotationQueueRequest",
604607
"CreateBlobStorageIntegrationRequest",
605608
"CreateChatPromptRequest",
609+
"CreateChatPromptType",
606610
"CreateCommentRequest",
607611
"CreateCommentResponse",
608612
"CreateDatasetItemRequest",
@@ -615,15 +619,14 @@ def __dir__():
615619
"CreateModelRequest",
616620
"CreateObservationEvent",
617621
"CreatePromptRequest",
618-
"CreatePromptRequest_Chat",
619-
"CreatePromptRequest_Text",
620622
"CreateScoreConfigRequest",
621623
"CreateScoreRequest",
622624
"CreateScoreResponse",
623625
"CreateScoreValue",
624626
"CreateSpanBody",
625627
"CreateSpanEvent",
626628
"CreateTextPromptRequest",
629+
"CreateTextPromptType",
627630
"Dataset",
628631
"DatasetItem",
629632
"DatasetRun",
@@ -680,6 +683,7 @@ def __dir__():
680683
"MembershipsResponse",
681684
"MethodNotAllowedError",
682685
"MetricsResponse",
686+
"MetricsV2Response",
683687
"Model",
684688
"ModelPrice",
685689
"ModelUsageUnit",
@@ -691,6 +695,8 @@ def __dir__():
691695
"ObservationLevel",
692696
"ObservationType",
693697
"Observations",
698+
"ObservationsV2Meta",
699+
"ObservationsV2Response",
694700
"ObservationsView",
695701
"ObservationsViews",
696702
"OpenAiCompletionUsageSchema",
@@ -797,8 +803,10 @@ def __dir__():
797803
"llm_connections",
798804
"media",
799805
"metrics",
806+
"metrics_v2",
800807
"models",
801808
"observations",
809+
"observations_v2",
802810
"opentelemetry",
803811
"organizations",
804812
"projects",

langfuse/api/client.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828
from .llm_connections.client import AsyncLlmConnectionsClient, LlmConnectionsClient
2929
from .media.client import AsyncMediaClient, MediaClient
3030
from .metrics.client import AsyncMetricsClient, MetricsClient
31+
from .metrics_v2.client import AsyncMetricsV2Client, MetricsV2Client
3132
from .models.client import AsyncModelsClient, ModelsClient
3233
from .observations.client import AsyncObservationsClient, ObservationsClient
34+
from .observations_v2.client import AsyncObservationsV2Client, ObservationsV2Client
3335
from .opentelemetry.client import AsyncOpentelemetryClient, OpentelemetryClient
3436
from .organizations.client import AsyncOrganizationsClient, OrganizationsClient
3537
from .projects.client import AsyncProjectsClient, ProjectsClient
@@ -133,8 +135,10 @@ def __init__(
133135
self._ingestion: typing.Optional[IngestionClient] = None
134136
self._llm_connections: typing.Optional[LlmConnectionsClient] = None
135137
self._media: typing.Optional[MediaClient] = None
138+
self._metrics_v2: typing.Optional[MetricsV2Client] = None
136139
self._metrics: typing.Optional[MetricsClient] = None
137140
self._models: typing.Optional[ModelsClient] = None
141+
self._observations_v2: typing.Optional[ObservationsV2Client] = None
138142
self._observations: typing.Optional[ObservationsClient] = None
139143
self._opentelemetry: typing.Optional[OpentelemetryClient] = None
140144
self._organizations: typing.Optional[OrganizationsClient] = None
@@ -238,6 +242,14 @@ def media(self):
238242
self._media = MediaClient(client_wrapper=self._client_wrapper)
239243
return self._media
240244

245+
@property
246+
def metrics_v2(self):
247+
if self._metrics_v2 is None:
248+
from .metrics_v2.client import MetricsV2Client # noqa: E402
249+
250+
self._metrics_v2 = MetricsV2Client(client_wrapper=self._client_wrapper)
251+
return self._metrics_v2
252+
241253
@property
242254
def metrics(self):
243255
if self._metrics is None:
@@ -254,6 +266,16 @@ def models(self):
254266
self._models = ModelsClient(client_wrapper=self._client_wrapper)
255267
return self._models
256268

269+
@property
270+
def observations_v2(self):
271+
if self._observations_v2 is None:
272+
from .observations_v2.client import ObservationsV2Client # noqa: E402
273+
274+
self._observations_v2 = ObservationsV2Client(
275+
client_wrapper=self._client_wrapper
276+
)
277+
return self._observations_v2
278+
257279
@property
258280
def observations(self):
259281
if self._observations is None:
@@ -449,8 +471,10 @@ def __init__(
449471
self._ingestion: typing.Optional[AsyncIngestionClient] = None
450472
self._llm_connections: typing.Optional[AsyncLlmConnectionsClient] = None
451473
self._media: typing.Optional[AsyncMediaClient] = None
474+
self._metrics_v2: typing.Optional[AsyncMetricsV2Client] = None
452475
self._metrics: typing.Optional[AsyncMetricsClient] = None
453476
self._models: typing.Optional[AsyncModelsClient] = None
477+
self._observations_v2: typing.Optional[AsyncObservationsV2Client] = None
454478
self._observations: typing.Optional[AsyncObservationsClient] = None
455479
self._opentelemetry: typing.Optional[AsyncOpentelemetryClient] = None
456480
self._organizations: typing.Optional[AsyncOrganizationsClient] = None
@@ -556,6 +580,14 @@ def media(self):
556580
self._media = AsyncMediaClient(client_wrapper=self._client_wrapper)
557581
return self._media
558582

583+
@property
584+
def metrics_v2(self):
585+
if self._metrics_v2 is None:
586+
from .metrics_v2.client import AsyncMetricsV2Client # noqa: E402
587+
588+
self._metrics_v2 = AsyncMetricsV2Client(client_wrapper=self._client_wrapper)
589+
return self._metrics_v2
590+
559591
@property
560592
def metrics(self):
561593
if self._metrics is None:
@@ -572,6 +604,16 @@ def models(self):
572604
self._models = AsyncModelsClient(client_wrapper=self._client_wrapper)
573605
return self._models
574606

607+
@property
608+
def observations_v2(self):
609+
if self._observations_v2 is None:
610+
from .observations_v2.client import AsyncObservationsV2Client # noqa: E402
611+
612+
self._observations_v2 = AsyncObservationsV2Client(
613+
client_wrapper=self._client_wrapper
614+
)
615+
return self._observations_v2
616+
575617
@property
576618
def observations(self):
577619
if self._observations is None:
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
# isort: skip_file
4+
5+
import typing
6+
from importlib import import_module
7+
8+
if typing.TYPE_CHECKING:
9+
from .types import MetricsV2Response
10+
_dynamic_imports: typing.Dict[str, str] = {"MetricsV2Response": ".types"}
11+
12+
13+
def __getattr__(attr_name: str) -> typing.Any:
14+
module_name = _dynamic_imports.get(attr_name)
15+
if module_name is None:
16+
raise AttributeError(
17+
f"No {attr_name} found in _dynamic_imports for module name -> {__name__}"
18+
)
19+
try:
20+
module = import_module(module_name, __package__)
21+
if module_name == f".{attr_name}":
22+
return module
23+
else:
24+
return getattr(module, attr_name)
25+
except ImportError as e:
26+
raise ImportError(
27+
f"Failed to import {attr_name} from {module_name}: {e}"
28+
) from e
29+
except AttributeError as e:
30+
raise AttributeError(
31+
f"Failed to get {attr_name} from {module_name}: {e}"
32+
) from e
33+
34+
35+
def __dir__():
36+
lazy_attrs = list(_dynamic_imports.keys())
37+
return sorted(lazy_attrs)
38+
39+
40+
__all__ = ["MetricsV2Response"]

0 commit comments

Comments
 (0)