versionhq 1.1.12.5__tar.gz → 1.1.13.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.
Files changed (123) hide show
  1. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.gitignore +4 -4
  2. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/PKG-INFO +99 -109
  3. versionhq-1.1.12.5/docs/index.md → versionhq-1.1.13.0/README.md +116 -101
  4. versionhq-1.1.13.0/docs/_logos/favicon.ico +0 -0
  5. versionhq-1.1.13.0/docs/_logos/logo192.png +0 -0
  6. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/docs/core/Agent.md +127 -129
  7. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/docs/core/tool.md +7 -9
  8. versionhq-1.1.13.0/docs/index.md +271 -0
  9. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/docs/quickstart.md +54 -24
  10. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/mkdocs.yml +4 -4
  11. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/pyproject.toml +6 -4
  12. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/__init__.py +6 -3
  13. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/usage_metrics.py +6 -6
  14. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/inhouse_agents.py +1 -1
  15. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/llm/llm_vars.py +5 -0
  16. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/evaluate.py +5 -6
  17. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/formation.py +64 -30
  18. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/model.py +2 -5
  19. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/team/model.py +95 -92
  20. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/team/team_planner.py +5 -6
  21. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq.egg-info/PKG-INFO +99 -109
  22. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq.egg-info/SOURCES.txt +1 -0
  23. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/clients/customer_test.py +0 -4
  24. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/clients/workflow_test.py +0 -2
  25. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/doc_test.py +6 -6
  26. versionhq-1.1.13.0/tests/formation_test.py +48 -0
  27. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/llm/llm_test.py +0 -3
  28. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/memory/memory_test.py +0 -5
  29. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/task/llm_connection_test.py +6 -6
  30. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/task/task_test.py +2 -18
  31. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/team/team_test.py +50 -69
  32. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/uv.lock +159 -510
  33. versionhq-1.1.12.5/README.md +0 -404
  34. versionhq-1.1.12.5/docs/_logos/favicon.ico +0 -0
  35. versionhq-1.1.12.5/docs/_logos/logo192.png +0 -0
  36. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.github/workflows/deploy_docs.yml +0 -0
  37. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.github/workflows/publish.yml +0 -0
  38. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.github/workflows/publish_testpypi.yml +0 -0
  39. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.github/workflows/run_tests.yml +0 -0
  40. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.github/workflows/security_check.yml +0 -0
  41. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.pre-commit-config.yaml +0 -0
  42. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/.python-version +0 -0
  43. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/CNAME +0 -0
  44. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/LICENSE +0 -0
  45. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/SECURITY.md +0 -0
  46. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/db/preprocess.py +0 -0
  47. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/docs/CNAME +0 -0
  48. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/docs/stylesheets/main.css +0 -0
  49. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/requirements-dev.txt +0 -0
  50. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/requirements.txt +0 -0
  51. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/runtime.txt +0 -0
  52. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/setup.cfg +0 -0
  53. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/__init__.py +0 -0
  54. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/i18n.py +0 -0
  55. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/logger.py +0 -0
  56. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/process_config.py +0 -0
  57. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/_utils/vars.py +0 -0
  58. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
  59. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
  60. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/__init__.py +0 -0
  61. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/model.py +0 -0
  62. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/parser.py +0 -0
  63. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/agent/rpm_controller.py +0 -0
  64. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/cli/__init__.py +0 -0
  65. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/__init__.py +0 -0
  66. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/customer/__init__.py +0 -0
  67. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/customer/model.py +0 -0
  68. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/product/__init__.py +0 -0
  69. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/product/model.py +0 -0
  70. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/workflow/__init__.py +0 -0
  71. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/clients/workflow/model.py +0 -0
  72. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/__init__.py +0 -0
  73. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/_utils.py +0 -0
  74. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/embedding.py +0 -0
  75. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/model.py +0 -0
  76. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/source.py +0 -0
  77. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/source_docling.py +0 -0
  78. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/knowledge/storage.py +0 -0
  79. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/llm/__init__.py +0 -0
  80. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/llm/model.py +0 -0
  81. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/memory/__init__.py +0 -0
  82. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/memory/contextual_memory.py +0 -0
  83. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/memory/model.py +0 -0
  84. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/__init__.py +0 -0
  85. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/base.py +0 -0
  86. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
  87. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/mem0_storage.py +0 -0
  88. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/rag_storage.py +0 -0
  89. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/task_output_storage.py +0 -0
  90. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/storage/utils.py +0 -0
  91. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/TEMPLATES/Description.py +0 -0
  92. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/__init__.py +0 -0
  93. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/formatter.py +0 -0
  94. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/log_handler.py +0 -0
  95. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/task/structured_response.py +0 -0
  96. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/team/__init__.py +0 -0
  97. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/__init__.py +0 -0
  98. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/cache_handler.py +0 -0
  99. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/composio_tool.py +0 -0
  100. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/composio_tool_vars.py +0 -0
  101. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/decorator.py +0 -0
  102. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/model.py +0 -0
  103. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq/tool/tool_handler.py +0 -0
  104. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq.egg-info/dependency_links.txt +0 -0
  105. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq.egg-info/requires.txt +0 -0
  106. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/src/versionhq.egg-info/top_level.txt +0 -0
  107. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/__init__.py +0 -0
  108. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/agent/__init__.py +0 -0
  109. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/agent/agent_test.py +0 -0
  110. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/cli/__init__.py +0 -0
  111. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/clients/product_test.py +0 -0
  112. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/conftest.py +0 -0
  113. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/knowledge/__init__.py +0 -0
  114. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/knowledge/knowledge_test.py +0 -0
  115. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/knowledge/mock_report_compressed.pdf +0 -0
  116. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/llm/__init__.py +0 -0
  117. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/memory/__init__.py +0 -0
  118. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/task/__init__.py +0 -0
  119. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/team/Prompts/Demo_test.py +0 -0
  120. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/team/__init__.py +0 -0
  121. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/tool/__init__.py +0 -0
  122. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/tool/composio_test.py +0 -0
  123. {versionhq-1.1.12.5 → versionhq-1.1.13.0}/tests/tool/tool_test.py +0 -0
