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 CHANGED
@@ -1,4 +1,4 @@
1
1
  from .promptlayer import PromptLayer
2
2
 
3
- __version__ = "1.0.19"
3
+ __version__ = "1.0.21"
4
4
  __all__ = ["PromptLayer", "__version__"]
@@ -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
+ )
@@ -1,3 +1,4 @@
1
1
  from . import prompt_template
2
+ from .request_log import RequestLog
2
3
 
3
- __all__ = ["prompt_template"]
4
+ __all__ = ["prompt_template", "RequestLog"]
@@ -157,13 +157,13 @@ class BasePromptTemplate(TypedDict, total=False):
157
157
  tags: List[str]
158
158
 
159
159
 
160
- class PromptVersion(TypedDict, total=False):
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, PromptVersion, total=False):
166
+ class PublishPromptTemplate(BasePromptTemplate, PromptBlueprint, total=False):
167
167
  release_labels: Optional[List[str]] = None
168
168
 
169
169
 
@@ -0,0 +1,8 @@
1
+ from typing import TypedDict, Union
2
+
3
+ from .prompt_template import PromptBlueprint
4
+
5
+
6
+ class RequestLog(TypedDict):
7
+ id: int
8
+ prompt_version: Union[PromptBlueprint, None]
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: promptlayer
3
- Version: 1.0.19
3
+ Version: 1.0.21
4
4
  Summary: PromptLayer is a platform for prompt engineering and tracks your LLM requests.
5
5
  License: Apache-2.0
6
6
  Author: Magniv
@@ -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,,