pyagent-studio 0.2.3__tar.gz → 0.2.4__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.
- pyagent_studio-0.2.3/README.md → pyagent_studio-0.2.4/PKG-INFO +78 -1
- pyagent_studio-0.2.3/PKG-INFO → pyagent_studio-0.2.4/README.md +40 -35
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/pyproject.toml +6 -2
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/cli.py +23 -2
- pyagent_studio-0.2.4/src/pyagent_studio/data/sample_blueprint.yaml +73 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/__init__.py +2 -0
- pyagent_studio-0.2.4/src/pyagent_studio/services/runs_service.py +410 -0
- pyagent_studio-0.2.4/src/pyagent_studio/services/sample_data.py +139 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/app.py +93 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/_common.py +26 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/agents.py +31 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/diff.py +72 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/docs.py +36 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/governance.py +36 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/overview.py +118 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/providers.py +45 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/simulate.py +52 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/web/routes/traces.py +21 -5
- pyagent_studio-0.2.4/src/pyagent_studio/web/routes/workflows.py +54 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/static/htmx-ext-sse.min.js +8 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/static/htmx.min.js +1 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/static/studio.css +691 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/_bp_banner.html +5 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/_diff_result.html +25 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/_overview_body.html +211 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/_simulate_result.html +16 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/agents.html +54 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/base.html +44 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/diff.html +28 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/docs.html +34 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/governance.html +43 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/overview.html +7 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/providers.html +35 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/simulate.html +48 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/traces.html +20 -0
- pyagent_studio-0.2.4/src/pyagent_studio/web/templates/workflows.html +42 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/tests/test_cli.py +32 -0
- pyagent_studio-0.2.4/tests/test_runs_service.py +141 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/tests/test_web.py +130 -7
- pyagent_studio-0.2.3/src/pyagent_studio/web/app.py +0 -50
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/agents.py +0 -23
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/diff.py +0 -14
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/docs.py +0 -14
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/governance.py +0 -16
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/overview.py +0 -26
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/providers.py +0 -14
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/simulate.py +0 -14
- pyagent_studio-0.2.3/src/pyagent_studio/web/routes/workflows.py +0 -23
- pyagent_studio-0.2.3/src/pyagent_studio/web/static/htmx.min.js +0 -3
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/agents.html +0 -18
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/base.html +0 -32
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/diff.html +0 -14
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/docs.html +0 -11
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/governance.html +0 -18
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/overview.html +0 -17
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/providers.html +0 -17
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/simulate.html +0 -17
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/traces.html +0 -11
- pyagent_studio-0.2.3/src/pyagent_studio/web/templates/workflows.html +0 -16
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/.gitignore +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/__init__.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/py.typed +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/blueprint_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/governance_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/provider_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/simulation_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/services/trace_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/web/__init__.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/web/routes/__init__.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/src/pyagent_studio/web/static/style.css +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/tests/__init__.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/tests/test_provider_service.py +0 -0
- {pyagent_studio-0.2.3 → pyagent_studio-0.2.4}/tests/test_services.py +0 -0
|
@@ -1,10 +1,52 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyagent-studio
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Kubernetes Dashboard for Agent Systems — CLI + web control plane for multi-agent LLM blueprints
|
|
5
|
+
Project-URL: Homepage, https://pyagent.org
|
|
6
|
+
Project-URL: Repository, https://github.com/pyagent-core/pyagent
|
|
7
|
+
Project-URL: Documentation, https://pyagent.org
|
|
8
|
+
Project-URL: Agent Orchestration Patterns, https://pyagent.org/patterns/orchestrator-worker/
|
|
9
|
+
Project-URL: Agent Harness Architecture, https://pyagent.org/architecture/multi-agent-harness/
|
|
10
|
+
Project-URL: Agent Experience Optimization, https://pyagent.org/concepts/agent-experience-optimization/
|
|
11
|
+
Author-email: PyAgent Team <team@pyagent.org>
|
|
12
|
+
License: MIT
|
|
13
|
+
Keywords: LLM,agent control plane,agent harness,agents,dashboard,fastapi,litellm,multi-agent observability,studio,workbench
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Requires-Dist: click>=8.1
|
|
24
|
+
Requires-Dist: fastapi>=0.115
|
|
25
|
+
Requires-Dist: jinja2>=3.1
|
|
26
|
+
Requires-Dist: litellm>=1.40
|
|
27
|
+
Requires-Dist: pyagent-blueprint>=0.1.0
|
|
28
|
+
Requires-Dist: pyagent-providers>=0.1.0
|
|
29
|
+
Requires-Dist: pyagent-trace>=0.1.0
|
|
30
|
+
Requires-Dist: python-multipart>=0.0.9
|
|
31
|
+
Requires-Dist: rich>=13.0
|
|
32
|
+
Requires-Dist: uvicorn>=0.30
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
37
|
+
Description-Content-Type: text/markdown
|
|
38
|
+
|
|
1
39
|
# pyagent-studio
|
|
2
40
|
|
|
3
|
-
**
|
|
41
|
+
**Pillar 4 of the PyAgent production stack for multi-agent LLM systems** — CLI + web control plane for designing, simulating, debugging, and governing agent systems.
|
|
4
42
|
|
|
5
43
|
[](../../LICENSE)
|
|
6
44
|
[](https://www.python.org/downloads/)
|
|
7
45
|
|
|
46
|
+
> **Architecture Pillar: 📊 Observability**
|
|
47
|
+
> The control plane of the Observability pillar — a `kubectl`-style CLI and FastAPI web dashboard for simulating workflows, exploring recorded traces, diffing blueprint versions, and monitoring provider health and costs.
|
|
48
|
+
> Part of the full stack: install `pyagent-all` for all pillars.
|
|
49
|
+
|
|
8
50
|
## Install
|
|
9
51
|
|
|
10
52
|
```bash
|
|
@@ -283,6 +325,41 @@ Studio integrates with every PyAgent package:
|
|
|
283
325
|
| Live trace streaming (SSE) | ✓ | ✗ | ✗ | ✗ |
|
|
284
326
|
| Governance & compliance | ✓ | ✗ | ✗ | ✗ |
|
|
285
327
|
|
|
328
|
+
## Other packages in this pillar
|
|
329
|
+
|
|
330
|
+
- `pyagent-trace` — TraceEventBus, OTel spans, cost tracking, record/replay
|
|
331
|
+
|
|
332
|
+
## Full stack
|
|
333
|
+
|
|
334
|
+
Install all pillars at once: `pip install pyagent-all`
|
|
335
|
+
|
|
336
|
+
→ [pyagent.org](https://pyagent.org) for full documentation.
|
|
337
|
+
|
|
286
338
|
## Full Documentation
|
|
287
339
|
|
|
288
340
|
See [pyagent.org](https://pyagent.org) for full API reference and integration guides.
|
|
341
|
+
|
|
342
|
+
<!-- pyagent-ecosystem-footer:start -->
|
|
343
|
+
|
|
344
|
+
## The PyAgent ecosystem
|
|
345
|
+
|
|
346
|
+
PyAgent is a production stack for multi-agent LLM systems. Each package is independent — install
|
|
347
|
+
only what you need, or get everything with [`pip install pyagent-all`](https://pyagent.org/getting-started/).
|
|
348
|
+
|
|
349
|
+
| Package | What it gives you |
|
|
350
|
+
|---------|-------------------|
|
|
351
|
+
| `pyagent-blueprint` | [Declarative multi-agent blueprints](https://pyagent.org/guides/blueprint/) — compile, validate, and diff agent systems from YAML |
|
|
352
|
+
| `pyagent-patterns` | [Reusable multi-agent design patterns](https://pyagent.org/packages/patterns/) — Supervisor, Pipeline, ReAct, and 15 more |
|
|
353
|
+
| `pyagent-router` | [Difficulty-aware model routing](https://pyagent.org/guides/router/) — cost-efficient model selection per task |
|
|
354
|
+
| `pyagent-compress` | [Token-efficient agent compression](https://pyagent.org/guides/compression/) — inter-agent token budgets |
|
|
355
|
+
| `pyagent-providers` | [Multi-provider orchestration](https://pyagent.org/guides/providers/) — fallback chains and capability negotiation |
|
|
356
|
+
| `pyagent-context` | [Stateful agent memory](https://pyagent.org/guides/context/) — trust-aware, three-tier context ledger |
|
|
357
|
+
| `pyagent-trace` | [Multi-agent observability & tracing](https://pyagent.org/guides/tracing/) — pattern-aware OpenTelemetry spans |
|
|
358
|
+
| `pyagent-studio` | [Agent control plane dashboard](https://pyagent.org/guides/studio/) — live traces, cost, and governance |
|
|
359
|
+
|
|
360
|
+
**Learn the concepts:**
|
|
361
|
+
[The Orchestrator-Worker pattern](https://pyagent.org/patterns/orchestrator-worker/) ·
|
|
362
|
+
[Engineering a resilient multi-agent harness](https://pyagent.org/architecture/multi-agent-harness/) ·
|
|
363
|
+
[Agent Experience Optimization (AXO)](https://pyagent.org/concepts/agent-experience-optimization/)
|
|
364
|
+
|
|
365
|
+
<!-- pyagent-ecosystem-footer:end -->
|
|
@@ -1,44 +1,14 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: pyagent-studio
|
|
3
|
-
Version: 0.2.3
|
|
4
|
-
Summary: Kubernetes Dashboard for Agent Systems — CLI + web control plane for multi-agent LLM blueprints
|
|
5
|
-
Project-URL: Homepage, https://pyagent.org
|
|
6
|
-
Project-URL: Repository, https://github.com/pyagent-core/pyagent
|
|
7
|
-
Project-URL: Documentation, https://pyagent.org
|
|
8
|
-
Author-email: PyAgent Team <team@pyagent.org>
|
|
9
|
-
License: MIT
|
|
10
|
-
Keywords: LLM,agents,dashboard,fastapi,litellm,studio,workbench
|
|
11
|
-
Classifier: Development Status :: 3 - Alpha
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
-
Classifier: Typing :: Typed
|
|
19
|
-
Requires-Python: >=3.11
|
|
20
|
-
Requires-Dist: click>=8.1
|
|
21
|
-
Requires-Dist: fastapi>=0.115
|
|
22
|
-
Requires-Dist: jinja2>=3.1
|
|
23
|
-
Requires-Dist: litellm>=1.40
|
|
24
|
-
Requires-Dist: pyagent-blueprint>=0.1.0
|
|
25
|
-
Requires-Dist: pyagent-providers>=0.1.0
|
|
26
|
-
Requires-Dist: pyagent-trace>=0.1.0
|
|
27
|
-
Requires-Dist: rich>=13.0
|
|
28
|
-
Requires-Dist: uvicorn>=0.30
|
|
29
|
-
Provides-Extra: dev
|
|
30
|
-
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
31
|
-
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
32
|
-
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
33
|
-
Description-Content-Type: text/markdown
|
|
34
|
-
|
|
35
1
|
# pyagent-studio
|
|
36
2
|
|
|
37
|
-
**
|
|
3
|
+
**Pillar 4 of the PyAgent production stack for multi-agent LLM systems** — CLI + web control plane for designing, simulating, debugging, and governing agent systems.
|
|
38
4
|
|
|
39
5
|
[](../../LICENSE)
|
|
40
6
|
[](https://www.python.org/downloads/)
|
|
41
7
|
|
|
8
|
+
> **Architecture Pillar: 📊 Observability**
|
|
9
|
+
> The control plane of the Observability pillar — a `kubectl`-style CLI and FastAPI web dashboard for simulating workflows, exploring recorded traces, diffing blueprint versions, and monitoring provider health and costs.
|
|
10
|
+
> Part of the full stack: install `pyagent-all` for all pillars.
|
|
11
|
+
|
|
42
12
|
## Install
|
|
43
13
|
|
|
44
14
|
```bash
|
|
@@ -317,6 +287,41 @@ Studio integrates with every PyAgent package:
|
|
|
317
287
|
| Live trace streaming (SSE) | ✓ | ✗ | ✗ | ✗ |
|
|
318
288
|
| Governance & compliance | ✓ | ✗ | ✗ | ✗ |
|
|
319
289
|
|
|
290
|
+
## Other packages in this pillar
|
|
291
|
+
|
|
292
|
+
- `pyagent-trace` — TraceEventBus, OTel spans, cost tracking, record/replay
|
|
293
|
+
|
|
294
|
+
## Full stack
|
|
295
|
+
|
|
296
|
+
Install all pillars at once: `pip install pyagent-all`
|
|
297
|
+
|
|
298
|
+
→ [pyagent.org](https://pyagent.org) for full documentation.
|
|
299
|
+
|
|
320
300
|
## Full Documentation
|
|
321
301
|
|
|
322
302
|
See [pyagent.org](https://pyagent.org) for full API reference and integration guides.
|
|
303
|
+
|
|
304
|
+
<!-- pyagent-ecosystem-footer:start -->
|
|
305
|
+
|
|
306
|
+
## The PyAgent ecosystem
|
|
307
|
+
|
|
308
|
+
PyAgent is a production stack for multi-agent LLM systems. Each package is independent — install
|
|
309
|
+
only what you need, or get everything with [`pip install pyagent-all`](https://pyagent.org/getting-started/).
|
|
310
|
+
|
|
311
|
+
| Package | What it gives you |
|
|
312
|
+
|---------|-------------------|
|
|
313
|
+
| `pyagent-blueprint` | [Declarative multi-agent blueprints](https://pyagent.org/guides/blueprint/) — compile, validate, and diff agent systems from YAML |
|
|
314
|
+
| `pyagent-patterns` | [Reusable multi-agent design patterns](https://pyagent.org/packages/patterns/) — Supervisor, Pipeline, ReAct, and 15 more |
|
|
315
|
+
| `pyagent-router` | [Difficulty-aware model routing](https://pyagent.org/guides/router/) — cost-efficient model selection per task |
|
|
316
|
+
| `pyagent-compress` | [Token-efficient agent compression](https://pyagent.org/guides/compression/) — inter-agent token budgets |
|
|
317
|
+
| `pyagent-providers` | [Multi-provider orchestration](https://pyagent.org/guides/providers/) — fallback chains and capability negotiation |
|
|
318
|
+
| `pyagent-context` | [Stateful agent memory](https://pyagent.org/guides/context/) — trust-aware, three-tier context ledger |
|
|
319
|
+
| `pyagent-trace` | [Multi-agent observability & tracing](https://pyagent.org/guides/tracing/) — pattern-aware OpenTelemetry spans |
|
|
320
|
+
| `pyagent-studio` | [Agent control plane dashboard](https://pyagent.org/guides/studio/) — live traces, cost, and governance |
|
|
321
|
+
|
|
322
|
+
**Learn the concepts:**
|
|
323
|
+
[The Orchestrator-Worker pattern](https://pyagent.org/patterns/orchestrator-worker/) ·
|
|
324
|
+
[Engineering a resilient multi-agent harness](https://pyagent.org/architecture/multi-agent-harness/) ·
|
|
325
|
+
[Agent Experience Optimization (AXO)](https://pyagent.org/concepts/agent-experience-optimization/)
|
|
326
|
+
|
|
327
|
+
<!-- pyagent-ecosystem-footer:end -->
|
|
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyagent-studio"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.4"
|
|
8
8
|
description = "Kubernetes Dashboard for Agent Systems — CLI + web control plane for multi-agent LLM blueprints"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
11
11
|
license = {text = "MIT"}
|
|
12
12
|
authors = [{name = "PyAgent Team", email = "team@pyagent.org"}]
|
|
13
|
-
keywords = ["agents", "studio", "LLM", "workbench", "dashboard", "fastapi", "litellm"]
|
|
13
|
+
keywords = ["agents", "studio", "LLM", "workbench", "dashboard", "fastapi", "litellm", "multi-agent observability", "agent control plane", "agent harness"]
|
|
14
14
|
classifiers = [
|
|
15
15
|
"Development Status :: 3 - Alpha",
|
|
16
16
|
"Intended Audience :: Developers",
|
|
@@ -31,12 +31,16 @@ dependencies = [
|
|
|
31
31
|
"fastapi>=0.115",
|
|
32
32
|
"uvicorn>=0.30",
|
|
33
33
|
"jinja2>=3.1",
|
|
34
|
+
"python-multipart>=0.0.9",
|
|
34
35
|
]
|
|
35
36
|
|
|
36
37
|
[project.urls]
|
|
37
38
|
Homepage = "https://pyagent.org"
|
|
38
39
|
Repository = "https://github.com/pyagent-core/pyagent"
|
|
39
40
|
Documentation = "https://pyagent.org"
|
|
41
|
+
"Agent Orchestration Patterns" = "https://pyagent.org/patterns/orchestrator-worker/"
|
|
42
|
+
"Agent Harness Architecture" = "https://pyagent.org/architecture/multi-agent-harness/"
|
|
43
|
+
"Agent Experience Optimization" = "https://pyagent.org/concepts/agent-experience-optimization/"
|
|
40
44
|
|
|
41
45
|
[project.optional-dependencies]
|
|
42
46
|
dev = ["pytest>=8.0", "pytest-asyncio>=0.23", "httpx>=0.27"]
|
|
@@ -266,7 +266,21 @@ def describe(file: str) -> None:
|
|
|
266
266
|
@main.command()
|
|
267
267
|
@click.option("--port", default=8420, type=int, help="Web dashboard port.")
|
|
268
268
|
@click.option("--host", default="127.0.0.1", help="Web dashboard host.")
|
|
269
|
-
|
|
269
|
+
@click.option(
|
|
270
|
+
"--trace",
|
|
271
|
+
"trace_path",
|
|
272
|
+
type=click.Path(exists=True),
|
|
273
|
+
default=None,
|
|
274
|
+
help="Path to a recorded trace JSONL file to load on the Overview dashboard.",
|
|
275
|
+
)
|
|
276
|
+
@click.option(
|
|
277
|
+
"--blueprint",
|
|
278
|
+
"blueprint_path",
|
|
279
|
+
type=click.Path(exists=True),
|
|
280
|
+
default=None,
|
|
281
|
+
help="Path to a blueprint YAML to load for the resource tabs (defaults to a bundled sample).",
|
|
282
|
+
)
|
|
283
|
+
def dashboard(port: int, host: str, trace_path: str | None, blueprint_path: str | None) -> None:
|
|
270
284
|
"""Launch the web dashboard."""
|
|
271
285
|
try:
|
|
272
286
|
import uvicorn
|
|
@@ -277,8 +291,15 @@ def dashboard(port: int, host: str) -> None:
|
|
|
277
291
|
)
|
|
278
292
|
sys.exit(1)
|
|
279
293
|
|
|
294
|
+
from pyagent_studio.web.app import create_app
|
|
295
|
+
|
|
280
296
|
click.echo(f"Starting dashboard at http://{host}:{port}")
|
|
281
|
-
|
|
297
|
+
if trace_path:
|
|
298
|
+
click.echo(f"Loading trace: {trace_path}")
|
|
299
|
+
if blueprint_path:
|
|
300
|
+
click.echo(f"Loading blueprint: {blueprint_path}")
|
|
301
|
+
app = create_app(trace_path=trace_path, blueprint_path=blueprint_path)
|
|
302
|
+
uvicorn.run(app, host=host, port=port)
|
|
282
303
|
|
|
283
304
|
|
|
284
305
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
api_version: pyagent/v1
|
|
2
|
+
metadata:
|
|
3
|
+
name: customer-support
|
|
4
|
+
version: 1.2.0
|
|
5
|
+
description: Production customer-support routing with billing, classification, and policy checks
|
|
6
|
+
owner: platform-team
|
|
7
|
+
tags: [support, production]
|
|
8
|
+
providers:
|
|
9
|
+
primary:
|
|
10
|
+
provider: anthropic
|
|
11
|
+
model: claude-3-5-sonnet
|
|
12
|
+
classifier_provider:
|
|
13
|
+
provider: openai
|
|
14
|
+
model: gpt-4o-mini
|
|
15
|
+
fallback:
|
|
16
|
+
provider: openai
|
|
17
|
+
model: gpt-4o
|
|
18
|
+
agents:
|
|
19
|
+
classifier:
|
|
20
|
+
prompt: "Classify incoming requests into: billing, technical, or general."
|
|
21
|
+
provider: classifier_provider
|
|
22
|
+
description: Routes customer requests to the right specialist
|
|
23
|
+
guardrails: [pii_redact]
|
|
24
|
+
billing:
|
|
25
|
+
prompt: "Resolve billing inquiries, refunds, and invoice questions."
|
|
26
|
+
provider: primary
|
|
27
|
+
description: Billing specialist agent
|
|
28
|
+
tools: [lookup_invoice, issue_refund]
|
|
29
|
+
guardrails: [pii_redact, cost_cap]
|
|
30
|
+
technical:
|
|
31
|
+
prompt: "Handle technical support and troubleshooting."
|
|
32
|
+
provider: primary
|
|
33
|
+
description: Technical support agent
|
|
34
|
+
tools: [search_kb]
|
|
35
|
+
policy_checker:
|
|
36
|
+
prompt: "Verify that responses comply with company policy."
|
|
37
|
+
provider: classifier_provider
|
|
38
|
+
description: Policy and compliance gate
|
|
39
|
+
guardrails: [policy_enforce]
|
|
40
|
+
workflows:
|
|
41
|
+
customer-support:
|
|
42
|
+
pattern: supervisor
|
|
43
|
+
agents:
|
|
44
|
+
classifier: classifier
|
|
45
|
+
routes:
|
|
46
|
+
billing: billing
|
|
47
|
+
technical: technical
|
|
48
|
+
recovery:
|
|
49
|
+
max_retries: 2
|
|
50
|
+
timeout_seconds: 30
|
|
51
|
+
fallback_provider: fallback
|
|
52
|
+
refund-processor:
|
|
53
|
+
pattern: pipeline
|
|
54
|
+
agents:
|
|
55
|
+
stages:
|
|
56
|
+
billing: billing
|
|
57
|
+
policy_checker: policy_checker
|
|
58
|
+
contracts:
|
|
59
|
+
customer-support:
|
|
60
|
+
input:
|
|
61
|
+
type: string
|
|
62
|
+
max_tokens: 2000
|
|
63
|
+
output:
|
|
64
|
+
type: string
|
|
65
|
+
sla:
|
|
66
|
+
latency_p95_ms: 5000
|
|
67
|
+
cost_max_usd: 0.05
|
|
68
|
+
observability:
|
|
69
|
+
tracing:
|
|
70
|
+
enabled: true
|
|
71
|
+
cost_budget:
|
|
72
|
+
daily_usd: 100.0
|
|
73
|
+
alert_threshold: 0.8
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
from pyagent_studio.services.blueprint_service import BlueprintService
|
|
4
4
|
from pyagent_studio.services.governance_service import GovernanceService
|
|
5
|
+
from pyagent_studio.services.runs_service import RunsService
|
|
5
6
|
from pyagent_studio.services.simulation_service import SimulationService
|
|
6
7
|
from pyagent_studio.services.trace_service import TraceService
|
|
7
8
|
|
|
8
9
|
__all__ = [
|
|
9
10
|
"BlueprintService",
|
|
10
11
|
"GovernanceService",
|
|
12
|
+
"RunsService",
|
|
11
13
|
"SimulationService",
|
|
12
14
|
"TraceService",
|
|
13
15
|
]
|