prompty 0.1.16__py2.py3-none-any.whl → 0.1.18__py2.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.
prompty/cli.py CHANGED
@@ -10,8 +10,6 @@ import prompty
10
10
  from prompty.tracer import trace, PromptyTracer, console_tracer, Tracer
11
11
  from dotenv import load_dotenv
12
12
 
13
- load_dotenv()
14
-
15
13
 
16
14
  def normalize_path(p, create_dir=False) -> Path:
17
15
  path = Path(p)
@@ -27,8 +25,16 @@ def normalize_path(p, create_dir=False) -> Path:
27
25
 
28
26
  return path
29
27
 
28
+
30
29
  def dynamic_import(module: str):
31
- t = module if "." in module else f"prompty.{module}"
30
+ # built in modules
31
+ if module == "azure" or module == "azure_openai":
32
+ t = "prompty.azure"
33
+ elif module == "serverless":
34
+ t = "prompty.serverless"
35
+ else:
36
+ t = module
37
+
32
38
  print(f"Loading invokers from {t}")
33
39
  importlib.import_module(t)
34
40
 
@@ -60,7 +66,9 @@ def chat_mode(prompt_path: str):
60
66
  break
61
67
  # reloadable prompty file
62
68
  chat_history.append({"role": "user", "content": user_input})
63
- result = prompty.execute(prompt_path, inputs={"chat_history": chat_history})
69
+ result = prompty.execute(
70
+ prompt_path, inputs={"chat_history": chat_history}
71
+ )
64
72
  print(f"\n{G}Assistant:{W} {result}")
65
73
  chat_history.append({"role": "assistant", "content": result})
66
74
  except Exception as e:
@@ -92,10 +100,16 @@ def execute(prompt_path: str, raw=False):
92
100
 
93
101
  @click.command()
94
102
  @click.option("--source", "-s", required=True)
103
+ @click.option("--env", "-e", required=False)
95
104
  @click.option("--verbose", "-v", is_flag=True)
96
105
  @click.option("--chat", "-c", is_flag=True)
97
106
  @click.version_option()
98
- def run(source, verbose, chat):
107
+ def run(source, env, verbose, chat):
108
+ # load external env file
109
+ if env:
110
+ print(f"Loading environment variables from {env}")
111
+ load_dotenv(env)
112
+
99
113
  prompt_path = normalize_path(source)
100
114
  if not prompt_path.exists():
101
115
  print(f"{str(prompt_path)} does not exist")
prompty/core.py CHANGED
@@ -529,7 +529,9 @@ class PromptyStream(Iterator):
529
529
  # StopIteration is raised
530
530
  # contents are exhausted
531
531
  if len(self.items) > 0:
532
- with Tracer.start(f"{self.name}.PromptyStream") as trace:
532
+ with Tracer.start("PromptyStream") as trace:
533
+ trace("signature", f"{self.name}.PromptyStream")
534
+ trace("inputs", "None")
533
535
  trace("result", [to_dict(s) for s in self.items])
534
536
 
535
537
  raise StopIteration
prompty/tracer.py CHANGED
@@ -108,8 +108,21 @@ def _trace_sync(func: Callable = None, *, description: str = None) -> Callable:
108
108
  inputs = _inputs(func, args, kwargs)
109
109
  trace("inputs", inputs)
110
110
 
111
- result = func(*args, **kwargs)
112
- trace("result", _results(result))
111
+ try:
112
+ result = func(*args, **kwargs)
113
+ trace("result", _results(result))
114
+ except Exception as e:
115
+ trace(
116
+ "result",
117
+ {
118
+ "exception": {
119
+ "type": type(e).__name__,
120
+ "message": str(e),
121
+ "args": e.args,
122
+ }
123
+ },
124
+ )
125
+ raise e
113
126
 
114
127
  return result
115
128
 
@@ -129,9 +142,21 @@ def _trace_async(func: Callable = None, *, description: str = None) -> Callable:
129
142
 
130
143
  inputs = _inputs(func, args, kwargs)
131
144
  trace("inputs", inputs)
132
-
133
- result = await func(*args, **kwargs)
134
- trace("result", _results(result))
145
+ try:
146
+ result = await func(*args, **kwargs)
147
+ trace("result", _results(result))
148
+ except Exception as e:
149
+ trace(
150
+ "result",
151
+ {
152
+ "exception": {
153
+ "type": type(e).__name__,
154
+ "message": str(e),
155
+ "args": e.args,
156
+ }
157
+ },
158
+ )
159
+ raise e
135
160
 
136
161
  return result
137
162
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prompty
3
- Version: 0.1.16
3
+ Version: 0.1.18
4
4
  Summary: Prompty is a new asset class and format for LLM prompts that aims to provide observability, understandability, and portability for developers. It includes spec, tooling, and a runtime. This Prompty runtime supports Python
5
5
  Author-Email: Seth Juarez <seth.juarez@microsoft.com>
6
6
  Requires-Dist: pyyaml>=6.0.1
