promptlayer 1.0.19__py3-none-any.whl → 1.0.21__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.
Potentially problematic release.
This version of promptlayer might be problematic. Click here for more details.
- promptlayer/__init__.py +1 -1
- promptlayer/promptlayer.py +44 -0
- promptlayer/types/__init__.py +2 -1
- promptlayer/types/prompt_template.py +2 -2
- promptlayer/types/request_log.py +8 -0
- promptlayer/utils.py +30 -0
- {promptlayer-1.0.19.dist-info → promptlayer-1.0.21.dist-info}/METADATA +1 -1
- promptlayer-1.0.21.dist-info/RECORD +17 -0
- promptlayer-1.0.19.dist-info/RECORD +0 -16
- {promptlayer-1.0.19.dist-info → promptlayer-1.0.21.dist-info}/LICENSE +0 -0
- {promptlayer-1.0.19.dist-info → promptlayer-1.0.21.dist-info}/WHEEL +0 -0
promptlayer/__init__.py
CHANGED
promptlayer/promptlayer.py
CHANGED
|
@@ -15,6 +15,7 @@ from promptlayer.promptlayer_base import PromptLayerBase
|
|
|
15
15
|
from promptlayer.span_exporter import PromptLayerSpanExporter
|
|
16
16
|
from promptlayer.templates import TemplateManager
|
|
17
17
|
from promptlayer.track import TrackManager
|
|
18
|
+
from promptlayer.types.prompt_template import PromptTemplate
|
|
18
19
|
from promptlayer.utils import (
|
|
19
20
|
anthropic_request,
|
|
20
21
|
anthropic_stream_completion,
|
|
@@ -24,6 +25,7 @@ from promptlayer.utils import (
|
|
|
24
25
|
openai_stream_completion,
|
|
25
26
|
stream_response,
|
|
26
27
|
track_request,
|
|
28
|
+
util_log_request,
|
|
27
29
|
)
|
|
28
30
|
|
|
29
31
|
MAP_PROVIDER_TO_FUNCTION_NAME = {
|
|
@@ -399,3 +401,45 @@ class PromptLayer:
|
|
|
399
401
|
return async_wrapper if asyncio.iscoroutinefunction(func) else sync_wrapper
|
|
400
402
|
|
|
401
403
|
return decorator
|
|
404
|
+
|
|
405
|
+
def log_request(
|
|
406
|
+
self,
|
|
407
|
+
*,
|
|
408
|
+
provider: str,
|
|
409
|
+
model: str,
|
|
410
|
+
input: PromptTemplate,
|
|
411
|
+
output: PromptTemplate,
|
|
412
|
+
request_start_time: float,
|
|
413
|
+
request_end_time: float,
|
|
414
|
+
parameters: Dict[str, Any] = {},
|
|
415
|
+
tags: List[str] = [],
|
|
416
|
+
metadata: Dict[str, str] = {},
|
|
417
|
+
prompt_name: Union[str, None] = None,
|
|
418
|
+
prompt_version_number: Union[int, None] = None,
|
|
419
|
+
prompt_input_variables: Dict[str, Any] = {},
|
|
420
|
+
input_tokens: int = 0,
|
|
421
|
+
output_tokens: int = 0,
|
|
422
|
+
price: float = 0.0,
|
|
423
|
+
function_name: str = "",
|
|
424
|
+
score: int = 0,
|
|
425
|
+
):
|
|
426
|
+
return util_log_request(
|
|
427
|
+
self.api_key,
|
|
428
|
+
provider=provider,
|
|
429
|
+
model=model,
|
|
430
|
+
input=input,
|
|
431
|
+
output=output,
|
|
432
|
+
request_start_time=request_start_time,
|
|
433
|
+
request_end_time=request_end_time,
|
|
434
|
+
parameters=parameters,
|
|
435
|
+
tags=tags,
|
|
436
|
+
metadata=metadata,
|
|
437
|
+
prompt_name=prompt_name,
|
|
438
|
+
prompt_version_number=prompt_version_number,
|
|
439
|
+
prompt_input_variables=prompt_input_variables,
|
|
440
|
+
input_tokens=input_tokens,
|
|
441
|
+
output_tokens=output_tokens,
|
|
442
|
+
price=price,
|
|
443
|
+
function_name=function_name,
|
|
444
|
+
score=score,
|
|
445
|
+
)
|
promptlayer/types/__init__.py
CHANGED
|
@@ -157,13 +157,13 @@ class BasePromptTemplate(TypedDict, total=False):
|
|
|
157
157
|
tags: List[str]
|
|
158
158
|
|
|
159
159
|
|
|
160
|
-
class
|
|
160
|
+
class PromptBlueprint(TypedDict, total=False):
|
|
161
161
|
prompt_template: PromptTemplate
|
|
162
162
|
commit_message: str
|
|
163
163
|
metadata: Metadata
|
|
164
164
|
|
|
165
165
|
|
|
166
|
-
class PublishPromptTemplate(BasePromptTemplate,
|
|
166
|
+
class PublishPromptTemplate(BasePromptTemplate, PromptBlueprint, total=False):
|
|
167
167
|
release_labels: Optional[List[str]] = None
|
|
168
168
|
|
|
169
169
|
|
promptlayer/utils.py
CHANGED
|
@@ -13,6 +13,7 @@ from typing import Callable, Generator, List, Union
|
|
|
13
13
|
import requests
|
|
14
14
|
from opentelemetry import context, trace
|
|
15
15
|
|
|
16
|
+
from promptlayer.types import RequestLog
|
|
16
17
|
from promptlayer.types.prompt_template import (
|
|
17
18
|
GetPromptTemplate,
|
|
18
19
|
GetPromptTemplateResponse,
|
|
@@ -665,6 +666,13 @@ def get_prompt_template(
|
|
|
665
666
|
raise Exception(
|
|
666
667
|
f"PromptLayer had the following error while getting your prompt template: {response.text}"
|
|
667
668
|
)
|
|
669
|
+
|
|
670
|
+
warning = response.json().get("warning", None)
|
|
671
|
+
if warning is not None:
|
|
672
|
+
warn_on_bad_response(
|
|
673
|
+
warning,
|
|
674
|
+
"WARNING: While getting your prompt template",
|
|
675
|
+
)
|
|
668
676
|
return response.json()
|
|
669
677
|
except requests.exceptions.RequestException as e:
|
|
670
678
|
raise Exception(
|
|
@@ -907,3 +915,25 @@ def get_api_key():
|
|
|
907
915
|
"Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' "
|
|
908
916
|
)
|
|
909
917
|
return api_key
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
def util_log_request(api_key: str, **kwargs) -> Union[RequestLog, None]:
|
|
921
|
+
try:
|
|
922
|
+
response = requests.post(
|
|
923
|
+
f"{URL_API_PROMPTLAYER}/log-request",
|
|
924
|
+
headers={"X-API-KEY": api_key},
|
|
925
|
+
json=kwargs,
|
|
926
|
+
)
|
|
927
|
+
if response.status_code != 201:
|
|
928
|
+
warn_on_bad_response(
|
|
929
|
+
response,
|
|
930
|
+
"WARNING: While logging your request PromptLayer had the following error",
|
|
931
|
+
)
|
|
932
|
+
return None
|
|
933
|
+
return response.json()
|
|
934
|
+
except Exception as e:
|
|
935
|
+
print(
|
|
936
|
+
f"WARNING: While tracking your prompt PromptLayer had the following error: {e}",
|
|
937
|
+
file=sys.stderr,
|
|
938
|
+
)
|
|
939
|
+
return None
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
promptlayer/__init__.py,sha256=k8vF79D72Sb1kRpenJw4f8cmwy7xXtigb-fo9ebfv_I,102
|
|
2
|
+
promptlayer/groups/__init__.py,sha256=-xs-2cn0nc0D_5YxZr3nC86iTdRVZmBhEpOKDJXE-sQ,224
|
|
3
|
+
promptlayer/groups/groups.py,sha256=yeO6T0TM3qB0ondZRiHhcH8G06YygrpFoM8b9RmoIao,165
|
|
4
|
+
promptlayer/promptlayer.py,sha256=9pQkicXafiEHw4kS5CiIBRzECg7I6VCuQSKKaAEyE-4,15401
|
|
5
|
+
promptlayer/promptlayer_base.py,sha256=sev-EZehRXJSZSmJtMkqmAUK1345pqbDY_lNjPP5MYA,7158
|
|
6
|
+
promptlayer/span_exporter.py,sha256=zIJNsb3Fe6yb5wKLDmkoPF2wqFjk1p39E0jWHD2plzI,2658
|
|
7
|
+
promptlayer/templates.py,sha256=aY_-BCrL0AgIdYEUE28pi0AP_avTVAgwv5hgzrh75vo,717
|
|
8
|
+
promptlayer/track/__init__.py,sha256=VheO_Au0lffGlPKYYPQwkv8ci16wSXABCVSNRoFWu_w,945
|
|
9
|
+
promptlayer/track/track.py,sha256=XNEZT9yNiRBPp9vaDZo_f0dP_ldOu8q1qafpVfS5Ze8,1610
|
|
10
|
+
promptlayer/types/__init__.py,sha256=xJcvQuOk91ZBBePb40-1FDNDKYrZoH5lPE2q6_UhprM,111
|
|
11
|
+
promptlayer/types/prompt_template.py,sha256=TUXLXvuvew0EBLfTMBa2LhFeQoF7R-tcFKg7_UUtHMQ,4433
|
|
12
|
+
promptlayer/types/request_log.py,sha256=xU6bcxQar6GaBOJlgZTavXUV3FjE8sF_nSjPu4Ya_00,174
|
|
13
|
+
promptlayer/utils.py,sha256=e9Ez961AV_iGmWWH9B6SuGVTh7TYbSJa_VgY2LwkrTk,30622
|
|
14
|
+
promptlayer-1.0.21.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
15
|
+
promptlayer-1.0.21.dist-info/METADATA,sha256=ur4ap_sJ3KKhp8IP9M83I3GKxZ35jSz-BNiB1zJb6kA,4609
|
|
16
|
+
promptlayer-1.0.21.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
17
|
+
promptlayer-1.0.21.dist-info/RECORD,,
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
promptlayer/__init__.py,sha256=FGUGavxgGe91xAsLApjZDljIp5Rr0rgCFAWbe9NkT-E,102
|
|
2
|
-
promptlayer/groups/__init__.py,sha256=-xs-2cn0nc0D_5YxZr3nC86iTdRVZmBhEpOKDJXE-sQ,224
|
|
3
|
-
promptlayer/groups/groups.py,sha256=yeO6T0TM3qB0ondZRiHhcH8G06YygrpFoM8b9RmoIao,165
|
|
4
|
-
promptlayer/promptlayer.py,sha256=-Gym7TOsdYELXb81CWZ9cpDEfDb1ga-ZJL24HKmXQow,13989
|
|
5
|
-
promptlayer/promptlayer_base.py,sha256=sev-EZehRXJSZSmJtMkqmAUK1345pqbDY_lNjPP5MYA,7158
|
|
6
|
-
promptlayer/span_exporter.py,sha256=zIJNsb3Fe6yb5wKLDmkoPF2wqFjk1p39E0jWHD2plzI,2658
|
|
7
|
-
promptlayer/templates.py,sha256=aY_-BCrL0AgIdYEUE28pi0AP_avTVAgwv5hgzrh75vo,717
|
|
8
|
-
promptlayer/track/__init__.py,sha256=VheO_Au0lffGlPKYYPQwkv8ci16wSXABCVSNRoFWu_w,945
|
|
9
|
-
promptlayer/track/track.py,sha256=XNEZT9yNiRBPp9vaDZo_f0dP_ldOu8q1qafpVfS5Ze8,1610
|
|
10
|
-
promptlayer/types/__init__.py,sha256=ulWSyCrk5hZ_PI-nKGpd6GPcRaK8lqP4wFl0LPNUYWk,61
|
|
11
|
-
promptlayer/types/prompt_template.py,sha256=QbxYSeIubrwp8KmDKdt9syAwzONFPh_So9yr4H73ANQ,4429
|
|
12
|
-
promptlayer/utils.py,sha256=-p0qapUvkZYJd_Dfat3c8LANXWU1JN0bJB91IyjB8iA,29656
|
|
13
|
-
promptlayer-1.0.19.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
14
|
-
promptlayer-1.0.19.dist-info/METADATA,sha256=E3Eap9BWe5UF1jDnH2nZkRR-KDTYH9zNMkV7uOf7OFg,4609
|
|
15
|
-
promptlayer-1.0.19.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
16
|
-
promptlayer-1.0.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|