@@ -1,12 +1,12 @@
1
1
  deploy.py
2
2
  destinations.py
3
3
 
4
- entity_memory.py
5
-
6
4
  train.py
7
5
 
8
- # mkdocs.yml
9
- # docs/
6
+ _memo
7
+ _idea.py
8
+
9
+
10
10
 
11
11
  dist/
12
12
  lib/
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: versionhq
3
- Version: 1.1.12.5
4
- Summary: An agentic orchestration framework for building agent networks that handle task automation without human interaction.
3
+ Version: 1.1.13.0
4
+ Summary: An agentic orchestration framework for building agent networks that handle task automation.
5
5
  Author-email: Kuriko Iwai <kuriko@versi0n.io>
6
6
  License: MIT License
7
7
 
@@ -40,7 +40,7 @@ Classifier: Development Status :: 3 - Alpha
40
40
  Classifier: Intended Audience :: Developers
41
41
  Classifier: Intended Audience :: Information Technology
42
42
  Classifier: Topic :: Software Development :: Build Tools
43
- Requires-Python: >=3.11
43
+ Requires-Python: <3.13,>=3.11
44
44
  Description-Content-Type: text/markdown
45
45
  License-File: LICENSE
46
46
  Requires-Dist: regex==2024.11.6
@@ -77,7 +77,7 @@ Requires-Dist: numpy>=1.26.4; extra == "numpy"
77
77
 
78
78
  # Overview
79
79
 