@@ -1,14 +1,13 @@
1
- prompty-0.1.16.dist-info/METADATA,sha256=GrbCbCC5h_7Jen_jONo7lTvsfMvkvjuodRJDbBKvt4I,8916
2
- prompty-0.1.16.dist-info/WHEEL,sha256=CuZGaXTwoRLAOVv0AcE3bCTxO5ejVuBEJkUBe9C-kvk,94
3
- prompty-0.1.16.dist-info/entry_points.txt,sha256=9y1lKPWUpPWRJzUslcVH-gMwbNoa2PzjyoZsKYLQqyw,45
4
- prompty-0.1.16.dist-info/licenses/LICENSE,sha256=KWSC4z9cfML_t0xThoQYjzTdcZQj86Y_mhXdatzU-KM,1052
1
+ prompty-0.1.18.dist-info/METADATA,sha256=xQtpcI0HepyxgkqLN5BnUT9RrbcrTSrY68XeMnEe1MM,8916
2
+ prompty-0.1.18.dist-info/WHEEL,sha256=CuZGaXTwoRLAOVv0AcE3bCTxO5ejVuBEJkUBe9C-kvk,94
3
+ prompty-0.1.18.dist-info/entry_points.txt,sha256=9y1lKPWUpPWRJzUslcVH-gMwbNoa2PzjyoZsKYLQqyw,45
4
+ prompty-0.1.18.dist-info/licenses/LICENSE,sha256=KWSC4z9cfML_t0xThoQYjzTdcZQj86Y_mhXdatzU-KM,1052
5
5
  prompty/__init__.py,sha256=XTUgJ3xT7HYJieuWW5PBItey0BWneg3G7iBBjIeNJZU,11628
6
6
  prompty/azure/__init__.py,sha256=ptGajCh68s_tugPv45Y4GJCyBToNFCExUzUh9yIBIfo,292
7
7
  prompty/azure/executor.py,sha256=x2ng2EbYUxbingjy8w27TFGWezs4QC0LHh_S0F0-E1U,3082
8
8
  prompty/azure/processor.py,sha256=e9CcKG665zvCLPeJfS91FM6c_W_6YY0mVENxinCo19A,2253
9
- prompty/azure_openai/__init__.py,sha256=tjCu2NEF-YV3AZPPZfYjdkCzPtPbc2NfYazPb1Gu4GI,306
10
- prompty/cli.py,sha256=oIJ5aPCjwBl4xA5SWkbQ_Xj0KhzuSJhRnqV95DhfORc,3382
11
- prompty/core.py,sha256=O_Kvj7XjaNG50_mWzpxf5xVOEOWGYBkwBXqPA__5kz0,17126
9
+ prompty/cli.py,sha256=k8Rxm41fMFNvmnsX737UiN6v-7756tpoJPN4rPXMNcU,3726
10
+ prompty/core.py,sha256=VzhOp2tulAKAF0I_5ULlII6QZ0thN1FRtPqPhwDpjPY,17226
12
11
  prompty/openai/__init__.py,sha256=16LxFrG_qGMg_Nx_BTMkCZupPEADsi8Gj234uFiXoZo,273
13
12
  prompty/openai/executor.py,sha256=5LXME0ACvbX3PSpSfh9ohDGWB50ZYBXLZG238wQiVGc,2212
14
13
  prompty/openai/processor.py,sha256=Cw-_O_r9B5QqiCsfIglI5lcJgKCStkse2iIDbPWxfhg,2169
@@ -17,5 +16,5 @@ prompty/renderers.py,sha256=RSHFQFx7AtKLUfsMLCXR0a56Mb7DL1NJNgjUqgg3IqU,776
17
16
  prompty/serverless/__init__.py,sha256=NPqoFATEMQ96G8OQkVcGxUWU4llIQCwxfJePPo8YFY8,279
18
17
  prompty/serverless/executor.py,sha256=fYCMV01iLBLpH2SQ9nxmrvY9ijAGpZezwkobZwUjSVQ,2781
19
18
  prompty/serverless/processor.py,sha256=pft1XGbPzo0MzQMbAt1VxsLsvRrjQO3B8MXEE2PfSA0,1982
20
- prompty/tracer.py,sha256=dwASxJsVnoUNIKLuBHtZAhD0JctbTCImBP5mjVGCnPo,8809
21
- prompty-0.1.16.dist-info/RECORD,,
19
+ prompty/tracer.py,sha256=tROL2gdDyjMi1WvyVzHXOsojGbPL2wvI2Dlnzt1VBcA,9628
20
+ prompty-0.1.18.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- # __init__.py
2
- from prompty.core import InvokerException
3
-
4
- try:
5
- from ..azure.executor import AzureOpenAIExecutor
6
- from ..azure.processor import AzureOpenAIProcessor
7
- except ImportError:
8
- raise InvokerException(
9
- "Error registering AzureOpenAIExecutor and AzureOpenAIProcessor", "azure"
10
- )