latitude-sdk 2.1.2__py3-none-any.whl → 3.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- latitude_sdk/client/payloads.py +10 -17
- latitude_sdk/client/router.py +34 -31
- latitude_sdk/sdk/evaluations.py +31 -43
- latitude_sdk/sdk/types.py +11 -23
- {latitude_sdk-2.1.2.dist-info → latitude_sdk-3.0.1.dist-info}/METADATA +1 -1
- {latitude_sdk-2.1.2.dist-info → latitude_sdk-3.0.1.dist-info}/RECORD +7 -7
- {latitude_sdk-2.1.2.dist-info → latitude_sdk-3.0.1.dist-info}/WHEEL +0 -0
latitude_sdk/client/payloads.py
CHANGED
@@ -75,21 +75,17 @@ class EvaluationRequestParams(Model):
|
|
75
75
|
conversation_uuid: str
|
76
76
|
|
77
77
|
|
78
|
-
class
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
class TriggerEvaluationRequestBody(Model):
|
83
|
-
evaluation_uuids: Optional[List[str]] = Field(default=None, alias=str("evaluationUuids"))
|
78
|
+
class AnnotateEvaluationRequestParams(EvaluationRequestParams, Model):
|
79
|
+
evaluation_uuid: str
|
84
80
|
|
85
81
|
|
86
|
-
class
|
87
|
-
|
82
|
+
class AnnotateEvaluationRequestBody(Model):
|
83
|
+
score: int
|
88
84
|
|
85
|
+
class Metadata(Model):
|
86
|
+
reason: str
|
89
87
|
|
90
|
-
|
91
|
-
result: Union[str, bool, int]
|
92
|
-
reason: str
|
88
|
+
metadata: Optional[Metadata] = None
|
93
89
|
|
94
90
|
|
95
91
|
RequestParams = Union[
|
@@ -99,8 +95,7 @@ RequestParams = Union[
|
|
99
95
|
RunPromptRequestParams,
|
100
96
|
ChatPromptRequestParams,
|
101
97
|
CreateLogRequestParams,
|
102
|
-
|
103
|
-
CreateEvaluationResultRequestParams,
|
98
|
+
AnnotateEvaluationRequestParams,
|
104
99
|
]
|
105
100
|
|
106
101
|
|
@@ -109,8 +104,7 @@ RequestBody = Union[
|
|
109
104
|
RunPromptRequestBody,
|
110
105
|
ChatPromptRequestBody,
|
111
106
|
CreateLogRequestBody,
|
112
|
-
|
113
|
-
CreateEvaluationResultRequestBody,
|
107
|
+
AnnotateEvaluationRequestBody,
|
114
108
|
]
|
115
109
|
|
116
110
|
|
@@ -121,5 +115,4 @@ class RequestHandler(StrEnum):
|
|
121
115
|
RunPrompt = "RUN_PROMPT"
|
122
116
|
ChatPrompt = "CHAT_PROMPT"
|
123
117
|
CreateLog = "CREATE_LOG"
|
124
|
-
|
125
|
-
CreateEvaluationResult = "CREATE_EVALUATION_RESULT"
|
118
|
+
AnnotateEvaluation = "ANNOTATE_EVALUATION"
|
latitude_sdk/client/router.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
from typing import Callable, Optional, Tuple
|
2
2
|
|
3
3
|
from latitude_sdk.client.payloads import (
|
4
|
+
AnnotateEvaluationRequestParams,
|
4
5
|
ChatPromptRequestParams,
|
5
|
-
CreateEvaluationResultRequestParams,
|
6
6
|
CreateLogRequestParams,
|
7
7
|
GetAllPromptRequestParams,
|
8
8
|
GetOrCreatePromptRequestParams,
|
@@ -10,7 +10,6 @@ from latitude_sdk.client.payloads import (
|
|
10
10
|
RequestHandler,
|
11
11
|
RequestParams,
|
12
12
|
RunPromptRequestParams,
|
13
|
-
TriggerEvaluationRequestParams,
|
14
13
|
)
|
15
14
|
from latitude_sdk.sdk.types import GatewayOptions
|
16
15
|
from latitude_sdk.util import Model
|
@@ -40,26 +39,35 @@ class Router:
|
|
40
39
|
if handler == RequestHandler.GetAllPrompts:
|
41
40
|
assert isinstance(params, GetAllPromptRequestParams)
|
42
41
|
|
43
|
-
return
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
return (
|
43
|
+
"GET",
|
44
|
+
self.prompts(
|
45
|
+
project_id=params.project_id,
|
46
|
+
version_uuid=params.version_uuid,
|
47
|
+
).all_prompts,
|
48
|
+
)
|
47
49
|
|
48
50
|
elif handler == RequestHandler.GetOrCreatePrompt:
|
49
51
|
assert isinstance(params, GetOrCreatePromptRequestParams)
|
50
52
|
|
51
|
-
return
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
return (
|
54
|
+
"POST",
|
55
|
+
self.prompts(
|
56
|
+
project_id=params.project_id,
|
57
|
+
version_uuid=params.version_uuid,
|
58
|
+
).get_or_create,
|
59
|
+
)
|
55
60
|
|
56
61
|
elif handler == RequestHandler.RunPrompt:
|
57
62
|
assert isinstance(params, RunPromptRequestParams)
|
58
63
|
|
59
|
-
return
|
60
|
-
|
61
|
-
|
62
|
-
|
64
|
+
return (
|
65
|
+
"POST",
|
66
|
+
self.prompts(
|
67
|
+
project_id=params.project_id,
|
68
|
+
version_uuid=params.version_uuid,
|
69
|
+
).run,
|
70
|
+
)
|
63
71
|
|
64
72
|
elif handler == RequestHandler.ChatPrompt:
|
65
73
|
assert isinstance(params, ChatPromptRequestParams)
|
@@ -69,36 +77,31 @@ class Router:
|
|
69
77
|
elif handler == RequestHandler.CreateLog:
|
70
78
|
assert isinstance(params, CreateLogRequestParams)
|
71
79
|
|
72
|
-
return
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
return "POST", self.conversations().evaluate(params.conversation_uuid)
|
80
|
+
return (
|
81
|
+
"POST",
|
82
|
+
self.prompts(
|
83
|
+
project_id=params.project_id,
|
84
|
+
version_uuid=params.version_uuid,
|
85
|
+
).logs,
|
86
|
+
)
|
81
87
|
|
82
|
-
elif handler == RequestHandler.
|
83
|
-
assert isinstance(params,
|
88
|
+
elif handler == RequestHandler.AnnotateEvaluation:
|
89
|
+
assert isinstance(params, AnnotateEvaluationRequestParams)
|
84
90
|
|
85
|
-
return "POST", self.conversations().
|
91
|
+
return "POST", self.conversations().annotate(params.conversation_uuid, params.evaluation_uuid)
|
86
92
|
|
87
93
|
raise TypeError(f"Unknown handler: {handler}")
|
88
94
|
|
89
95
|
class Conversations(Model):
|
90
96
|
chat: Callable[[str], str]
|
91
|
-
|
92
|
-
evaluation_result: Callable[[str, str], str]
|
97
|
+
annotate: Callable[[str, str], str]
|
93
98
|
|
94
99
|
def conversations(self) -> Conversations:
|
95
100
|
base_url = f"{self.options.gateway.base_url}/conversations"
|
96
101
|
|
97
102
|
return self.Conversations(
|
98
103
|
chat=lambda uuid: f"{base_url}/{uuid}/chat",
|
99
|
-
|
100
|
-
evaluation_result=lambda conversation_uuid,
|
101
|
-
evaluation_uuid: f"{base_url}/{conversation_uuid}/evaluations/{evaluation_uuid}/evaluation-results",
|
104
|
+
annotate=lambda uuid, evaluation_uuid: f"{base_url}/{uuid}/evaluations/{evaluation_uuid}/annotate",
|
102
105
|
)
|
103
106
|
|
104
107
|
class Prompts(Model):
|
latitude_sdk/sdk/evaluations.py
CHANGED
@@ -1,32 +1,30 @@
|
|
1
|
-
from
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Any, Optional, Union
|
2
3
|
|
3
4
|
from latitude_sdk.client import (
|
5
|
+
AnnotateEvaluationRequestBody,
|
6
|
+
AnnotateEvaluationRequestParams,
|
4
7
|
Client,
|
5
|
-
CreateEvaluationResultRequestBody,
|
6
|
-
CreateEvaluationResultRequestParams,
|
7
8
|
RequestHandler,
|
8
|
-
TriggerEvaluationRequestBody,
|
9
|
-
TriggerEvaluationRequestParams,
|
10
9
|
)
|
11
|
-
from latitude_sdk.sdk.types import
|
12
|
-
from latitude_sdk.util import Model
|
10
|
+
from latitude_sdk.sdk.types import SdkOptions
|
11
|
+
from latitude_sdk.util import Field, Model
|
13
12
|
|
14
13
|
|
15
|
-
class
|
16
|
-
evaluation_uuids: Optional[List[str]] = None
|
17
|
-
|
18
|
-
|
19
|
-
class TriggerEvaluationResult(Model):
|
20
|
-
evaluations: List[str]
|
21
|
-
|
22
|
-
|
23
|
-
class CreateEvaluationResultOptions(Model):
|
24
|
-
result: Union[str, bool, int]
|
14
|
+
class AnnotateEvaluationOptions(Model):
|
25
15
|
reason: str
|
26
16
|
|
27
17
|
|
28
|
-
class
|
29
|
-
|
18
|
+
class AnnotateEvaluationResult(Model):
|
19
|
+
uuid: str
|
20
|
+
score: int
|
21
|
+
normalized_score: int = Field(alias=str("normalizedScore"))
|
22
|
+
metadata: dict[str, Any]
|
23
|
+
has_passed: bool = Field(alias=str("hasPassed"))
|
24
|
+
created_at: datetime = Field(alias=str("createdAt"))
|
25
|
+
updated_at: datetime = Field(alias=str("updatedAt"))
|
26
|
+
version_uuid: str = Field(alias=str("versionUuid"))
|
27
|
+
error: Optional[Union[str, None]] = None
|
30
28
|
|
31
29
|
|
32
30
|
class Evaluations:
|
@@ -37,34 +35,24 @@ class Evaluations:
|
|
37
35
|
self._options = options
|
38
36
|
self._client = client
|
39
37
|
|
40
|
-
async def
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
body=TriggerEvaluationRequestBody(
|
49
|
-
evaluation_uuids=options.evaluation_uuids,
|
50
|
-
),
|
51
|
-
) as response:
|
52
|
-
return TriggerEvaluationResult.model_validate_json(response.content)
|
53
|
-
|
54
|
-
async def create_result(
|
55
|
-
self, uuid: str, evaluation_uuid: str, options: CreateEvaluationResultOptions
|
56
|
-
) -> CreateEvaluationResultResult:
|
57
|
-
options = CreateEvaluationResultOptions(**{**dict(self._options), **dict(options)})
|
38
|
+
async def annotate(
|
39
|
+
self,
|
40
|
+
uuid: str,
|
41
|
+
score: int,
|
42
|
+
evaluation_uuid: str,
|
43
|
+
options: Optional[AnnotateEvaluationOptions] = None,
|
44
|
+
) -> AnnotateEvaluationResult:
|
45
|
+
options = AnnotateEvaluationOptions(**{**dict(self._options), **dict(options or {})})
|
58
46
|
|
59
47
|
async with self._client.request(
|
60
|
-
handler=RequestHandler.
|
61
|
-
params=
|
48
|
+
handler=RequestHandler.AnnotateEvaluation,
|
49
|
+
params=AnnotateEvaluationRequestParams(
|
62
50
|
conversation_uuid=uuid,
|
63
51
|
evaluation_uuid=evaluation_uuid,
|
64
52
|
),
|
65
|
-
body=
|
66
|
-
|
67
|
-
reason=options.reason,
|
53
|
+
body=AnnotateEvaluationRequestBody(
|
54
|
+
score=score,
|
55
|
+
metadata=(AnnotateEvaluationRequestBody.Metadata(reason=options.reason) if options.reason else None),
|
68
56
|
),
|
69
57
|
) as response:
|
70
|
-
return
|
58
|
+
return AnnotateEvaluationResult.model_validate_json(response.content)
|
latitude_sdk/sdk/types.py
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
from datetime import datetime
|
2
|
-
from typing import
|
2
|
+
from typing import (
|
3
|
+
Any,
|
4
|
+
Callable,
|
5
|
+
List,
|
6
|
+
Literal,
|
7
|
+
Optional,
|
8
|
+
Protocol,
|
9
|
+
Sequence,
|
10
|
+
Union,
|
11
|
+
runtime_checkable,
|
12
|
+
)
|
3
13
|
|
4
14
|
from promptl_ai import Message, MessageLike
|
5
15
|
|
@@ -230,28 +240,6 @@ class Log(Model):
|
|
230
240
|
updated_at: datetime = Field(alias=str("updatedAt"))
|
231
241
|
|
232
242
|
|
233
|
-
class EvaluationResultType(StrEnum):
|
234
|
-
Boolean = "evaluation_resultable_booleans"
|
235
|
-
Text = "evaluation_resultable_texts"
|
236
|
-
Number = "evaluation_resultable_numbers"
|
237
|
-
|
238
|
-
|
239
|
-
class EvaluationResult(Model):
|
240
|
-
id: int
|
241
|
-
uuid: str
|
242
|
-
evaluation_id: int = Field(alias=str("evaluationId"))
|
243
|
-
document_log_id: int = Field(alias=str("documentLogId"))
|
244
|
-
evaluated_provider_log_id: Optional[int] = Field(default=None, alias=str("evaluatedProviderLogId"))
|
245
|
-
evaluation_provider_log_id: Optional[int] = Field(default=None, alias=str("evaluationProviderLogId"))
|
246
|
-
resultable_type: Optional[EvaluationResultType] = Field(default=None, alias=str("resultableType"))
|
247
|
-
resultable_id: Optional[int] = Field(default=None, alias=str("resultableId"))
|
248
|
-
result: Optional[Union[str, bool, int]] = None
|
249
|
-
source: Optional[LogSources] = None
|
250
|
-
reason: Optional[str] = None
|
251
|
-
created_at: datetime = Field(alias=str("createdAt"))
|
252
|
-
updated_at: datetime = Field(alias=str("updatedAt"))
|
253
|
-
|
254
|
-
|
255
243
|
class StreamCallbacks(Model):
|
256
244
|
@runtime_checkable
|
257
245
|
class OnEvent(Protocol):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: latitude-sdk
|
3
|
-
Version:
|
3
|
+
Version: 3.0.1
|
4
4
|
Summary: Latitude SDK for Python
|
5
5
|
Project-URL: repository, https://github.com/latitude-dev/latitude-llm/tree/main/packages/sdks/python
|
6
6
|
Project-URL: homepage, https://github.com/latitude-dev/latitude-llm/tree/main/packages/sdks/python#readme
|
@@ -2,19 +2,19 @@ latitude_sdk/__init__.py,sha256=-AbNXLmzDZeGbRdDIOpNjdCbacOvLBflSJwQtLlZfgk,19
|
|
2
2
|
latitude_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
latitude_sdk/client/__init__.py,sha256=d8CnNB8UoGwcftiIeeC0twdg01qNvfpj-v7O40I7IiE,68
|
4
4
|
latitude_sdk/client/client.py,sha256=Tlg0IU7_64O9yo0BfQEdVwVsjp-5_DUwJZqlX3uEb0w,4399
|
5
|
-
latitude_sdk/client/payloads.py,sha256=
|
6
|
-
latitude_sdk/client/router.py,sha256=
|
5
|
+
latitude_sdk/client/payloads.py,sha256=XiGadgaZhCMKa2auBPLln6RTEt8RwEqx_H8FoSv5h2c,2554
|
6
|
+
latitude_sdk/client/router.py,sha256=sdNvUNXqoM5TDmvN7toyJWuI8Lt4Z6MhKmWWKitEFes,4218
|
7
7
|
latitude_sdk/env/__init__.py,sha256=66of5veJ-u1aNI025L65Rrj321AjrYevMqomTMYIrPQ,19
|
8
8
|
latitude_sdk/env/env.py,sha256=MnXexPOHE6aXcAszrDCbW7hzACUv4YtU1bfxpYwvHNw,455
|
9
9
|
latitude_sdk/sdk/__init__.py,sha256=C9LlIjfnrS7KOK3-ruXKmbT77nSQMm23nZ6-t8sO8ME,137
|
10
10
|
latitude_sdk/sdk/errors.py,sha256=9GlGdDE8LGy3dE2Ry_BipBg-tDbQx7LWXJfSnTJSSBE,1747
|
11
|
-
latitude_sdk/sdk/evaluations.py,sha256=
|
11
|
+
latitude_sdk/sdk/evaluations.py,sha256=UP0DKMOLbqcCYrJcxiqgsqUM3anGs8pkAZu1DoOSwxI,1845
|
12
12
|
latitude_sdk/sdk/latitude.py,sha256=lUlGOiZXSFt0zm3sTHfBgjKzbcVJueMk6MXTGn9WCn8,2570
|
13
13
|
latitude_sdk/sdk/logs.py,sha256=CyHkRJvPl_p7wTSvR9bgxEI5akS0Tjc9FeQRb2C2vMg,1997
|
14
14
|
latitude_sdk/sdk/prompts.py,sha256=WztCpDSt0mxng0N2hyIrrzEw1TanqGRIl7Cpc_5ei4M,17369
|
15
|
-
latitude_sdk/sdk/types.py,sha256=
|
15
|
+
latitude_sdk/sdk/types.py,sha256=e_AQ6YGRNgYvPJOxD5rndH5zPtslKMBhBtLocWlIHQE,7626
|
16
16
|
latitude_sdk/util/__init__.py,sha256=alIDGBnxWH4JvP-UW-7N99seBBi0r1GV1h8f1ERFBec,21
|
17
17
|
latitude_sdk/util/utils.py,sha256=hMOmF-u1QaDgOwXN6ME6n4TaQ70yZKLvijDUqNCMwXI,2844
|
18
|
-
latitude_sdk-
|
19
|
-
latitude_sdk-
|
20
|
-
latitude_sdk-
|
18
|
+
latitude_sdk-3.0.1.dist-info/METADATA,sha256=9z1D0tOFBqpvUZl89T75YQdbJZqbkhVDI3VPlT4yhZg,2327
|
19
|
+
latitude_sdk-3.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
20
|
+
latitude_sdk-3.0.1.dist-info/RECORD,,
|
File without changes
|