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.
Files changed (34) hide show
  1. {proscenium-0.0.9 → proscenium-0.0.11}/PKG-INFO +21 -30
  2. proscenium-0.0.11/pyproject.toml +38 -0
  3. proscenium-0.0.11/setup.cfg +4 -0
  4. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/rag.py +37 -3
  5. proscenium-0.0.11/src/proscenium.egg-info/PKG-INFO +40 -0
  6. proscenium-0.0.11/src/proscenium.egg-info/SOURCES.txt +31 -0
  7. proscenium-0.0.11/src/proscenium.egg-info/dependency_links.txt +1 -0
  8. proscenium-0.0.11/src/proscenium.egg-info/entry_points.txt +2 -0
  9. proscenium-0.0.11/src/proscenium.egg-info/requires.txt +15 -0
  10. proscenium-0.0.11/src/proscenium.egg-info/top_level.txt +1 -0
  11. proscenium-0.0.11/tests/test_demo_typer_help.py +32 -0
  12. proscenium-0.0.11/tests/test_display.py +7 -0
  13. proscenium-0.0.9/pyproject.toml +0 -38
  14. {proscenium-0.0.9 → proscenium-0.0.11}/LICENSE +0 -0
  15. {proscenium-0.0.9 → proscenium-0.0.11}/README.md +0 -0
  16. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/__init__.py +0 -0
  17. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/admin/__init__.py +0 -0
  18. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/bin/__init__.py +0 -0
  19. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/bin/bot.py +0 -0
  20. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/core/__init__.py +0 -0
  21. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/interfaces/__init__.py +0 -0
  22. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/interfaces/slack.py +0 -0
  23. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/__init__.py +0 -0
  24. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/graph_rag.py +0 -0
  25. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/patterns/tools.py +0 -0
  26. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/util/__init__.py +0 -0
  27. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/__init__.py +0 -0
  28. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/complete.py +0 -0
  29. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/__init__.py +0 -0
  30. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/chat.py +0 -0
  31. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display/tools.py +0 -0
  32. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/display.py +0 -0
  33. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/invoke.py +0 -0
  34. {proscenium-0.0.9 → proscenium-0.0.11/src}/proscenium/verbs/remember.py +0 -0
@@ -1,35 +1,27 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: proscenium
3
- Version: 0.0.9
3
+ Version: 0.0.11
4
4
  Summary: Frame AI Agents
5
- License: ASFv2
6
- Author: Adam Pingel
7
- Author-email: oss@pingel.org
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"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+ [![CI](https://github.com/The-AI-Alliance/proscenium/actions/workflows/pytest.yml/badge.svg)](https://github.com/The-AI-Alliance/proscenium/actions/workflows/pytest.yml)
29
+ [![PyPI](https://img.shields.io/pypi/v/proscenium)](https://pypi.org/project/proscenium/)
30
+ [![License](https://img.shields.io/github/license/The-AI-Alliance/proscenium)](https://github.com/The-AI-Alliance/proscenium/tree/main?tab=Apache-2.0-1-ov-file#readme)
31
+ [![Issues](https://img.shields.io/github/issues/The-AI-Alliance/proscenium)](https://github.com/The-AI-Alliance/proscenium/issues)
32
+ [![GitHub stars](https://img.shields.io/github/stars/The-AI-Alliance/proscenium?style=social)](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,2 @@
1
+ [console_scripts]
2
+ proscenium-bot = proscenium.bin.bot:app
@@ -0,0 +1,15 @@
1
+ aisuite>=0.1.10
2
+ docstring_parser>=0.16
3
+ pydantic>=2.10.6
4
+ rich>=13.9.4
5
+ slack_sdk>=3.35.0
6
+
7
+ [test]
8
+ pytest<9,>=8
9
+ pytest-cov<6,>=5
10
+ typer>=0.15.2
11
+ click>=8.2.0
12
+ pytest>=8.3.5
13
+ neo4j>=5.28.1
14
+ gofannon>=0.25.13
15
+ lapidarist>=0.0.2
@@ -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)
@@ -0,0 +1,7 @@
1
+ from rich import print
2
+ from proscenium.verbs.display import header
3
+
4
+
5
+ def test_header():
6
+ print(header())
7
+ assert True, "Printed header"
@@ -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