prompty 0.1.9__py3-none-any.whl → 0.1.10__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/core.py +31 -1
- prompty/tracer.py +2 -0
- {prompty-0.1.9.dist-info → prompty-0.1.10.dist-info}/METADATA +1 -1
- {prompty-0.1.9.dist-info → prompty-0.1.10.dist-info}/RECORD +6 -6
- {prompty-0.1.9.dist-info → prompty-0.1.10.dist-info}/WHEEL +0 -0
- {prompty-0.1.9.dist-info → prompty-0.1.10.dist-info}/licenses/LICENSE +0 -0
prompty/core.py
CHANGED
@@ -8,7 +8,7 @@ import abc
|
|
8
8
|
from pathlib import Path
|
9
9
|
from .tracer import Tracer, trace, to_dict
|
10
10
|
from pydantic import BaseModel, Field, FilePath
|
11
|
-
from typing import Iterator, List, Literal, Dict, Callable, Set
|
11
|
+
from typing import AsyncIterator, Iterator, List, Literal, Dict, Callable, Set
|
12
12
|
|
13
13
|
|
14
14
|
class PropertySettings(BaseModel):
|
@@ -479,3 +479,33 @@ class PromptyStream(Iterator):
|
|
479
479
|
trace("items", [to_dict(s) for s in self.items])
|
480
480
|
|
481
481
|
raise StopIteration
|
482
|
+
|
483
|
+
|
484
|
+
class AsyncPromptyStream(AsyncIterator):
|
485
|
+
"""AsyncPromptyStream class to iterate over LLM stream.
|
486
|
+
Necessary for Prompty to handle streaming data when tracing."""
|
487
|
+
|
488
|
+
def __init__(self, name: str, iterator: AsyncIterator):
|
489
|
+
self.name = name
|
490
|
+
self.iterator = iterator
|
491
|
+
self.items: List[any] = []
|
492
|
+
self.__name__ = "AsyncPromptyStream"
|
493
|
+
|
494
|
+
def __aiter__(self):
|
495
|
+
return self
|
496
|
+
|
497
|
+
async def __anext__(self):
|
498
|
+
try:
|
499
|
+
# enumerate but add to list
|
500
|
+
o = await self.iterator.__anext__()
|
501
|
+
self.items.append(o)
|
502
|
+
return o
|
503
|
+
|
504
|
+
except StopIteration:
|
505
|
+
# StopIteration is raised
|
506
|
+
# contents are exhausted
|
507
|
+
if len(self.items) > 0:
|
508
|
+
with Tracer.start(f"{self.name}.AsyncPromptyStream") as trace:
|
509
|
+
trace("items", [to_dict(s) for s in self.items])
|
510
|
+
|
511
|
+
raise StopIteration
|
prompty/tracer.py
CHANGED
@@ -46,6 +46,8 @@ def to_dict(obj: Any) -> Dict[str, Any]:
|
|
46
46
|
# safe PromptyStream obj serialization
|
47
47
|
elif type(obj).__name__ == "PromptyStream":
|
48
48
|
return "PromptyStream"
|
49
|
+
elif type(obj).__name__ == "AsyncPromptyStream":
|
50
|
+
return "AsyncPromptyStream"
|
49
51
|
# pydantic models have their own json serialization
|
50
52
|
elif isinstance(obj, BaseModel):
|
51
53
|
return obj.model_dump()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prompty
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.10
|
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
|
License: MIT
|
@@ -1,12 +1,12 @@
|
|
1
|
-
prompty-0.1.
|
2
|
-
prompty-0.1.
|
3
|
-
prompty-0.1.
|
1
|
+
prompty-0.1.10.dist-info/METADATA,sha256=nO36pVf-OKjnsEZRKWV0q7XHuKLBOI7Hw2a9_8dtrIs,4669
|
2
|
+
prompty-0.1.10.dist-info/WHEEL,sha256=rSwsxJWe3vzyR5HCwjWXQruDgschpei4h_giTm0dJVE,90
|
3
|
+
prompty-0.1.10.dist-info/licenses/LICENSE,sha256=KWSC4z9cfML_t0xThoQYjzTdcZQj86Y_mhXdatzU-KM,1052
|
4
4
|
prompty/__init__.py,sha256=Msp8eiKdrDq0wyl6G5DFDH8r5BxM2_E60uzzL7_MJ5w,11183
|
5
5
|
prompty/cli.py,sha256=_bx_l5v7OGhtAn4d_73b8tyfEw7OOkjCqGMQPu0YP5A,2489
|
6
|
-
prompty/core.py,sha256=
|
6
|
+
prompty/core.py,sha256=osKfdwc_uDhQpsRpB8TyvWELUfXPBAoS2iLEU-hPJW0,15373
|
7
7
|
prompty/executors.py,sha256=z_SXF-i2qBbxmsBexQ4Ouiqwil6L0lU2wWfwIeSN-eE,3083
|
8
8
|
prompty/parsers.py,sha256=4mmIn4SVNs8B0R1BufanqUJk8v4r0OEEo8yx6UOxQpA,4670
|
9
9
|
prompty/processors.py,sha256=VaB7fGyaeIPRGuAZ9KTwktx7MIkfCtPALLQgNko1-Gk,2310
|
10
10
|
prompty/renderers.py,sha256=RSHFQFx7AtKLUfsMLCXR0a56Mb7DL1NJNgjUqgg3IqU,776
|
11
|
-
prompty/tracer.py,sha256=
|
12
|
-
prompty-0.1.
|
11
|
+
prompty/tracer.py,sha256=_C8bSoGNvucYnuS-DZSx6dq6iuEsVWWZxj-hUrgiTIw,6333
|
12
|
+
prompty-0.1.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|