proscenium 0.0.9__tar.gz → 0.0.11__tar.gz
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.
- {proscenium-0.0.9 → proscenium-0.0.11}/PKG-INFO +21 -30
- proscenium-0.0.11/pyproject.toml +38 -0
- proscenium-0.0.11/setup.cfg +4 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/rag.py +37 -3
- proscenium-0.0.11/src/proscenium.egg-info/PKG-INFO +40 -0
- proscenium-0.0.11/src/proscenium.egg-info/SOURCES.txt +31 -0
- proscenium-0.0.11/src/proscenium.egg-info/dependency_links.txt +1 -0
- proscenium-0.0.11/src/proscenium.egg-info/entry_points.txt +2 -0
- proscenium-0.0.11/src/proscenium.egg-info/requires.txt +15 -0
- proscenium-0.0.11/src/proscenium.egg-info/top_level.txt +1 -0
- proscenium-0.0.11/tests/test_demo_typer_help.py +32 -0
- proscenium-0.0.11/tests/test_display.py +7 -0
- proscenium-0.0.9/pyproject.toml +0 -38
- {proscenium-0.0.9 → proscenium-0.0.11}/LICENSE +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11}/README.md +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/admin/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/bin/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/bin/bot.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/core/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/interfaces/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/interfaces/slack.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/graph_rag.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/tools.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/util/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/complete.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/__init__.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/chat.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/tools.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/invoke.py +0 -0
- {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/remember.py +0 -0
@@ -1,35 +1,27 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: proscenium
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.11
|
4
4
|
Summary: Frame AI Agents
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Requires-Python: >=3.11,<4.0
|
9
|
-
Classifier: License :: Other/Proprietary License
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
11
|
-
Classifier: Programming Language :: Python :: 3.11
|
12
|
-
Classifier: Programming Language :: Python :: 3.12
|
13
|
-
Classifier: Programming Language :: Python :: 3.13
|
14
|
-
Provides-Extra: testing
|
15
|
-
Requires-Dist: aisuite[openai,anthropic] (>=0.1.10,<0.2.0)
|
16
|
-
Requires-Dist: datasets (>=3.3.2,<4.0.0)
|
17
|
-
Requires-Dist: docstring_parser (>=0.16,<0.17)
|
18
|
-
Requires-Dist: gofannon (>=0.25.13,<0.26.0)
|
19
|
-
Requires-Dist: langchain-community (>=0.3.18,<0.4.0)
|
20
|
-
Requires-Dist: langchain-huggingface (>=0.1.2,<0.2.0)
|
21
|
-
Requires-Dist: lapidarist (>=0.0.1,<0.0.2)
|
22
|
-
Requires-Dist: neo4j (>=5.28.1,<6.0.0)
|
23
|
-
Requires-Dist: pydantic (>=2.10.6,<3.0.0)
|
24
|
-
Requires-Dist: pymilvus (>=2.5.4,<3.0.0)
|
25
|
-
Requires-Dist: pymilvus_model (>=0.3.1,<0.4.0)
|
26
|
-
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
27
|
-
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
28
|
-
Requires-Dist: slack_sdk (>=3.35.0,<4.0.0)
|
29
|
-
Requires-Dist: stringcase (>=1.2.0,<2.0.0)
|
30
|
-
Requires-Dist: tiktoken (>=0.9.0,<0.10.0)
|
31
|
-
Requires-Dist: typer (>=0.15.2,<0.16.0)
|
5
|
+
Author-email: Adam Pingel <oss@pingel.org>
|
6
|
+
License-Expression: Apache-2.0
|
7
|
+
Requires-Python: >=3.11
|
32
8
|
Description-Content-Type: text/markdown
|
9
|
+
License-File: LICENSE
|
10
|
+
Requires-Dist: aisuite>=0.1.10
|
11
|
+
Requires-Dist: docstring_parser>=0.16
|
12
|
+
Requires-Dist: pydantic>=2.10.6
|
13
|
+
Requires-Dist: rich>=13.9.4
|
14
|
+
Requires-Dist: slack_sdk>=3.35.0
|
15
|
+
Provides-Extra: test
|
16
|
+
Requires-Dist: pytest<9,>=8; extra == "test"
|
17
|
+
Requires-Dist: pytest-cov<6,>=5; extra == "test"
|
18
|
+
Requires-Dist: typer>=0.15.2; extra == "test"
|
19
|
+
Requires-Dist: click>=8.2.0; extra == "test"
|
20
|
+
Requires-Dist: pytest>=8.3.5; extra == "test"
|
21
|
+
Requires-Dist: neo4j>=5.28.1; extra == "test"
|
22
|
+
Requires-Dist: gofannon>=0.25.13; extra == "test"
|
23
|
+
Requires-Dist: lapidarist>=0.0.2; extra == "test"
|
24
|
+
Dynamic: license-file
|
33
25
|
|
34
26
|
# Proscenium
|
35
27
|
|
@@ -46,4 +38,3 @@ Currently, proscenium development prioritizes support for domains where the crea
|
|
46
38
|
See the [website](https://the-ai-alliance.github.io/proscenium/) for quickstart info, goals, and other links.
|
47
39
|
|
48
40
|
To find the Proscenium community, see the [discussions](https://github.com/The-AI-Alliance/proscenium/discussions)
|
49
|
-
|
@@ -0,0 +1,38 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = [
|
3
|
+
"setuptools>=68",
|
4
|
+
"wheel"
|
5
|
+
]
|
6
|
+
build-backend = "setuptools.build_meta"
|
7
|
+
|
8
|
+
[project]
|
9
|
+
name = "proscenium"
|
10
|
+
version = "0.0.11"
|
11
|
+
description = "Frame AI Agents"
|
12
|
+
authors = [{ name = "Adam Pingel", email = "oss@pingel.org" }]
|
13
|
+
license = "Apache-2.0"
|
14
|
+
readme = "README.md"
|
15
|
+
requires-python = ">=3.11"
|
16
|
+
|
17
|
+
dependencies = [
|
18
|
+
"aisuite>=0.1.10",
|
19
|
+
"docstring_parser>=0.16",
|
20
|
+
"pydantic>=2.10.6",
|
21
|
+
"rich>=13.9.4",
|
22
|
+
"slack_sdk>=3.35.0"
|
23
|
+
]
|
24
|
+
|
25
|
+
[project.optional-dependencies]
|
26
|
+
test = [
|
27
|
+
"pytest>=8,<9",
|
28
|
+
"pytest-cov>=5,<6",
|
29
|
+
"typer>=0.15.2",
|
30
|
+
"click>=8.2.0",
|
31
|
+
"pytest>=8.3.5",
|
32
|
+
"neo4j>=5.28.1",
|
33
|
+
"gofannon>=0.25.13",
|
34
|
+
"lapidarist>=0.0.2"
|
35
|
+
]
|
36
|
+
|
37
|
+
[project.scripts]
|
38
|
+
proscenium-bot = "proscenium.bin.bot:app"
|
@@ -1,12 +1,11 @@
|
|
1
1
|
from typing import List, Dict
|
2
|
+
|
2
3
|
import logging
|
4
|
+
from rich.table import Table
|
3
5
|
|
4
6
|
from pymilvus import MilvusClient
|
5
7
|
from pymilvus import model
|
6
8
|
|
7
|
-
from lapidarist.verbs.display.milvus import chunk_hits_table
|
8
|
-
from lapidarist.verbs.vector_database import closest_chunks
|
9
|
-
|
10
9
|
from proscenium.verbs.complete import complete_simple
|
11
10
|
|
12
11
|
log = logging.getLogger(__name__)
|
@@ -38,6 +37,41 @@ def rag_prompt(chunks: List[Dict], query: str) -> str:
|
|
38
37
|
return rag_prompt_template.format(context=context, query=query)
|
39
38
|
|
40
39
|
|
40
|
+
def closest_chunks(
|
41
|
+
client: MilvusClient,
|
42
|
+
embedding_fn: model.dense.SentenceTransformerEmbeddingFunction,
|
43
|
+
query: str,
|
44
|
+
collection_name: str,
|
45
|
+
k: int = 4,
|
46
|
+
) -> List[Dict]:
|
47
|
+
|
48
|
+
client.load_collection(collection_name)
|
49
|
+
|
50
|
+
result = client.search(
|
51
|
+
collection_name=collection_name,
|
52
|
+
data=embedding_fn.encode_queries([query]),
|
53
|
+
anns_field="vector",
|
54
|
+
search_params={"metric": "IP", "offset": 0},
|
55
|
+
output_fields=["text"],
|
56
|
+
limit=k,
|
57
|
+
)
|
58
|
+
|
59
|
+
hits = result[0]
|
60
|
+
|
61
|
+
return hits
|
62
|
+
|
63
|
+
|
64
|
+
def chunk_hits_table(chunks: list[dict]) -> Table:
|
65
|
+
|
66
|
+
table = Table(title="Closest Chunks", show_lines=True)
|
67
|
+
table.add_column("id", justify="right")
|
68
|
+
table.add_column("distance")
|
69
|
+
table.add_column("entity.text", justify="right")
|
70
|
+
for chunk in chunks:
|
71
|
+
table.add_row(str(chunk["id"]), str(chunk["distance"]), chunk["entity"]["text"])
|
72
|
+
return table
|
73
|
+
|
74
|
+
|
41
75
|
def answer_question(
|
42
76
|
query: str,
|
43
77
|
model_id: str,
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: proscenium
|
3
|
+
Version: 0.0.11
|
4
|
+
Summary: Frame AI Agents
|
5
|
+
Author-email: Adam Pingel <oss@pingel.org>
|
6
|
+
License-Expression: Apache-2.0
|
7
|
+
Requires-Python: >=3.11
|
8
|
+
Description-Content-Type: text/markdown
|
9
|
+
License-File: LICENSE
|
10
|
+
Requires-Dist: aisuite>=0.1.10
|
11
|
+
Requires-Dist: docstring_parser>=0.16
|
12
|
+
Requires-Dist: pydantic>=2.10.6
|
13
|
+
Requires-Dist: rich>=13.9.4
|
14
|
+
Requires-Dist: slack_sdk>=3.35.0
|
15
|
+
Provides-Extra: test
|
16
|
+
Requires-Dist: pytest<9,>=8; extra == "test"
|
17
|
+
Requires-Dist: pytest-cov<6,>=5; extra == "test"
|
18
|
+
Requires-Dist: typer>=0.15.2; extra == "test"
|
19
|
+
Requires-Dist: click>=8.2.0; extra == "test"
|
20
|
+
Requires-Dist: pytest>=8.3.5; extra == "test"
|
21
|
+
Requires-Dist: neo4j>=5.28.1; extra == "test"
|
22
|
+
Requires-Dist: gofannon>=0.25.13; extra == "test"
|
23
|
+
Requires-Dist: lapidarist>=0.0.2; extra == "test"
|
24
|
+
Dynamic: license-file
|
25
|
+
|
26
|
+
# Proscenium
|
27
|
+
|
28
|
+
[](https://github.com/The-AI-Alliance/proscenium/actions/workflows/pytest.yml)
|
29
|
+
[](https://pypi.org/project/proscenium/)
|
30
|
+
[](https://github.com/The-AI-Alliance/proscenium/tree/main?tab=Apache-2.0-1-ov-file#readme)
|
31
|
+
[](https://github.com/The-AI-Alliance/proscenium/issues)
|
32
|
+
[](https://github.com/The-AI-Alliance/proscenium/stargazers)
|
33
|
+
|
34
|
+
Proscenium is a small, experimental library of composable glue that allows for succinct construction of enterprise AI applications. It was started in February 2025 and is still in early development.
|
35
|
+
|
36
|
+
Currently, proscenium development prioritizes support for domains where the creation and use of structured data is critical.
|
37
|
+
|
38
|
+
See the [website](https://the-ai-alliance.github.io/proscenium/) for quickstart info, goals, and other links.
|
39
|
+
|
40
|
+
To find the Proscenium community, see the [discussions](https://github.com/The-AI-Alliance/proscenium/discussions)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
LICENSE
|
2
|
+
README.md
|
3
|
+
pyproject.toml
|
4
|
+
src/proscenium/__init__.py
|
5
|
+
src/proscenium.egg-info/PKG-INFO
|
6
|
+
src/proscenium.egg-info/SOURCES.txt
|
7
|
+
src/proscenium.egg-info/dependency_links.txt
|
8
|
+
src/proscenium.egg-info/entry_points.txt
|
9
|
+
src/proscenium.egg-info/requires.txt
|
10
|
+
src/proscenium.egg-info/top_level.txt
|
11
|
+
src/proscenium/admin/__init__.py
|
12
|
+
src/proscenium/bin/__init__.py
|
13
|
+
src/proscenium/bin/bot.py
|
14
|
+
src/proscenium/core/__init__.py
|
15
|
+
src/proscenium/interfaces/__init__.py
|
16
|
+
src/proscenium/interfaces/slack.py
|
17
|
+
src/proscenium/patterns/__init__.py
|
18
|
+
src/proscenium/patterns/graph_rag.py
|
19
|
+
src/proscenium/patterns/rag.py
|
20
|
+
src/proscenium/patterns/tools.py
|
21
|
+
src/proscenium/util/__init__.py
|
22
|
+
src/proscenium/verbs/__init__.py
|
23
|
+
src/proscenium/verbs/complete.py
|
24
|
+
src/proscenium/verbs/display.py
|
25
|
+
src/proscenium/verbs/invoke.py
|
26
|
+
src/proscenium/verbs/remember.py
|
27
|
+
src/proscenium/verbs/display/__init__.py
|
28
|
+
src/proscenium/verbs/display/chat.py
|
29
|
+
src/proscenium/verbs/display/tools.py
|
30
|
+
tests/test_demo_typer_help.py
|
31
|
+
tests/test_display.py
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
proscenium
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import pytest
|
2
|
+
|
3
|
+
from click import Command
|
4
|
+
from typer.main import get_command
|
5
|
+
|
6
|
+
from demo.cli import app
|
7
|
+
|
8
|
+
|
9
|
+
def _check_help_on_command(command: Command):
|
10
|
+
"""
|
11
|
+
Check that this command (and any subcommands) has a non-empty help string.
|
12
|
+
"""
|
13
|
+
|
14
|
+
assert (
|
15
|
+
command.help is not None and command.help.strip() != ""
|
16
|
+
), f"Command '{command.name}' is missing a help string"
|
17
|
+
|
18
|
+
# recurse into subcommands
|
19
|
+
if hasattr(command, "commands"):
|
20
|
+
for subcommand_name, subcommand in command.commands.items():
|
21
|
+
_check_help_on_command(subcommand)
|
22
|
+
|
23
|
+
|
24
|
+
@pytest.mark.parametrize("command_name", list(get_command(app).commands.keys()))
|
25
|
+
def test_command_has_help(command_name: str):
|
26
|
+
"""
|
27
|
+
Test each top-level command in the demo typer app to ensure
|
28
|
+
it (and any subcommands) have help strings.
|
29
|
+
"""
|
30
|
+
root_command: Command = get_command(app)
|
31
|
+
command = root_command.commands[command_name]
|
32
|
+
_check_help_on_command(command)
|
proscenium-0.0.9/pyproject.toml
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
[tool.poetry]
|
2
|
-
name = "proscenium"
|
3
|
-
version = "0.0.9"
|
4
|
-
description = "Frame AI Agents"
|
5
|
-
authors = ["Adam Pingel <oss@pingel.org>"]
|
6
|
-
license = "ASFv2"
|
7
|
-
readme = "README.md"
|
8
|
-
packages = [{include = "proscenium"}]
|
9
|
-
|
10
|
-
[tool.poetry.dependencies]
|
11
|
-
python = "^3.11"
|
12
|
-
lapidarist = "^0.0.1"
|
13
|
-
aisuite = {extras = ["openai,anthropic"], version = "^0.1.10"}
|
14
|
-
rich = "^13.9.4"
|
15
|
-
typer = "^0.15.2"
|
16
|
-
python-dotenv = "^1.0.1"
|
17
|
-
pydantic = "^2.10.6"
|
18
|
-
stringcase = "^1.2.0"
|
19
|
-
docstring_parser = "^0.16"
|
20
|
-
pymilvus = {version = "^2.5.4"}
|
21
|
-
pymilvus_model = {version = "^0.3.1"}
|
22
|
-
datasets = "^3.3.2"
|
23
|
-
tiktoken = "^0.9.0"
|
24
|
-
neo4j = "^5.28.1"
|
25
|
-
gofannon = "^0.25.13"
|
26
|
-
langchain-community = "^0.3.18"
|
27
|
-
langchain-huggingface = "^0.1.2"
|
28
|
-
slack_sdk = "^3.35.0"
|
29
|
-
|
30
|
-
[tool.poetry.extras]
|
31
|
-
testing = ["pytest"]
|
32
|
-
|
33
|
-
[tool.poetry.scripts]
|
34
|
-
proscenium-bot = "proscenium.bin.bot:app"
|
35
|
-
|
36
|
-
[build-system]
|
37
|
-
requires = ["poetry-core"]
|
38
|
-
build-backend = "poetry.core.masonry.api"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|