Skip to content

Commit a6a7e27

Browse files
committed
feat(api): expose stable skills client
1 parent 61b3282 commit a6a7e27

21 files changed

Lines changed: 3076 additions & 0 deletions

‎langfuse/api/__init__.py‎

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
scim,
3434
score_configs,
3535
scores,
36+
skills,
3637
trace,
3738
unstable,
3839
utils,
@@ -384,6 +385,22 @@
384385
ScoreV3_Text,
385386
TextScoreV3,
386387
)
388+
from .skills import (
389+
CreateSkillVersionRequest,
390+
DeleteSkillVersionResponse,
391+
SkillFile,
392+
SkillFileContent,
393+
SkillFileContentsResponse,
394+
SkillListPagination,
395+
SkillMeta,
396+
SkillMetaListResponse,
397+
SkillVersion,
398+
SkillVersionFileCreateInput,
399+
SkillVersionFileInput,
400+
SkillVersionFileReference,
401+
UpdateSkillLabelsRequest,
402+
UpdateSkillRequest,
403+
)
387404
from .trace import DeleteTraceResponse
388405
_dynamic_imports: typing.Dict[str, str] = {
389406
"AccessDeniedError": ".commons",
@@ -462,6 +479,7 @@
462479
"CreateScoreValue": ".commons",
463480
"CreateScoresRequest": ".scores",
464481
"CreateScoresResponse": ".scores",
482+
"CreateSkillVersionRequest": ".skills",
465483
"CreateTextPromptRequest": ".prompts",
466484
"CreateTextPromptType": ".prompts",
467485
"Creator": ".evaluators",
@@ -478,6 +496,7 @@
478496
"DeleteDatasetItemResponse": ".dataset_items",
479497
"DeleteLlmConnectionResponse": ".llm_connections",
480498
"DeleteMembershipRequest": ".organizations",
499+
"DeleteSkillVersionResponse": ".skills",
481500
"DeleteTraceResponse": ".trace",
482501
"DeletedEvaluationRule": ".evaluation_rules",
483502
"DeletedEvaluator": ".evaluators",
@@ -680,6 +699,16 @@
680699
"Score_Text": ".commons",
681700
"ServiceProviderConfig": ".scim",
682701
"ServiceUnavailableError": ".health",
702+
"SkillFile": ".skills",
703+
"SkillFileContent": ".skills",
704+
"SkillFileContentsResponse": ".skills",
705+
"SkillListPagination": ".skills",
706+
"SkillMeta": ".skills",
707+
"SkillMetaListResponse": ".skills",
708+
"SkillVersion": ".skills",
709+
"SkillVersionFileCreateInput": ".skills",
710+
"SkillVersionFileInput": ".skills",
711+
"SkillVersionFileReference": ".skills",
683712
"StringEvaluationRuleFilter": ".evaluation_commons",
684713
"StringObjectEvaluationRuleFilter": ".evaluation_commons",
685714
"StringOptionsEvaluationRuleFilter": ".evaluation_commons",
@@ -697,6 +726,8 @@
697726
"UpdateEvaluatorRequest": ".evaluators",
698727
"UpdateLlmAsJudgeEvaluatorRequest": ".evaluators",
699728
"UpdateScoreConfigRequest": ".score_configs",
729+
"UpdateSkillLabelsRequest": ".skills",
730+
"UpdateSkillRequest": ".skills",
700731
"UpsertLlmConnectionRequest": ".llm_connections",
701732
"Usage": ".commons",
702733
"UserMeta": ".scim",
@@ -726,6 +757,7 @@
726757
"scim": ".scim",
727758
"score_configs": ".score_configs",
728759
"scores": ".scores",
760+
"skills": ".skills",
729761
"trace": ".trace",
730762
"unstable": ".unstable",
731763
"utils": ".utils",
@@ -836,6 +868,7 @@ def __dir__():
836868
"CreateScoreValue",
837869
"CreateScoresRequest",
838870
"CreateScoresResponse",
871+
"CreateSkillVersionRequest",
839872
"CreateTextPromptRequest",
840873
"CreateTextPromptType",
841874
"Creator",
@@ -852,6 +885,7 @@ def __dir__():
852885
"DeleteDatasetItemResponse",
853886
"DeleteLlmConnectionResponse",
854887
"DeleteMembershipRequest",
888+
"DeleteSkillVersionResponse",
855889
"DeleteTraceResponse",
856890
"DeletedEvaluationRule",
857891
"DeletedEvaluator",
@@ -1054,6 +1088,16 @@ def __dir__():
10541088
"Score_Text",
10551089
"ServiceProviderConfig",
10561090
"ServiceUnavailableError",
1091+
"SkillFile",
1092+
"SkillFileContent",
1093+
"SkillFileContentsResponse",
1094+
"SkillListPagination",
1095+
"SkillMeta",
1096+
"SkillMetaListResponse",
1097+
"SkillVersion",
1098+
"SkillVersionFileCreateInput",
1099+
"SkillVersionFileInput",
1100+
"SkillVersionFileReference",
10571101
"StringEvaluationRuleFilter",
10581102
"StringObjectEvaluationRuleFilter",
10591103
"StringOptionsEvaluationRuleFilter",
@@ -1071,6 +1115,8 @@ def __dir__():
10711115
"UpdateEvaluatorRequest",
10721116
"UpdateLlmAsJudgeEvaluatorRequest",
10731117
"UpdateScoreConfigRequest",
1118+
"UpdateSkillLabelsRequest",
1119+
"UpdateSkillRequest",
10741120
"UpsertLlmConnectionRequest",
10751121
"Usage",
10761122
"UserMeta",
@@ -1100,6 +1146,7 @@ def __dir__():
11001146
"scim",
11011147
"score_configs",
11021148
"scores",
1149+
"skills",
11031150
"trace",
11041151
"unstable",
11051152
"utils",

‎langfuse/api/client.py‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
from .scim.client import AsyncScimClient, ScimClient
4141
from .score_configs.client import AsyncScoreConfigsClient, ScoreConfigsClient
4242
from .scores.client import AsyncScoresClient, ScoresClient
43+
from .skills.client import AsyncSkillsClient, SkillsClient
4344
from .trace.client import AsyncTraceClient, TraceClient
4445
from .unstable.client import AsyncUnstableClient, UnstableClient
4546

@@ -147,6 +148,7 @@ def __init__(
147148
self._scim: typing.Optional[ScimClient] = None
148149
self._score_configs: typing.Optional[ScoreConfigsClient] = None
149150
self._scores: typing.Optional[ScoresClient] = None
151+
self._skills: typing.Optional[SkillsClient] = None
150152
self._trace: typing.Optional[TraceClient] = None
151153
self._unstable: typing.Optional[UnstableClient] = None
152154

@@ -352,6 +354,14 @@ def scores(self):
352354
self._scores = ScoresClient(client_wrapper=self._client_wrapper)
353355
return self._scores
354356

357+
@property
358+
def skills(self):
359+
if self._skills is None:
360+
from .skills.client import SkillsClient # noqa: E402
361+
362+
self._skills = SkillsClient(client_wrapper=self._client_wrapper)
363+
return self._skills
364+
355365
@property
356366
def trace(self):
357367
if self._trace is None:
@@ -472,6 +482,7 @@ def __init__(
472482
self._scim: typing.Optional[AsyncScimClient] = None
473483
self._score_configs: typing.Optional[AsyncScoreConfigsClient] = None
474484
self._scores: typing.Optional[AsyncScoresClient] = None
485+
self._skills: typing.Optional[AsyncSkillsClient] = None
475486
self._trace: typing.Optional[AsyncTraceClient] = None
476487
self._unstable: typing.Optional[AsyncUnstableClient] = None
477488

@@ -685,6 +696,14 @@ def scores(self):
685696
self._scores = AsyncScoresClient(client_wrapper=self._client_wrapper)
686697
return self._scores
687698

699+
@property
700+
def skills(self):
701+
if self._skills is None:
702+
from .skills.client import AsyncSkillsClient # noqa: E402
703+
704+
self._skills = AsyncSkillsClient(client_wrapper=self._client_wrapper)
705+
return self._skills
706+
688707
@property
689708
def trace(self):
690709
if self._trace is None:

‎langfuse/api/skills/__init__.py‎

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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 (
10+
CreateSkillVersionRequest,
11+
DeleteSkillVersionResponse,
12+
SkillFile,
13+
SkillFileContent,
14+
SkillFileContentsResponse,
15+
SkillListPagination,
16+
SkillMeta,
17+
SkillMetaListResponse,
18+
SkillVersion,
19+
SkillVersionFileCreateInput,
20+
SkillVersionFileInput,
21+
SkillVersionFileReference,
22+
UpdateSkillLabelsRequest,
23+
UpdateSkillRequest,
24+
)
25+
_dynamic_imports: typing.Dict[str, str] = {
26+
"CreateSkillVersionRequest": ".types",
27+
"DeleteSkillVersionResponse": ".types",
28+
"SkillFile": ".types",
29+
"SkillFileContent": ".types",
30+
"SkillFileContentsResponse": ".types",
31+
"SkillListPagination": ".types",
32+
"SkillMeta": ".types",
33+
"SkillMetaListResponse": ".types",
34+
"SkillVersion": ".types",
35+
"SkillVersionFileCreateInput": ".types",
36+
"SkillVersionFileInput": ".types",
37+
"SkillVersionFileReference": ".types",
38+
"UpdateSkillLabelsRequest": ".types",
39+
"UpdateSkillRequest": ".types",
40+
}
41+
42+
43+
def __getattr__(attr_name: str) -> typing.Any:
44+
module_name = _dynamic_imports.get(attr_name)
45+
if module_name is None:
46+
raise AttributeError(
47+
f"No {attr_name} found in _dynamic_imports for module name -> {__name__}"
48+
)
49+
try:
50+
module = import_module(module_name, __package__)
51+
if module_name == f".{attr_name}":
52+
return module
53+
else:
54+
return getattr(module, attr_name)
55+
except ImportError as e:
56+
raise ImportError(
57+
f"Failed to import {attr_name} from {module_name}: {e}"
58+
) from e
59+
except AttributeError as e:
60+
raise AttributeError(
61+
f"Failed to get {attr_name} from {module_name}: {e}"
62+
) from e
63+
64+
65+
def __dir__():
66+
lazy_attrs = list(_dynamic_imports.keys())
67+
return sorted(lazy_attrs)
68+
69+
70+
__all__ = [
71+
"CreateSkillVersionRequest",
72+
"DeleteSkillVersionResponse",
73+
"SkillFile",
74+
"SkillFileContent",
75+
"SkillFileContentsResponse",
76+
"SkillListPagination",
77+
"SkillMeta",
78+
"SkillMetaListResponse",
79+
"SkillVersion",
80+
"SkillVersionFileCreateInput",
81+
"SkillVersionFileInput",
82+
"SkillVersionFileReference",
83+
"UpdateSkillLabelsRequest",
84+
"UpdateSkillRequest",
85+
]

0 commit comments

Comments
 (0)