RouteKitAI 0.1.0__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.
- routekitai-0.1.0/CHANGELOG.md +70 -0
- routekitai-0.1.0/LICENSE +21 -0
- routekitai-0.1.0/MANIFEST.in +9 -0
- routekitai-0.1.0/PKG-INFO +328 -0
- routekitai-0.1.0/README.md +283 -0
- routekitai-0.1.0/docs/architecture.md +315 -0
- routekitai-0.1.0/docs/oidc-publishing.md +146 -0
- routekitai-0.1.0/docs/security-and-governance.md +481 -0
- routekitai-0.1.0/examples/__init__.py +1 -0
- routekitai-0.1.0/examples/basic.py +54 -0
- routekitai-0.1.0/examples/eval_regression.py +112 -0
- routekitai-0.1.0/examples/function_calling_policy.py +87 -0
- routekitai-0.1.0/examples/graph_agent.py +100 -0
- routekitai-0.1.0/examples/graph_agent_real.py +196 -0
- routekitai-0.1.0/examples/graph_policy.py +49 -0
- routekitai-0.1.0/examples/hello_routekit.py +71 -0
- routekitai-0.1.0/examples/plan_execute_policy.py +55 -0
- routekitai-0.1.0/examples/react_policy.py +113 -0
- routekitai-0.1.0/examples/supervisor_agent.py +69 -0
- routekitai-0.1.0/examples/supervisor_policy.py +57 -0
- routekitai-0.1.0/pyproject.toml +156 -0
- routekitai-0.1.0/setup.cfg +4 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/PKG-INFO +328 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/SOURCES.txt +103 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/dependency_links.txt +1 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/entry_points.txt +2 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/requires.txt +24 -0
- routekitai-0.1.0/src/RouteKitAI.egg-info/top_level.txt +1 -0
- routekitai-0.1.0/src/routekitai/__init__.py +53 -0
- routekitai-0.1.0/src/routekitai/cli/__init__.py +18 -0
- routekitai-0.1.0/src/routekitai/cli/main.py +40 -0
- routekitai-0.1.0/src/routekitai/cli/replay.py +80 -0
- routekitai-0.1.0/src/routekitai/cli/run.py +95 -0
- routekitai-0.1.0/src/routekitai/cli/serve.py +966 -0
- routekitai-0.1.0/src/routekitai/cli/test_agent.py +178 -0
- routekitai-0.1.0/src/routekitai/cli/trace.py +209 -0
- routekitai-0.1.0/src/routekitai/cli/trace_analyze.py +120 -0
- routekitai-0.1.0/src/routekitai/cli/trace_search.py +126 -0
- routekitai-0.1.0/src/routekitai/core/__init__.py +58 -0
- routekitai-0.1.0/src/routekitai/core/agent.py +325 -0
- routekitai-0.1.0/src/routekitai/core/errors.py +49 -0
- routekitai-0.1.0/src/routekitai/core/hooks.py +174 -0
- routekitai-0.1.0/src/routekitai/core/memory.py +54 -0
- routekitai-0.1.0/src/routekitai/core/message.py +132 -0
- routekitai-0.1.0/src/routekitai/core/model.py +91 -0
- routekitai-0.1.0/src/routekitai/core/policies.py +373 -0
- routekitai-0.1.0/src/routekitai/core/policy.py +85 -0
- routekitai-0.1.0/src/routekitai/core/policy_adapter.py +133 -0
- routekitai-0.1.0/src/routekitai/core/runtime.py +1403 -0
- routekitai-0.1.0/src/routekitai/core/tool.py +148 -0
- routekitai-0.1.0/src/routekitai/core/tools.py +180 -0
- routekitai-0.1.0/src/routekitai/evals/__init__.py +13 -0
- routekitai-0.1.0/src/routekitai/evals/dataset.py +75 -0
- routekitai-0.1.0/src/routekitai/evals/metrics.py +101 -0
- routekitai-0.1.0/src/routekitai/evals/runner.py +184 -0
- routekitai-0.1.0/src/routekitai/graphs/__init__.py +12 -0
- routekitai-0.1.0/src/routekitai/graphs/executors.py +457 -0
- routekitai-0.1.0/src/routekitai/graphs/graph.py +164 -0
- routekitai-0.1.0/src/routekitai/memory/__init__.py +13 -0
- routekitai-0.1.0/src/routekitai/memory/episodic.py +242 -0
- routekitai-0.1.0/src/routekitai/memory/kv.py +34 -0
- routekitai-0.1.0/src/routekitai/memory/retrieval.py +192 -0
- routekitai-0.1.0/src/routekitai/memory/vector.py +700 -0
- routekitai-0.1.0/src/routekitai/memory/working.py +66 -0
- routekitai-0.1.0/src/routekitai/message.py +29 -0
- routekitai-0.1.0/src/routekitai/model.py +48 -0
- routekitai-0.1.0/src/routekitai/observability/__init__.py +21 -0
- routekitai-0.1.0/src/routekitai/observability/analyzer.py +314 -0
- routekitai-0.1.0/src/routekitai/observability/exporters/__init__.py +10 -0
- routekitai-0.1.0/src/routekitai/observability/exporters/base.py +30 -0
- routekitai-0.1.0/src/routekitai/observability/exporters/jsonl.py +81 -0
- routekitai-0.1.0/src/routekitai/observability/exporters/otel.py +119 -0
- routekitai-0.1.0/src/routekitai/observability/spans.py +111 -0
- routekitai-0.1.0/src/routekitai/observability/streaming.py +117 -0
- routekitai-0.1.0/src/routekitai/observability/trace.py +144 -0
- routekitai-0.1.0/src/routekitai/providers/__init__.py +9 -0
- routekitai-0.1.0/src/routekitai/providers/anthropic.py +227 -0
- routekitai-0.1.0/src/routekitai/providers/azure_openai.py +243 -0
- routekitai-0.1.0/src/routekitai/providers/local.py +196 -0
- routekitai-0.1.0/src/routekitai/providers/openai.py +321 -0
- routekitai-0.1.0/src/routekitai/py.typed +0 -0
- routekitai-0.1.0/src/routekitai/sandbox/__init__.py +12 -0
- routekitai-0.1.0/src/routekitai/sandbox/filesystem.py +131 -0
- routekitai-0.1.0/src/routekitai/sandbox/network.py +142 -0
- routekitai-0.1.0/src/routekitai/sandbox/permissions.py +70 -0
- routekitai-0.1.0/src/routekitai/tool.py +33 -0
- routekitai-0.1.0/tests/test_evals.py +184 -0
- routekitai-0.1.0/tests/test_graphs.py +146 -0
- routekitai-0.1.0/tests/test_graphs_subgraph.py +86 -0
- routekitai-0.1.0/tests/test_hooks.py +281 -0
- routekitai-0.1.0/tests/test_integration.py +180 -0
- routekitai-0.1.0/tests/test_memory.py +209 -0
- routekitai-0.1.0/tests/test_memory_kv.py +37 -0
- routekitai-0.1.0/tests/test_memory_vector.py +189 -0
- routekitai-0.1.0/tests/test_message.py +95 -0
- routekitai-0.1.0/tests/test_otel_exporter.py +35 -0
- routekitai-0.1.0/tests/test_runtime.py +316 -0
- routekitai-0.1.0/tests/test_sandbox_filesystem.py +86 -0
- routekitai-0.1.0/tests/test_sandbox_network.py +60 -0
- routekitai-0.1.0/tests/test_streaming.py +518 -0
- routekitai-0.1.0/tests/test_streaming_serve.py +139 -0
- routekitai-0.1.0/tests/test_tool.py +167 -0
- routekitai-0.1.0/tests/test_tools.py +300 -0
- routekitai-0.1.0/tests/test_trace_analyzer.py +444 -0
- routekitai-0.1.0/tests/test_trace_analyzer_integration.py +209 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial project scaffold
|
|
12
|
+
- Core primitives: Model, Message, Tool, Agent, Runtime
|
|
13
|
+
- Graph-based orchestration with nodes, edges, and state management
|
|
14
|
+
- Step-based execution with complete trace capture
|
|
15
|
+
- Immutable trace format with event logging
|
|
16
|
+
- Deterministic replay engine with stub support
|
|
17
|
+
- Policy system: ReAct, FunctionCalling, Graph, Supervisor, PlanExecute
|
|
18
|
+
- Memory backends: EpisodicMemory, RetrievalMemory
|
|
19
|
+
- Security hooks: PII redaction, tool filtering, approval gates
|
|
20
|
+
- CLI tools: run, trace, replay, test-agent commands
|
|
21
|
+
- Evaluation harness with dataset support and regression testing
|
|
22
|
+
- Multi-agent supervisor pattern with delegation
|
|
23
|
+
- Error handling with context and proper exception types
|
|
24
|
+
- Type-safe APIs with full mypy compliance
|
|
25
|
+
- Async-first design with asyncio support
|
|
26
|
+
- Development tooling: ruff, mypy, pytest configuration
|
|
27
|
+
- Comprehensive test suite
|
|
28
|
+
- Documentation: architecture, security, examples
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
- N/A (initial release)
|
|
32
|
+
|
|
33
|
+
### Deprecated
|
|
34
|
+
- N/A (initial release)
|
|
35
|
+
|
|
36
|
+
### Removed
|
|
37
|
+
- N/A (initial release)
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- N/A (initial release)
|
|
41
|
+
|
|
42
|
+
### Security
|
|
43
|
+
- PII redaction for emails, phones, and custom patterns
|
|
44
|
+
- Tool allow/deny lists at agent and runtime levels
|
|
45
|
+
- Approval gates for high-risk permissions
|
|
46
|
+
- Trace security with redaction support
|
|
47
|
+
|
|
48
|
+
## [0.1.0] - 2024-01-XX
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
- Initial public release
|
|
52
|
+
- Core framework functionality
|
|
53
|
+
- Graph orchestration
|
|
54
|
+
- Tracing and replay
|
|
55
|
+
- Security features
|
|
56
|
+
- CLI tools
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Version History
|
|
61
|
+
|
|
62
|
+
- **0.1.0**: Initial release with core features
|
|
63
|
+
|
|
64
|
+
## Upcoming Features
|
|
65
|
+
|
|
66
|
+
See [Architecture Guide](docs/architecture.md#future-directions) for planned features.
|
|
67
|
+
|
|
68
|
+
## Contributing
|
|
69
|
+
|
|
70
|
+
See [Contributing Guide](CONTRIBUTING.md) (coming soon) for how to contribute changes.
|
routekitai-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mohamed Ghassen Brahim
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: RouteKitAI
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: An agent development + orchestration framework
|
|
5
|
+
Author: Mohamed Ghassen Brahim
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/MedGhassen/RouteKit
|
|
8
|
+
Project-URL: Documentation, https://routekit.readthedocs.io
|
|
9
|
+
Project-URL: Repository, https://github.com/MedGhassen/RouteKit
|
|
10
|
+
Project-URL: Issues, https://github.com/MedGhassen/RouteKit/issues
|
|
11
|
+
Keywords: ai,agents,orchestration,llm,framework
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: pydantic<3.0.0,>=2.0.0
|
|
24
|
+
Requires-Dist: numpy<3.0.0,>=1.24.0
|
|
25
|
+
Requires-Dist: httpx>=0.24.0
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
30
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
31
|
+
Requires-Dist: ruff<1.0.0,>=0.1.0; extra == "dev"
|
|
32
|
+
Requires-Dist: rich>=13.0.0; extra == "dev"
|
|
33
|
+
Requires-Dist: typer>=0.9.0; extra == "dev"
|
|
34
|
+
Requires-Dist: safety>=2.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: bandit>=1.7.0; extra == "dev"
|
|
36
|
+
Provides-Extra: ui
|
|
37
|
+
Requires-Dist: fastapi>=0.104.0; extra == "ui"
|
|
38
|
+
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "ui"
|
|
39
|
+
Provides-Extra: optional
|
|
40
|
+
Requires-Dist: sentence-transformers>=2.2.0; extra == "optional"
|
|
41
|
+
Requires-Dist: faiss-cpu>=1.7.4; extra == "optional"
|
|
42
|
+
Requires-Dist: openai>=1.0.0; extra == "optional"
|
|
43
|
+
Requires-Dist: nest-asyncio>=1.5.0; extra == "optional"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# RouteKitAI
|
|
47
|
+
|
|
48
|
+
<div align="center">
|
|
49
|
+
|
|
50
|
+
**A minimal, production-ready framework for building and orchestrating AI agents**
|
|
51
|
+
|
|
52
|
+
[](https://www.python.org/downloads/)
|
|
53
|
+
[](https://opensource.org/licenses/MIT)
|
|
54
|
+
[](https://github.com/astral-sh/ruff)
|
|
55
|
+
[](http://mypy-lang.org/)
|
|
56
|
+
|
|
57
|
+
[Features](#features) โข [Quick Start](#quick-start) โข [Documentation](#documentation) โข [Examples](#examples) โข [Contributing](#contributing)
|
|
58
|
+
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
RouteKitAI is a Python framework for building AI agents with **graph-based orchestration**, **built-in tracing**, and **deterministic replay**. Unlike other frameworks, RouteKitAI treats observability and testability as first-class features from day one.
|
|
64
|
+
|
|
65
|
+
## โจ Features
|
|
66
|
+
|
|
67
|
+
### ๐ฏ Core Capabilities
|
|
68
|
+
|
|
69
|
+
- **Graph-Native Orchestration**: Define agent workflows as explicit graphs with clear control flow
|
|
70
|
+
- **Automatic Tracing**: Every execution produces a complete, immutable trace log
|
|
71
|
+
- **Deterministic Replay**: Reproduce any agent run exactly for testing and debugging
|
|
72
|
+
- **Type-Safe APIs**: Full type hints with mypy compliance
|
|
73
|
+
- **Async-First**: Built for modern Python async/await patterns
|
|
74
|
+
- **Minimal API**: Just 5 core primitivesโno bloat
|
|
75
|
+
|
|
76
|
+
### ๐ก๏ธ Production Features
|
|
77
|
+
|
|
78
|
+
- **Security Hooks**: PII redaction, tool allow/deny lists, approval gates
|
|
79
|
+
- **Memory Support**: Episodic, retrieval, and vector memory backends
|
|
80
|
+
- **Policy System**: ReAct, Supervisor, Graph, and custom policies
|
|
81
|
+
- **Error Handling**: Comprehensive error types with context
|
|
82
|
+
- **CLI Tools**: Run, trace, replay, and test agents from the command line
|
|
83
|
+
- **Trace Analysis**: Metrics, timeline visualization, step-by-step debugging, and search
|
|
84
|
+
|
|
85
|
+
## ๐ Quick Start
|
|
86
|
+
|
|
87
|
+
### Installation
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pip install RouteKitAI
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
For development with CLI tools:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pip install "RouteKitAI[dev]"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Basic Example
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
import asyncio
|
|
103
|
+
from routekitai import Agent
|
|
104
|
+
from routekitai.providers.local import FakeModel
|
|
105
|
+
from routekitai.core.tools import EchoTool
|
|
106
|
+
|
|
107
|
+
# Create a model
|
|
108
|
+
model = FakeModel(name="test")
|
|
109
|
+
model.add_response("Hello from routekitai!")
|
|
110
|
+
|
|
111
|
+
# Create an agent
|
|
112
|
+
agent = Agent(
|
|
113
|
+
name="my_agent",
|
|
114
|
+
model=model,
|
|
115
|
+
tools=[EchoTool()]
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Run the agent
|
|
119
|
+
async def main():
|
|
120
|
+
result = await agent.run("Hello!")
|
|
121
|
+
print(result.output.content)
|
|
122
|
+
print(f"Trace ID: {result.trace_id}")
|
|
123
|
+
|
|
124
|
+
asyncio.run(main())
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Graph-Based Workflow
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
import asyncio
|
|
131
|
+
from routekitai import Agent
|
|
132
|
+
from routekitai.core.policies import GraphPolicy
|
|
133
|
+
from routekitai.graphs import Graph, GraphNode, GraphEdge, NodeType
|
|
134
|
+
from routekitai.providers.local import FakeModel
|
|
135
|
+
from routekitai.core.tools import EchoTool
|
|
136
|
+
|
|
137
|
+
# Create models and agents
|
|
138
|
+
model1 = FakeModel(name="model1")
|
|
139
|
+
model1.add_response("Processing input...")
|
|
140
|
+
|
|
141
|
+
model2 = FakeModel(name="model2")
|
|
142
|
+
model2.add_response("Finalizing result...")
|
|
143
|
+
|
|
144
|
+
agent1 = Agent(name="agent1", model=model1, tools=[EchoTool()])
|
|
145
|
+
agent2 = Agent(name="agent2", model=model2, tools=[])
|
|
146
|
+
|
|
147
|
+
# Define a graph: agent1 -> tool -> agent2
|
|
148
|
+
graph = Graph(
|
|
149
|
+
name="example_graph",
|
|
150
|
+
entry_node="start",
|
|
151
|
+
exit_node="end",
|
|
152
|
+
nodes=[
|
|
153
|
+
GraphNode(
|
|
154
|
+
id="start",
|
|
155
|
+
type=NodeType.MODEL,
|
|
156
|
+
agent_name="agent1",
|
|
157
|
+
output_mapping={"output": "processed_input"},
|
|
158
|
+
),
|
|
159
|
+
GraphNode(
|
|
160
|
+
id="echo_tool",
|
|
161
|
+
type=NodeType.TOOL,
|
|
162
|
+
tool_name="echo",
|
|
163
|
+
input_mapping={"processed_input": "message"},
|
|
164
|
+
output_mapping={"result": "echo_result"},
|
|
165
|
+
),
|
|
166
|
+
GraphNode(
|
|
167
|
+
id="end",
|
|
168
|
+
type=NodeType.MODEL,
|
|
169
|
+
agent_name="agent2",
|
|
170
|
+
input_mapping={"echo_result": "prompt"},
|
|
171
|
+
),
|
|
172
|
+
],
|
|
173
|
+
edges=[
|
|
174
|
+
GraphEdge(source="start", target="echo_tool"),
|
|
175
|
+
GraphEdge(source="echo_tool", target="end"),
|
|
176
|
+
],
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
# Create agent with graph policy
|
|
180
|
+
agent = Agent(
|
|
181
|
+
name="graph_agent",
|
|
182
|
+
model=model1,
|
|
183
|
+
policy=GraphPolicy(graph=graph)
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
# Run the agent
|
|
187
|
+
async def main():
|
|
188
|
+
result = await agent.run("Process this task")
|
|
189
|
+
print(result.output.content)
|
|
190
|
+
|
|
191
|
+
asyncio.run(main())
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## ๐ Documentation
|
|
195
|
+
|
|
196
|
+
- **[Architecture Guide](docs/architecture.md)**: Deep dive into RouteKitAI's design
|
|
197
|
+
- **[Security & Governance](docs/security-and-governance.md)**: Security features and best practices
|
|
198
|
+
- **[API Reference](https://RouteKitAI.readthedocs.io)**: Complete API documentation (coming soon)
|
|
199
|
+
|
|
200
|
+
## ๐ Examples
|
|
201
|
+
|
|
202
|
+
Check out the [`examples/`](examples/) directory for complete examples:
|
|
203
|
+
|
|
204
|
+
- **[Basic Agent](examples/hello_RouteKitAI.py)**: Simple agent with tools
|
|
205
|
+
- **[Graph Orchestration](examples/graph_agent.py)**: Multi-agent workflow
|
|
206
|
+
- **[Supervisor Pattern](examples/supervisor_agent.py)**: Supervisor delegating to sub-agents
|
|
207
|
+
- **[Evaluation Harness](examples/eval_regression.py)**: Testing agents with datasets
|
|
208
|
+
|
|
209
|
+
## ๐ ๏ธ CLI Commands
|
|
210
|
+
|
|
211
|
+
RouteKitAI provides a CLI for common operations:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Run an agent script
|
|
215
|
+
RouteKitAI run agent_script.py
|
|
216
|
+
|
|
217
|
+
# View a trace (multiple formats available)
|
|
218
|
+
RouteKitAI trace <trace_id> # Table view (default)
|
|
219
|
+
RouteKitAI trace <trace_id> --format timeline # Timeline visualization
|
|
220
|
+
RouteKitAI trace <trace_id> --format steps # Step-by-step execution
|
|
221
|
+
RouteKitAI trace <trace_id> --format json # JSON output
|
|
222
|
+
RouteKitAI trace <trace_id> --format raw # Raw JSONL
|
|
223
|
+
|
|
224
|
+
# Analyze trace metrics
|
|
225
|
+
RouteKitAI trace-analyze <trace_id> # Performance metrics, token usage, costs
|
|
226
|
+
|
|
227
|
+
# Search traces
|
|
228
|
+
RouteKitAI trace-search "error" # Search all traces for "error"
|
|
229
|
+
RouteKitAI trace-search "model" --trace-id abc # Search specific trace
|
|
230
|
+
RouteKitAI trace-search "tool" --event-type tool_called # Filter by event type
|
|
231
|
+
|
|
232
|
+
# Replay a trace
|
|
233
|
+
RouteKitAI replay <trace_id> --agent my_agent
|
|
234
|
+
|
|
235
|
+
# Start web UI for trace visualization
|
|
236
|
+
RouteKitAI serve # Start on default port 8080
|
|
237
|
+
RouteKitAI serve --port 3000 # Custom port
|
|
238
|
+
RouteKitAI serve --host 0.0.0.0 # Make accessible from network
|
|
239
|
+
|
|
240
|
+
# Run sanity checks
|
|
241
|
+
RouteKitAI test-agent
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## ๐๏ธ Core Primitives
|
|
245
|
+
|
|
246
|
+
RouteKitAI keeps it minimal with 5 core primitives:
|
|
247
|
+
|
|
248
|
+
1. **Model**: LLM interface abstraction
|
|
249
|
+
2. **Message**: Conversation message representation
|
|
250
|
+
3. **Tool**: Callable function/tool definition
|
|
251
|
+
4. **Agent**: Agent with model and tools
|
|
252
|
+
5. **Runtime**: Orchestration and execution engine
|
|
253
|
+
|
|
254
|
+
## ๐งช Development
|
|
255
|
+
|
|
256
|
+
### Setup
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Clone the repository
|
|
260
|
+
git clone https://github.com/MedGhassen/RouteKitAI.git
|
|
261
|
+
cd RouteKitAI
|
|
262
|
+
|
|
263
|
+
# Install with dev dependencies
|
|
264
|
+
pip install -e ".[dev]"
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Running Tests
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Run all tests
|
|
271
|
+
pytest
|
|
272
|
+
|
|
273
|
+
# Run with coverage
|
|
274
|
+
pytest --cov=RouteKitAI --cov-report=html
|
|
275
|
+
|
|
276
|
+
# Run specific test file
|
|
277
|
+
pytest tests/test_runtime.py
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Code Quality
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Type checking
|
|
284
|
+
mypy src/
|
|
285
|
+
|
|
286
|
+
# Linting
|
|
287
|
+
ruff check src/
|
|
288
|
+
|
|
289
|
+
# Format code
|
|
290
|
+
ruff format src/
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## ๐ค Contributing
|
|
294
|
+
|
|
295
|
+
Contributions are welcome! Please read our contributing guidelines (coming soon) and:
|
|
296
|
+
|
|
297
|
+
1. Fork the repository
|
|
298
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
299
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
300
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
301
|
+
5. Open a Pull Request
|
|
302
|
+
|
|
303
|
+
## ๐ Requirements
|
|
304
|
+
|
|
305
|
+
- Python 3.11 or higher
|
|
306
|
+
- Pydantic 2.0+
|
|
307
|
+
|
|
308
|
+
## ๐ License
|
|
309
|
+
|
|
310
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
311
|
+
|
|
312
|
+
## ๐ Acknowledgments
|
|
313
|
+
|
|
314
|
+
RouteKitAI is inspired by the need for testable, observable AI agent frameworks. Special thanks to the open-source community for their contributions and feedback.
|
|
315
|
+
|
|
316
|
+
## ๐ Links
|
|
317
|
+
|
|
318
|
+
- **GitHub**: [https://github.com/MedGhassen/RouteKitAI](https://github.com/MedGhassen/RouteKitAI)
|
|
319
|
+
- **Documentation**: [https://RouteKitAI.readthedocs.io](https://RouteKitAI.readthedocs.io) (coming soon)
|
|
320
|
+
- **Issues**: [https://github.com/MedGhassen/RouteKitAI/issues](https://github.com/MedGhassen/RouteKitAI/issues)
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
<div align="center">
|
|
325
|
+
|
|
326
|
+
Made with โค๏ธ by the Mohamed Ghassen Brahim
|
|
327
|
+
|
|
328
|
+
</div>
|