80
- ![DL](https://img.shields.io/badge/Download-15K+-red)
80
+ [![DL](https://img.shields.io/badge/Download-15K+-red)](https://clickpy.clickhouse.com/dashboard/versionhq)
81
81
  ![MIT license](https://img.shields.io/badge/License-MIT-green)
82
82
  [![Publisher](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml/badge.svg)](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
83
83
  ![PyPI](https://img.shields.io/badge/PyPI-v1.1.12+-blue)
@@ -85,7 +85,7 @@ Requires-Dist: numpy>=1.26.4; extra == "numpy"
85
85
  ![pyenv ver](https://img.shields.io/badge/pyenv-2.5.0-orange)
86
86
 
87
87
 
88
- Agentic orchestration framework to deploy agent network and handle complex task automation.
88
+ A Python framework for agentic orchestration that handles complex task automation without human interaction.
89
89
 
90
90
  **Visit:**
91
91
 
@@ -104,19 +104,17 @@ Agentic orchestration framework to deploy agent network and handle complex task
104
104
  - [Key Features](#key-features)
105
105
  - [Agent formation](#agent-formation)
106
106
  - [Quick Start](#quick-start)
107
- - [Generate agent networks and launch task execution:](#generate-agent-networks-and-launch-task-execution)
108
- - [Solo Agent:](#solo-agent)
109
- - [Solo Agent:](#solo-agent-1)
110
- - [Supervising:](#supervising)
107
+ - [Package installation](#package-installation)
108
+ - [Forming a agent network](#forming-a-agent-network)
109
+ - [Customizing AI agents](#customizing-ai-agents)
110
+ - [Supervising](#supervising)
111
111
  - [Technologies Used](#technologies-used)
112
112
  - [Project Structure](#project-structure)
113
- - [Setup](#setup)
113
+ - [Setting Up](#setting-up)
114
114
  - [Contributing](#contributing)
115
- - [Documentation](#documentation)
116
- - [Customizing AI Agent](#customizing-ai-agent)
117
- - [Modifying RAG Functionality](#modifying-rag-functionality)
118
115
  - [Package Management with uv](#package-management-with-uv)
119
116
  - [Pre-Commit Hooks](#pre-commit-hooks)
117
+ - [Documentation](#documentation)
120
118
  - [Trouble Shooting](#trouble-shooting)
121
119
  - [Frequently Asked Questions (FAQ)](#frequently-asked-questions-faq)
122
120
 
@@ -148,20 +146,20 @@ You can specify a desired formation or allow the agents to determine it autonomo
148
146
 
149
147
  ## Quick Start
150
148
 
151
- **Install `versionhq` package:**
149
+ ### Package installation
152
150
 
153
151
  ```
154
152
  pip install versionhq
155
153
  ```
156
154
 
157
- (Python 3.11 or higher)
155
+ (Python 3.11 / 3.12)
158
156
 
159
- ### Generate agent networks and launch task execution:
157
+ ### Forming a agent network
160
158
 
161
159
  ```python
162
- from versionhq import form_agent_network
160
+ import versionhq as vhq
163
161
 
164
- network = form_agent_network(
162
+ network = vhq.form_agent_network(
165
163
  task="YOUR AMAZING TASK OVERVIEW",
166
164
  expected_outcome="YOUR OUTCOME EXPECTATION",
167
165
  )
@@ -171,31 +169,28 @@ You can specify a desired formation or allow the agents to determine it autonomo
171
169
  This will form a network with multiple agents on `Formation` and return `TaskOutput` object with output in JSON, plane text, Pydantic model format with evaluation.
172
170
 
173
171
 
174
- ### Solo Agent:
175
-
176
- ### Solo Agent:
172
+ ### Customizing AI agents
177
173
 
178
174
  You can simply build an agent using `Agent` model.
179
175
 
180
- By default, the agent prioritize JSON serializable output.
176
+ By default, the agent prioritize JSON serializable outputs over plane texts.
181
177
 
182
- But you can add a plane text summary of the structured output by using callbacks.
183
178
 
184
179
  ```python
180
+ import versionhq as vhq
185
181
  from pydantic import BaseModel
186
- from versionhq import Agent, Task
187
182
 
188
183
  class CustomOutput(BaseModel):
189
184
  test1: str
190
185
  test2: list[str]
191
186
 
192
187
  def dummy_func(message: str, test1: str, test2: list[str]) -> str:
193
- return f"{message}: {test1}, {", ".join(test2)}"
188
+ return f"""{message}: {test1}, {", ".join(test2)}"""
194
189
 
195
190
 
196
- agent = Agent(role="demo", goal="amazing project goal")
191
+ agent = vhq.Agent(role="demo", goal="amazing project goal")
197
192
 
198
- task = Task(
193
+ task = vhq.Task(
199
194
  description="Amazing task",
200
195
  pydantic_output=CustomOutput,
201
196
  callback=dummy_func,
@@ -221,33 +216,33 @@ This will return a `TaskOutput` object that stores response in plane text, JSON,
221
216
  )
222
217
  ```
223
218
 
224
- ### Supervising:
219
+ ### Supervising
225
220
 
226
221
  ```python
227
- from versionhq import Agent, Task, ResponseField, Team, TeamMember
222
+ import versionhq as vhq
228
223
 
229
- agent_a = Agent(role="agent a", goal="My amazing goals", llm="llm-of-your-choice")
230
- agent_b = Agent(role="agent b", goal="My amazing goals", llm="llm-of-your-choice")
224
+ agent_a = vhq.Agent(role="agent a", goal="My amazing goals", llm="llm-of-your-choice")
225
+ agent_b = vhq.Agent(role="agent b", goal="My amazing goals", llm="llm-of-your-choice")
231
226
 
232
- task_1 = Task(
227
+ task_1 = vhq.Task(
233
228
  description="Analyze the client's business model.",
234
- response_fields=[ResponseField(title="test1", data_type=str, required=True),],
229
+ response_fields=[vhq.ResponseField(title="test1", data_type=str, required=True),],
235
230
  allow_delegation=True
236
231
  )
237
232
 
238
- task_2 = Task(
233
+ task_2 = vhq.Task(
239
234
  description="Define the cohort.",
240
235
  response_fields=[ResponseField(title="test1", data_type=int, required=True),],
241
236
  allow_delegation=False
242
237
  )
243
238
 
244
- team = Team(
239
+ team = vhq.Team(
245
240
  members=[
246
- TeamMember(agent=agent_a, is_manager=False, task=task_1),
247
- TeamMember(agent=agent_b, is_manager=True, task=task_2),
241
+ vhq.Member(agent=agent_a, is_manager=False, task=task_1),
242
+ vhq.Member(agent=agent_b, is_manager=True, task=task_2),
248
243
  ],
249
244
  )
250
- res = team.kickoff()
245
+ res = team.launch()
251
246
  ```
252
247
 
253
248
  This will return a list with dictionaries with keys defined in the `ResponseField` of each task.
@@ -257,27 +252,33 @@ Tasks can be delegated to a team manager, peers in the team, or completely new a
257
252
  <hr />
258
253
 
259
254
  ## Technologies Used
255
+
260
256
  **Schema, Data Validation**
261
- - [Pydantic](https://docs.pydantic.dev/latest/): Data validation and serialization library for Python.
262
- - [Upstage](https://console.upstage.ai/docs/getting-started/overview): Document processer for ML tasks. (Use `Document Parser API` to extract data from documents)
263
- - [Docling](https://ds4sd.github.io/docling/): Document parsing
257
+
258
+ * [Pydantic](https://docs.pydantic.dev/latest/): Data validation and serialization library for Python.
259
+ * [Upstage](https://console.upstage.ai/docs/getting-started/overview): Document processer for ML tasks. (Use `Document Parser API` to extract data from documents)
260
+ * [Docling](https://ds4sd.github.io/docling/): Document parsing
264
261
 
265
262
  **Storage**
266
- - [mem0ai](https://docs.mem0.ai/quickstart#install-package): Agents' memory storage and management.
267
- - [Chroma DB](https://docs.trychroma.com/): Vector database for storing and querying usage data.
268
- - [SQLite](https://www.sqlite.org/docs.html): C-language library to implements a small SQL database engine.
263
+
264
+ * [mem0ai](https://docs.mem0.ai/quickstart#install-package): Agents' memory storage and management.
265
+ * [Chroma DB](https://docs.trychroma.com/): Vector database for storing and querying usage data.
266
+ * [SQLite](https://www.sqlite.org/docs.html): C-language library to implements a small SQL database engine.
269
267
 
270
268
  **LLM-curation**
271
- - [LiteLLM](https://docs.litellm.ai/docs/providers): Curation platform to access LLMs
269
+
270
+ * [LiteLLM](https://docs.litellm.ai/docs/providers): Curation platform to access LLMs
272
271
 
273
272
  **Tools**
274
- - [Composio](https://composio.dev/): Conect RAG agents with external tools, Apps, and APIs to perform actions and receive triggers. We use [tools](https://composio.dev/tools) and [RAG tools](https://app.composio.dev/app/ragtool) from Composio toolset.
273
+
274
+ * [Composio](https://composio.dev/): Conect RAG agents with external tools, Apps, and APIs to perform actions and receive triggers. We use [tools](https://composio.dev/tools) and [RAG tools](https://app.composio.dev/app/ragtool) from Composio toolset.
275
275
 
276
276
  **Deployment**
277
- - Python: Primary programming language. v3.13 is recommended.
278
- - [uv](https://docs.astral.sh/uv/): Python package installer and resolver
279
- - [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
280
- - [setuptools](https://pypi.org/project/setuptools/): Build python modules
277
+
278
+ * **Python**: Primary programming language. v3.12.x is recommended
279
+ * [uv](https://docs.astral.sh/uv/): Python package installer and resolver
280
+ * [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
281
+ * [setuptools](https://pypi.org/project/setuptools/): Build python modules
281
282
 
282
283
  <hr />
283
284
 
@@ -309,7 +310,7 @@ src/
309
310
 
310
311
  <hr />
311
312
 
312
- ## Setup
313
+ ## Setting Up
313
314
 
314
315
  1. Install `uv` package manager:
315
316
 
@@ -339,12 +340,12 @@ src/
339
340
  pyenv install 3.12.8
340
341
  pyenv global 3.12.8 (optional: `pyenv global system` to get back to the system default ver.)
341
342
  uv python pin 3.12.8
342
- echo 3.12.8 > .python-version
343
+ echo 3.12.8 >> .python-version
343
344
  ```
344
345
 
345
346
 
346
- 3. Set up environment variables:
347
- Create a `.env` file in the project root and add the following:
347
+ 3. Add secrets to `.env` file in the project root:
348
+
348
349
  ```
349
350
  LITELLM_API_KEY=your-litellm-api-key
350
351
  OPENAI_API_KEY=your-openai-api-key
@@ -361,68 +362,37 @@ src/
361
362
 
362
363
  2. Create amazing features
363
364
 
364
- 3. Test the features using the `tests` directory.
365
+ 3. Add a test funcition to the `tests` directory and run **pytest**.
365
366
 
366
- - Add a test function to respective components in the `tests` directory.
367
- - Add your `LITELLM_API_KEY`, `OPENAI_API_KEY`, `COMPOSIO_API_KEY`, `DEFAULT_USER_ID` to the Github `repository secrets` located at settings > secrets & variables > Actions.
368
- - Run a test.
367
+ - Add secret values defined in `.github/workflows/run_test.yml` to your Github `repository secrets` located at settings > secrets & variables > Actions.
368
+ - Run a following command:
369
369
  ```
370
370
  uv run pytest tests -vv --cache-clear
371
371
  ```
372
372
 
373
- **pytest**
374
-
375
- * When adding a new file to `tests`, name the file ended with `_test.py`.
376
- * When adding a new feature to the file, name the feature started with `test_`.
377
-
378
- 4. Pull the latest version of source code from the main branch (`git pull origin main`) *Address conflicts if any.
379
- 5. Commit your changes (`git add .` / `git commit -m 'Add your-amazing-feature'`)
380
- 6. Push to the branch (`git push origin feature/your-amazing-feature`)
381
- 7. Open a pull request
382
-
383
-
384
- **Optional**
385
- * Flag with `#! REFINEME` for any improvements needed and `#! FIXME` for any errors.
386
-
387
- <!-- * Run a React demo app: [React demo app](https://github.com/versionHQ/test-client-app) to check it on the client endpoint.
388
- ```
389
- npm i
390
- npm start
391
- ```
392
- The frontend will be available at `http://localhost:3000`. -->
393
-
394
- * `production` use case is available at `https://versi0n.io`. Currently, we are running alpha test.
395
-
396
-
397
- ### Documentation
398
-
399
- * To edit the documentation, see `docs` repository and edit the respective component.
373
+ **Building a new pytest function**
400
374
 
401
- * We use `mkdocs` to update the docs. You can run the doc locally at http://127.0.0.1:8000/:
375
+ * Files added to the `tests` directory must end in `_test.py`.
402
376
 
403
- ```
404
- uv run python3 -m mkdocs serve --clean
405
- ```
377
+ * Test functions within the files must begin with `test_`.
406
378
 
407
- * To add a new page, update `mkdocs.yml` in the root. Refer to [MkDocs official docs](https://squidfunk.github.io/mkdocs-material/getting-started/) for more details.
408
379
 
380
+ 4. Update `docs` accordingly.
409
381
 
410
- ### Customizing AI Agent
382
+ 5. Pull the latest version of source code from the main branch (`git pull origin main`) *Address conflicts if any.
411
383
 
412
- To add an agent, use `sample` directory to add new `project`. You can define an agent with a specific role, goal, and set of tools.
384
+ 6. Commit your changes (`git add .` / `git commit -m 'Add your-amazing-feature'`)
413
385
 
414
- Your new agent needs to follow the `Agent` model defined in the `verionhq.agent.model.py`.
386
+ 7. Push to the branch (`git push origin feature/your-amazing-feature`)
415
387
 
416
- You can also add any fields and functions to the `Agent` model **universally** by modifying `verionhq.agent.model.py`.
388
+ 8. Open a pull request
417
389
 
418
390
 
419
- ### Modifying RAG Functionality
391
+ **Optional**
420
392
 
421
- The RAG system uses Chroma DB to store and query past campaign dataset. To update the knowledge base:
393
+ * Flag with `#! REFINEME` for any improvements needed and `#! FIXME` for any errors.
422
394
 
423
- 1. Add new files to the `uploads/` directory. (This will not be pushed to Github.)
424
- 2. Modify the `tools.py` file to update the ingestion process if necessary.
425
- 3. Run the ingestion process to update the Chroma DB.
395
+ * `Playground` is available at `https://versi0n.io`.
426
396
 
427
397
 
428
398
  ### Package Management with uv
@@ -453,19 +423,39 @@ Pre-commit hooks help maintain code quality by running checks for formatting, li
453
423
  git commit --no-verify -m "your-commit-message"
454
424
  ```
455
425
 
426
+ ### Documentation
427
+
428
+ * To edit the documentation, see `docs` repository and edit the respective component.
429
+
430
+ * We use `mkdocs` to update the docs. You can run the doc locally at http://127.0.0.1:8000/:
431
+
432
+ ```
433
+ uv run python3 -m mkdocs serve --clean
434
+ ```
435
+
436
+ * To add a new page, update `mkdocs.yml` in the root. Refer to [MkDocs documentation](https://squidfunk.github.io/mkdocs-material/getting-started/) for more details.
437
+
456
438
  <hr />
457
439
 
458
440
  ## Trouble Shooting
459
441
 
460
442
  Common issues and solutions:
461
- - API key errors: Ensure all API keys in the `.env` file are correct and up to date. Make sure to add `load_dotenv()` on the top of the python file to apply the latest environment values.
462
- - Database connection issues: Check if the Chroma DB is properly initialized and accessible.
463
- - Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
464
- - Issues related to the Python version: Docling/Pytorch is not ready for Python 3.13 as of Jan 2025. Use Python 3.12.x as default by running `uv venv --python 3.12.8` and `uv python pin 3.12.8`.
465
- - Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
466
- - Issues related to the AI agents or RAG system: Check the `output.log` file for detailed error messages and stack traces.
467
- - Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
468
- - `reportMissingImports` error from pyright after installing the package: This might occur when installing new libraries while VSCode is running. Open the command pallete (ctrl + shift + p) and run the Python: Restart language server task.
443
+
444
+ * API key errors: Ensure all API keys in the `.env` file are correct and up to date. Make sure to add `load_dotenv()` on the top of the python file to apply the latest environment values.
445
+
446
+ * Database connection issues: Check if the Chroma DB is properly initialized and accessible.
447
+
448
+ * Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
449
+
450
+ * Issues related to the Python version: Docling/Pytorch is not ready for Python 3.13 as of Jan 2025. Use Python 3.12.x as default by running `uv venv --python 3.12.8` and `uv python pin 3.12.8`.
451
+
452
+ * Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
453
+
454
+ * Issues related to the AI agents or RAG system: Check the `output.log` file for detailed error messages and stack traces.
455
+
456
+ * Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
457
+
458
+ * `reportMissingImports` error from pyright after installing the package: This might occur when installing new libraries while VSCode is running. Open the command pallete (ctrl + shift + p) and run the Python: Restart language server task.
469
459
 
470
460
  <hr />
471
461
 
@@ -477,5 +467,5 @@ A. Visit [playground](https://versi0n.io).
477
467
 
478
468
  **Q. How do you analyze the customer?**
479
469
 
480
- > A. We employ soft clustering for each customer.
481
- > <img width="200" src="https://res.cloudinary.com/dfeirxlea/image/upload/v1732732628/pj_m_agents/ito937s5d5x0so8isvw6.png">
470
+ A. We employ soft clustering for each customer.
471
+ <img width="200" src="https://res.cloudinary.com/dfeirxlea/image/upload/v1732732628/pj_m_agents/ito937s5d5x0so8isvw6.png">