mojentic 0.5.6__py3-none-any.whl → 0.6.0__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.
- _examples/recursive_agent.py +2 -1
- _examples/tracer_demo.py +109 -0
- mojentic/dispatcher.py +17 -1
- mojentic/llm/gateways/openai_message_adapter_spec.py +7 -7
- mojentic/llm/gateways/openai_messages_adapter.py +58 -15
- mojentic/llm/llm_broker.py +85 -2
- mojentic/llm/message_composers_spec.py +43 -25
- mojentic/llm/tools/llm_tool.py +27 -1
- mojentic/llm/tools/llm_tool_spec.py +20 -11
- mojentic/tracer/__init__.py +16 -0
- mojentic/tracer/event_store.py +111 -0
- mojentic/tracer/event_store_spec.py +210 -0
- mojentic/tracer/null_tracer.py +191 -0
- mojentic/tracer/tracer_events.py +136 -0
- mojentic/tracer/tracer_events_spec.py +116 -0
- mojentic/tracer/tracer_system.py +285 -0
- mojentic/tracer/tracer_system_spec.py +255 -0
- {mojentic-0.5.6.dist-info → mojentic-0.6.0.dist-info}/METADATA +20 -10
- {mojentic-0.5.6.dist-info → mojentic-0.6.0.dist-info}/RECORD +22 -15
- {mojentic-0.5.6.dist-info → mojentic-0.6.0.dist-info}/WHEEL +1 -1
- mojentic/audit/event_store.py +0 -6
- mojentic/audit/event_store_spec.py +0 -26
- {mojentic-0.5.6.dist-info → mojentic-0.6.0.dist-info}/licenses/LICENSE.md +0 -0
- {mojentic-0.5.6.dist-info → mojentic-0.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mojentic
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Mojentic is an agentic framework that aims to provide a simple and flexible way to assemble teams of agents to solve complex problems.
|
|
5
5
|
Author-email: Stacey Vetzal <stacey@vetzal.com>
|
|
6
|
-
Project-URL: Homepage, https://github.com/
|
|
7
|
-
Project-URL: Issues, https://github.com/
|
|
6
|
+
Project-URL: Homepage, https://github.com/svetzal/mojentic
|
|
7
|
+
Project-URL: Issues, https://github.com/svetzal/mojentic/issues
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
@@ -22,15 +22,26 @@ Requires-Dist: parsedatetime
|
|
|
22
22
|
Requires-Dist: pytz
|
|
23
23
|
Requires-Dist: serpapi
|
|
24
24
|
Requires-Dist: colorama
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
27
|
+
Requires-Dist: pytest-spec; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
|
|
30
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
31
|
+
Requires-Dist: mkdocs; extra == "dev"
|
|
32
|
+
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
|
33
|
+
Requires-Dist: griffe-fieldz; extra == "dev"
|
|
34
|
+
Requires-Dist: mkdocs-material; extra == "dev"
|
|
35
|
+
Requires-Dist: pymdown-extensions; extra == "dev"
|
|
25
36
|
Dynamic: license-file
|
|
26
37
|
|
|
27
38
|
# Mojentic
|
|
28
39
|
|
|
29
40
|
Mojentic is a framework that provides a simple and flexible way to interact with Large Language Models (LLMs). It offers integration with various LLM providers and includes tools for structured output generation, task automation, and more. The future direction is to facilitate a team of agents, but the current focus is on robust LLM interaction capabilities.
|
|
30
41
|
|
|
31
|
-
[](LICENSE.md)
|
|
32
43
|
[](https://www.python.org/downloads/)
|
|
33
|
-
[](https://
|
|
44
|
+
[](https://svetzal.github.io/mojentic/)
|
|
34
45
|
|
|
35
46
|
## 🚀 Features
|
|
36
47
|
|
|
@@ -57,7 +68,7 @@ pip install mojentic
|
|
|
57
68
|
Or install from source
|
|
58
69
|
|
|
59
70
|
```bash
|
|
60
|
-
git clone https://github.com/
|
|
71
|
+
git clone https://github.com/svetzal/mojentic.git
|
|
61
72
|
cd mojentic
|
|
62
73
|
pip install -e .
|
|
63
74
|
```
|
|
@@ -123,18 +134,17 @@ The primary focus is currently on the `llm` module, which provides robust capabi
|
|
|
123
134
|
|
|
124
135
|
## 📚 Documentation
|
|
125
136
|
|
|
126
|
-
Visit [the documentation](https://
|
|
137
|
+
Visit [the documentation](https://svetzal.github.io/mojentic/) for comprehensive guides, API reference, and examples.
|
|
127
138
|
|
|
128
139
|
## 🧪 Development
|
|
129
140
|
|
|
130
141
|
```bash
|
|
131
142
|
# Clone the repository
|
|
132
|
-
git clone https://github.com/
|
|
143
|
+
git clone https://github.com/svetzal/mojentic.git
|
|
133
144
|
cd mojentic
|
|
134
145
|
|
|
135
146
|
# Install dependencies
|
|
136
|
-
pip install -
|
|
137
|
-
pip install -r dev-requirements.txt
|
|
147
|
+
pip install -e ".[dev]"
|
|
138
148
|
|
|
139
149
|
# Run tests
|
|
140
150
|
pytest
|
|
@@ -22,7 +22,7 @@ _examples/list_models.py,sha256=8noMpGeXOdX5Pf0NXCt_CRurOKEg_5luhWveGntBhe8,578
|
|
|
22
22
|
_examples/oversized_embeddings.py,sha256=_z2JoqZn0g7VtRsFVWIkngVqzjhQQvCEUYWVxs1I7MM,284
|
|
23
23
|
_examples/raw.py,sha256=Y2wvgynFuoUs28agE4ijsLYec8VRjiReklqlCH2lERs,442
|
|
24
24
|
_examples/react.py,sha256=VQ-5MmjUXoHzBFPTV_JrocuOkDzZ8oyUUSYLlEToJ_0,939
|
|
25
|
-
_examples/recursive_agent.py,sha256=
|
|
25
|
+
_examples/recursive_agent.py,sha256=lFmGXpAeNYmKZSCBsGgnKd8wptzFnDLcjFNcdDNUImU,3018
|
|
26
26
|
_examples/routed_send_response.py,sha256=FHhTy7y2f7GY_WAWZYqOnFqF1xeJTBuS5EjfJGsJ3S8,4146
|
|
27
27
|
_examples/simple_llm.py,sha256=Cpjj1S8wXLovta1OcutTqp-fls-zVY4l5TAkbEqpA0s,1231
|
|
28
28
|
_examples/simple_llm_repl.py,sha256=bpk7S1-yQ-oZdRD_0ICV37NQxntgvgjiFD5KdIU40Ig,1406
|
|
@@ -31,6 +31,7 @@ _examples/simple_tool.py,sha256=9hRo2YZk7NmprTIkLmEyueCbZ0Ls1Ey4l4eDvvgoWy8,1288
|
|
|
31
31
|
_examples/solver_chat_session.py,sha256=4mTsgQVJWwujDFX6NUIK6kKr45E09Q4yIkZF-FdoTtg,2148
|
|
32
32
|
_examples/streaming.py,sha256=P1CGvm11yi_tojnha2Qmp_OFB5A3T-F5dWIzxEclNhM,1137
|
|
33
33
|
_examples/tell_user_example.py,sha256=gPGS_3KAHUIFsnvkDXX6u1mVqlsB67zsyNdGuEho60o,1274
|
|
34
|
+
_examples/tracer_demo.py,sha256=IG9llYs9ARFbjkK-acW091S73z0jr2ZS_0GWps88dAQ,3994
|
|
34
35
|
_examples/working_memory.py,sha256=xbCHb6Y0Um6ai5T9fWAX4oQOcCQJDinsn902qm8q48E,1935
|
|
35
36
|
_examples/react/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
37
|
_examples/react/formatters.py,sha256=nbgWve0YGKaRY6P4tXV84PYw8YDN4neefiq7mR2I_tI,1065
|
|
@@ -41,7 +42,7 @@ _examples/react/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
|
41
42
|
_examples/react/models/base.py,sha256=F3hR023XQofs3Op37sruuONxAU7eRjGnLnf4515BeYU,1239
|
|
42
43
|
_examples/react/models/events.py,sha256=0lRY0D5VrSkIGEKnSEQQBRyxxMQl71yxPkdMBuVBKHw,1062
|
|
43
44
|
mojentic/__init__.py,sha256=Jrllv5OKZKjkfVNLRJV6yT3NZA8ZELSrqj3798H4cDs,1172
|
|
44
|
-
mojentic/dispatcher.py,sha256=
|
|
45
|
+
mojentic/dispatcher.py,sha256=Jx73v1799pYqzdLBDnq1tbPzXVEs3xArwtMhZvByyH8,2760
|
|
45
46
|
mojentic/event.py,sha256=P0kgI0Si41ifCTLNtpfkks0OktlK4wuAj3oMCDtdUyo,330
|
|
46
47
|
mojentic/router.py,sha256=7z2xqgpsuHmA32HfH3rAgDk3zLhUBxz8DHPt2vDlVOU,377
|
|
47
48
|
mojentic/router_spec.py,sha256=CRYeKEa7dz_yN8ABAi5DgY5C0mJW7she3Kw0NzxoHx4,876
|
|
@@ -54,17 +55,15 @@ mojentic/agents/correlation_aggregator_agent.py,sha256=okdq92rMNwIXTgnuwwn3zp4Jz
|
|
|
54
55
|
mojentic/agents/iterative_problem_solver.py,sha256=RLt8MCM99d-Z26EhC5UnmE0M97EM475VGBVsNio8DSA,4329
|
|
55
56
|
mojentic/agents/output_agent.py,sha256=I9GHcWvQhWxEcvjzj47scKo_QF8_6yR17ZUEHhwC94Y,231
|
|
56
57
|
mojentic/agents/simple_recursive_agent.py,sha256=DcJFttTAYurRIObTL8kfbHUs5uvuqh6prEgA5nmxCLo,9950
|
|
57
|
-
mojentic/audit/event_store.py,sha256=uw5ploNym9CvI-WDeW3Y4qHJupPWBQaGrfrubxOfmpA,130
|
|
58
|
-
mojentic/audit/event_store_spec.py,sha256=mCryZGWNXP9CmukvD3hUyQGs_7afjwbTK3RdT831Lzc,594
|
|
59
58
|
mojentic/context/__init__.py,sha256=MKMP7ViQg8gMtLFvn9pf47XMc5beA5Wx95K4dEw93z8,55
|
|
60
59
|
mojentic/context/shared_working_memory.py,sha256=Zt9MNGErEkDIUAaHvyhEOiTaEobI9l0MV4Z59lQFBr0,396
|
|
61
60
|
mojentic/llm/__init__.py,sha256=mwdPpTRofw7_KSlW6ZQmcM-GSpyISWyI2bxphKpV7A0,180
|
|
62
61
|
mojentic/llm/chat_session.py,sha256=H2gY0mZYVym8jC69VHsmKaRZ9T87Suyw0-TW5r850nA,3992
|
|
63
62
|
mojentic/llm/chat_session_spec.py,sha256=8-jj-EHV2WwWuvo3t8I75kSEAYiG1nR-OEwkkLTi_z0,3872
|
|
64
|
-
mojentic/llm/llm_broker.py,sha256=
|
|
63
|
+
mojentic/llm/llm_broker.py,sha256=8h1J6Avue_iJhGzMTVuF3Zmgek--P_Q4iVRJT8-_b14,8823
|
|
65
64
|
mojentic/llm/llm_broker_spec.py,sha256=40lzmYm_6Zje6z5MQ7_o3gSBThLsNW_l_1mZTUVll6A,5342
|
|
66
65
|
mojentic/llm/message_composers.py,sha256=Fo9o7UGZOOIYoGI_DyOfP_oMiEiCMQz-zdWdTKtozVk,12108
|
|
67
|
-
mojentic/llm/message_composers_spec.py,sha256=
|
|
66
|
+
mojentic/llm/message_composers_spec.py,sha256=RNW14Zb-kIBWT5Wy9cZQyxHPrcRIaBFjBYCR9N-m0kE,12109
|
|
68
67
|
mojentic/llm/gateways/__init__.py,sha256=u7hXzngoRw_qbsJeiCH2NQ8vC2hF5DnqcXsfLVVPSSw,104
|
|
69
68
|
mojentic/llm/gateways/anthropic.py,sha256=SsyNjq9QaXaqiMM43C9fwLp57hpgFtwNPJUnOAYVrtc,1788
|
|
70
69
|
mojentic/llm/gateways/anthropic_messages_adapter.py,sha256=K6kEZeVt7E1endbGMLsh5l9SxC3Y5dnvbcejVqi_qUs,3003
|
|
@@ -76,8 +75,8 @@ mojentic/llm/gateways/ollama.py,sha256=629fpZhC0zVCYqj360-PKTT4mQOLec5nzzvfMtS_m
|
|
|
76
75
|
mojentic/llm/gateways/ollama_messages_adapter.py,sha256=kUN_p2FyN88_trXMcL-Xsn9xPBU7pGKlJwTUEUCf6G4,1404
|
|
77
76
|
mojentic/llm/gateways/ollama_messages_adapter_spec.py,sha256=gVRbWDrHOa1EiZ0CkEWe0pGn-GKRqdGb-x56HBQeYSE,4981
|
|
78
77
|
mojentic/llm/gateways/openai.py,sha256=NQECA41PS21RhXjwQdbH3DAP15WqkEl22UlS1ka_lLM,5434
|
|
79
|
-
mojentic/llm/gateways/openai_message_adapter_spec.py,sha256=
|
|
80
|
-
mojentic/llm/gateways/openai_messages_adapter.py,sha256=
|
|
78
|
+
mojentic/llm/gateways/openai_message_adapter_spec.py,sha256=ITBSV5njldV_x0NPgjmg8Okf9KzevQJ8dTXM-t6ubcg,6612
|
|
79
|
+
mojentic/llm/gateways/openai_messages_adapter.py,sha256=9Btcr77RzlqZIdkNuGDGitk9D7SQTv4GsdKXaN2Fuv4,3863
|
|
81
80
|
mojentic/llm/gateways/tokenizer_gateway.py,sha256=ztuqfunlJ6xmyUPPHcC_69-kegiNJD6jdSEde7hDh2w,485
|
|
82
81
|
mojentic/llm/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
82
|
mojentic/llm/registry/llm_registry.py,sha256=beyrgGrkXx5ZckUJzC1nQ461vra0fF6s_qRaEdi5bsg,2508
|
|
@@ -89,8 +88,8 @@ mojentic/llm/tools/current_datetime.py,sha256=JkIFlBBnvE4CMcgZizqITVTtNfL7zeeLxD
|
|
|
89
88
|
mojentic/llm/tools/date_resolver.py,sha256=VDxX59PTHo0PstDxaJUo3SF7vkvQoG92bo6j8ABq8y4,2185
|
|
90
89
|
mojentic/llm/tools/date_resolver_spec.py,sha256=OaRvJyhSN8sgi75euk4E5ImaqUmvQdgZKY8u_NOiPWE,1185
|
|
91
90
|
mojentic/llm/tools/file_manager.py,sha256=X8Uw4XtdH_Ol2EB3SN11-GYlC1diJ1cAywU9_EuCjCg,3788
|
|
92
|
-
mojentic/llm/tools/llm_tool.py,sha256=
|
|
93
|
-
mojentic/llm/tools/llm_tool_spec.py,sha256=
|
|
91
|
+
mojentic/llm/tools/llm_tool.py,sha256=MhPkRkM0GihZ8_82Y7Xn3zhfuA_Ic0zmC9ouHXMWTT0,1660
|
|
92
|
+
mojentic/llm/tools/llm_tool_spec.py,sha256=OPudmuqSxkJBUaL0-qABri-tvrAyb6QI9Ac5B5iTo3I,2112
|
|
94
93
|
mojentic/llm/tools/organic_web_search.py,sha256=X_WQSSFgeMp5jlm0tnqGOHDIZ2KHDvz3k6GF-XqsuN4,1301
|
|
95
94
|
mojentic/llm/tools/tell_user_tool.py,sha256=bF_PTfF0-skCi_Exw6EPpdfoNUZRJ4MWg-XCe4VYd6s,999
|
|
96
95
|
mojentic/llm/tools/tool_wrapper.py,sha256=6YZOhckgNsSUc7YK6bKjODjRTwi6wcH9bdcySUDPt3Q,1391
|
|
@@ -112,10 +111,18 @@ mojentic/llm/tools/ephemeral_task_manager/prepend_task_tool.py,sha256=GGqPTdBTkj
|
|
|
112
111
|
mojentic/llm/tools/ephemeral_task_manager/prepend_task_tool_spec.py,sha256=lUCnejAON9g0DDNS64EVHwapPjF8b87RsXPUVvvG0b4,1174
|
|
113
112
|
mojentic/llm/tools/ephemeral_task_manager/start_task_tool.py,sha256=VH8Wa4-ZmkMIsyLuLXJx4pGidiT0KeT55DnujFpK-0o,2414
|
|
114
113
|
mojentic/llm/tools/ephemeral_task_manager/start_task_tool_spec.py,sha256=oDeVPPfquM2ojwG0aaNnbWCB_LRgm8runtG-CumZkLg,1490
|
|
114
|
+
mojentic/tracer/__init__.py,sha256=075nYiRvYTzkzombGY-31Gy0JMPM7Zn645F6_j5-k6I,445
|
|
115
|
+
mojentic/tracer/event_store.py,sha256=eqbze4YRuiMDr8TCtMNHi-U_6-CLgstOHkLmtM5hc6Q,3691
|
|
116
|
+
mojentic/tracer/event_store_spec.py,sha256=OWXWbeMCYU9dfySmbpmDA4KmwLlSaFy4ZpRt6BsTkFE,6522
|
|
117
|
+
mojentic/tracer/null_tracer.py,sha256=nBVs3CiVdbFXoiwtth6eh3m3z1Gggs6yEIBqX4QbW-U,6338
|
|
118
|
+
mojentic/tracer/tracer_events.py,sha256=DWv2PEU1CiUC1UnDScu9_DESEiTRIwpw0EMymFg4FJw,5383
|
|
119
|
+
mojentic/tracer/tracer_events_spec.py,sha256=v84P3IjVr0_TGjwJD1w2SSNlTDJj0a4P8tMkDrsbOTA,3549
|
|
120
|
+
mojentic/tracer/tracer_system.py,sha256=iBU4aHNYMSaIMh1q5CHcItufzYE6GXdw2wNtXu4NQRk,9415
|
|
121
|
+
mojentic/tracer/tracer_system_spec.py,sha256=r5_GYEN78t0nJFawKvya8eyIUbmSgenyflPld-7Y448,7968
|
|
115
122
|
mojentic/utils/__init__.py,sha256=lqECkkoFvHFttDnafRE1vvh0Dmna_lwupMToP5VvX5k,115
|
|
116
123
|
mojentic/utils/formatting.py,sha256=bPrwwdluXdQ8TsFxfWtHNOeMWKNvAfABSoUnnA1g7c8,947
|
|
117
|
-
mojentic-0.
|
|
118
|
-
mojentic-0.
|
|
119
|
-
mojentic-0.
|
|
120
|
-
mojentic-0.
|
|
121
|
-
mojentic-0.
|
|
124
|
+
mojentic-0.6.0.dist-info/licenses/LICENSE.md,sha256=txSgV8n5zY1W3NiF5HHsCwlaW0e8We1cSC6TuJUqxXA,1060
|
|
125
|
+
mojentic-0.6.0.dist-info/METADATA,sha256=jZvs5Umlb93eIs366WDSch4GYJ2x_p6a038wLS7EreY,5383
|
|
126
|
+
mojentic-0.6.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
|
127
|
+
mojentic-0.6.0.dist-info/top_level.txt,sha256=Q-BvPQ8Eu1jnEqK8Xkr6A9C8Xa1z38oPZRHuA5MCTqg,19
|
|
128
|
+
mojentic-0.6.0.dist-info/RECORD,,
|
mojentic/audit/event_store.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
from mojentic import Event
|
|
2
|
-
from mojentic.audit.event_store import EventStore
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class DescribeEventStore:
|
|
6
|
-
"""
|
|
7
|
-
The immutable event store is key to the auditability of agent interactions.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
def should_store_an_event(self):
|
|
11
|
-
"""
|
|
12
|
-
Given an event
|
|
13
|
-
When asked to store the event
|
|
14
|
-
Then the event should be stored
|
|
15
|
-
"""
|
|
16
|
-
# Given
|
|
17
|
-
event = Event(
|
|
18
|
-
source=DescribeEventStore,
|
|
19
|
-
)
|
|
20
|
-
event_store = EventStore()
|
|
21
|
-
|
|
22
|
-
# When
|
|
23
|
-
event_store.store(event)
|
|
24
|
-
|
|
25
|
-
# Then
|
|
26
|
-
assert event in event_store.events
|
|
File without changes
|
|
File without changes
|