versionhq 1.1.6.4__tar.gz → 1.1.7.1__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.
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.github/workflows/publish.yml +2 -3
- versionhq-1.1.7.1/.github/workflows/run_tests.yml +34 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.gitignore +8 -5
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.pre-commit-config.yaml +1 -1
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/PKG-INFO +63 -44
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/README.md +62 -43
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/pyproject.toml +11 -8
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/__init__.py +1 -1
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/usage_metrics.py +4 -12
- versionhq-1.1.7.1/src/versionhq/agent/TEMPLATES/Backstory.py +3 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/agent/model.py +96 -159
- versionhq-1.1.7.1/src/versionhq/task/model.py +468 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/team/model.py +78 -153
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/team/team_planner.py +2 -2
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/tool/model.py +6 -16
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq.egg-info/PKG-INFO +63 -44
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq.egg-info/SOURCES.txt +8 -2
- versionhq-1.1.7.1/tests/agent/agent_test.py +79 -0
- versionhq-1.1.7.1/tests/conftest.py +3 -0
- versionhq-1.1.7.1/tests/task/__init__.py +0 -0
- versionhq-1.1.7.1/tests/task/task_test.py +112 -0
- versionhq-1.1.7.1/tests/team/__init__.py +0 -0
- versionhq-1.1.7.1/tests/team/team_test.py +298 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/uv.lock +54 -58
- versionhq-1.1.6.4/src/versionhq/task/model.py +0 -430
- versionhq-1.1.6.4/tests/task/sync_test.py +0 -45
- versionhq-1.1.6.4/tests/team/kickoff_test.py +0 -101
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/.python-version +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/LICENSE +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/SECURITY.md +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/db/preprocess.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/requirements.txt +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/runtime.txt +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/setup.cfg +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/cache_handler.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/logger.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/_utils/rpm_controller.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/agent → versionhq-1.1.7.1/src/versionhq/agent/TEMPLATES}/__init__.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/cli → versionhq-1.1.7.1/src/versionhq/agent}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/clients → versionhq-1.1.7.1/src/versionhq/cli}/__init__.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/clients/customer → versionhq-1.1.7.1/src/versionhq/clients}/__init__.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/clients/product → versionhq-1.1.7.1/src/versionhq/clients/customer}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/clients/workflow → versionhq-1.1.7.1/src/versionhq/clients/product}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/clients/product/model.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/llm → versionhq-1.1.7.1/src/versionhq/clients/workflow}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/team → versionhq-1.1.7.1/src/versionhq/llm}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/llm/llm_vars.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/llm/model.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/task/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.1.6.4/src/versionhq/tool → versionhq-1.1.7.1/src/versionhq/team}/__init__.py +0 -0
- {versionhq-1.1.6.4/tests → versionhq-1.1.7.1/src/versionhq/tool}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq.egg-info/requires.txt +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.1.6.4/tests/cli → versionhq-1.1.7.1/tests}/__init__.py +0 -0
- {versionhq-1.1.6.4/tests/task → versionhq-1.1.7.1/tests/agent}/__init__.py +0 -0
- {versionhq-1.1.6.4/tests/team → versionhq-1.1.7.1/tests/cli}/__init__.py +0 -0
- {versionhq-1.1.6.4 → versionhq-1.1.7.1}/tests/team/Prompts/Demo_test.py +0 -0
@@ -18,7 +18,7 @@ jobs:
|
|
18
18
|
uses: astral-sh/setup-uv@v4
|
19
19
|
with:
|
20
20
|
version: "0.5.11"
|
21
|
-
|
21
|
+
|
22
22
|
- name: Build release distributions
|
23
23
|
run: |
|
24
24
|
uv venv --python=python3.13.1
|
@@ -37,7 +37,7 @@ jobs:
|
|
37
37
|
runs-on: ubuntu-latest
|
38
38
|
needs:
|
39
39
|
- release-build
|
40
|
-
|
40
|
+
|
41
41
|
permissions:
|
42
42
|
id-token: write
|
43
43
|
|
@@ -60,4 +60,3 @@ jobs:
|
|
60
60
|
verbose: true
|
61
61
|
user: __token__
|
62
62
|
password: ${{ secrets.PYPI_API_TOKEN }}
|
63
|
-
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Run Tests
|
2
|
+
|
3
|
+
on: [pull_request, push]
|
4
|
+
|
5
|
+
permissions:
|
6
|
+
contents: write
|
7
|
+
|
8
|
+
env:
|
9
|
+
LITELLM_API_KEY: ${{ secrets.LITELLM_API_KEY }}
|
10
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
run_test:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
timeout-minutes: 15
|
16
|
+
|
17
|
+
steps:
|
18
|
+
- name: Checkout code
|
19
|
+
uses: actions/checkout@v4
|
20
|
+
|
21
|
+
- name: Install uv
|
22
|
+
uses: astral-sh/setup-uv@v4
|
23
|
+
with:
|
24
|
+
version: "0.5.11"
|
25
|
+
|
26
|
+
- name: Set up the project
|
27
|
+
run: |
|
28
|
+
uv venv --python=python3.13.1
|
29
|
+
source .venv/bin/activate
|
30
|
+
uv pip install --upgrade pip pytest
|
31
|
+
uv pip install -r requirements.txt
|
32
|
+
|
33
|
+
- name: Run tests
|
34
|
+
run: uv run pytest tests -vv --cache-clear
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
python_publish*
|
1
|
+
knowledge/
|
3
2
|
|
4
3
|
composio.py
|
5
4
|
memo.txt
|
@@ -7,12 +6,16 @@ memo.txt
|
|
7
6
|
dist/
|
8
7
|
build/
|
9
8
|
.pypirc
|
9
|
+
uploads/
|
10
|
+
sample_dataset/
|
11
|
+
*egg-info/
|
12
|
+
|
10
13
|
__pycache__/
|
11
14
|
.ruff_cache/
|
15
|
+
.pytest_cache/
|
16
|
+
|
12
17
|
.DS_Store
|
13
18
|
.vscode
|
19
|
+
|
14
20
|
.env
|
15
21
|
.venv/
|
16
|
-
uploads/
|
17
|
-
sample_dataset/
|
18
|
-
*egg-info/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.7.1
|
4
4
|
Summary: LLM orchestration frameworks for model-agnostic AI agents that handle complex outbound workflows
|
5
5
|
Author-email: Kuriko Iwai <kuriko@versi0n.io>
|
6
6
|
License: MIT License
|
@@ -52,8 +52,7 @@ Requires-Dist: wheel>=0.45.1
|
|
52
52
|
|
53
53
|
# Overview
|
54
54
|
|
55
|
-
  
|
55
|
+
 [](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)   
|
57
56
|
|
58
57
|
|
59
58
|
An LLM orchestration frameworks for multi-agent systems with RAG to autopilot outbound workflows.
|
@@ -70,6 +69,7 @@ Messaging workflows are created at individual level, and will be deployed on thi
|
|
70
69
|
- [Orchestration frameworks](https://github.com/versionHQ/multi-agent-system)
|
71
70
|
- [Test client app](https://github.com/versionHQ/test-client-app)
|
72
71
|
|
72
|
+
<hr />
|
73
73
|
|
74
74
|
## Mindmap
|
75
75
|
|
@@ -86,10 +86,10 @@ LLM-powered `agent`s and `team`s use `tool`s and their own knowledge to complete
|
|
86
86
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
87
87
|
|
88
88
|
- [Key Features](#key-features)
|
89
|
+
- [Usage](#usage)
|
89
90
|
- [Technologies Used](#technologies-used)
|
90
91
|
- [Project Structure](#project-structure)
|
91
92
|
- [Setup](#setup)
|
92
|
-
- [Usage](#usage)
|
93
93
|
- [Contributing](#contributing)
|
94
94
|
- [Customizing AI Agents](#customizing-ai-agents)
|
95
95
|
- [Modifying RAG Functionality](#modifying-rag-functionality)
|
@@ -111,7 +111,7 @@ The `agent` is model agnostic. The default model is set Chat GTP 4o. We ask the
|
|
111
111
|
Multiple `agents` can form a `team` to complete complex tasks together.
|
112
112
|
|
113
113
|
**1. Analysis**
|
114
|
-
- Professional `agents` handle the analysis `tasks` on each client, customer, and product.
|
114
|
+
- Professional `agents` handle the analysis `tasks` on each client, customer, and product.
|
115
115
|
|
116
116
|
**2. Messaging Workflow Creation**
|
117
117
|
- Several `teams` receive the analysis and design initial messaging workflow with several layers.
|
@@ -121,6 +121,52 @@ Multiple `agents` can form a `team` to complete complex tasks together.
|
|
121
121
|
**3. Autopiloting**
|
122
122
|
- Responsible `agents` or `teams` autopilot executing and refining the messaging workflow.
|
123
123
|
|
124
|
+
<hr />
|
125
|
+
|
126
|
+
## Usage
|
127
|
+
|
128
|
+
1. Install `versionhq` package:
|
129
|
+
```
|
130
|
+
uv pip install versionhq
|
131
|
+
```
|
132
|
+
|
133
|
+
2. You can use the `versionhq` module in your Python app.
|
134
|
+
|
135
|
+
- **i.e.,** Make LLM-based agent execute the task and return JSON dict.
|
136
|
+
|
137
|
+
```
|
138
|
+
from versionhq.agent.model import Agent
|
139
|
+
from versionhq.task.model import Task, ResponseField
|
140
|
+
|
141
|
+
agent = Agent(
|
142
|
+
role="demo",
|
143
|
+
goal="amazing project goal",
|
144
|
+
skillsets=["skill_1", "skill_2", ],
|
145
|
+
llm="llm-of-choice"
|
146
|
+
)
|
147
|
+
|
148
|
+
task = Task(
|
149
|
+
description="Amazing task",
|
150
|
+
expected_output_json=True,
|
151
|
+
expected_output_pydantic=False,
|
152
|
+
output_field_list=[
|
153
|
+
ResponseField(title="test1", type=str, required=True),
|
154
|
+
ResponseField(title="test2", type=list, required=True),
|
155
|
+
],
|
156
|
+
context=["amazing context",],
|
157
|
+
tools=["amazing tool"],
|
158
|
+
callback=None,
|
159
|
+
)
|
160
|
+
|
161
|
+
res = task.execute_sync(agent=agent)
|
162
|
+
|
163
|
+
return res.to_dict()
|
164
|
+
|
165
|
+
```
|
166
|
+
|
167
|
+
For more details:
|
168
|
+
|
169
|
+
[PyPi package](https://pypi.org/project/versionhq/)
|
124
170
|
|
125
171
|
<hr />
|
126
172
|
|
@@ -145,6 +191,7 @@ Multiple `agents` can form a `team` to complete complex tasks together.
|
|
145
191
|
- [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
|
146
192
|
- [setuptools](https://pypi.org/project/setuptools/): Build python modules
|
147
193
|
|
194
|
+
<hr />
|
148
195
|
|
149
196
|
## Project Structure
|
150
197
|
|
@@ -166,10 +213,10 @@ src/
|
|
166
213
|
│ └── ...
|
167
214
|
│
|
168
215
|
└──tests/
|
169
|
-
└── cli/
|
216
|
+
└── cli/
|
170
217
|
└── team/
|
171
218
|
└── ...
|
172
|
-
│
|
219
|
+
│
|
173
220
|
└── uploads/ # Uploaded files for the project
|
174
221
|
|
175
222
|
```
|
@@ -210,25 +257,6 @@ src/
|
|
210
257
|
|
211
258
|
<hr />
|
212
259
|
|
213
|
-
## Usage
|
214
|
-
|
215
|
-
1. Install `versionhq` package:
|
216
|
-
```
|
217
|
-
uv pip install versionhq
|
218
|
-
```
|
219
|
-
|
220
|
-
2. You can use the `versionhq` module in your Python app.
|
221
|
-
```
|
222
|
-
from versionhq.agent.model import Agent
|
223
|
-
agent = Agent(llm="your-llm", ...)
|
224
|
-
```
|
225
|
-
|
226
|
-
For more details:
|
227
|
-
|
228
|
-
[PyPi package](https://pypi.org/project/versionhq/)
|
229
|
-
|
230
|
-
<hr />
|
231
|
-
|
232
260
|
## Contributing
|
233
261
|
|
234
262
|
1. Fork the repository
|
@@ -239,13 +267,17 @@ For more details:
|
|
239
267
|
|
240
268
|
4. Test the features using the `tests` directory.
|
241
269
|
|
242
|
-
- Add a
|
270
|
+
- Add a test function to respective components in the `tests` directory.
|
271
|
+
- Add your `LITELLM_API_KEY` and `OPENAI_API_KEY` to the Github `repository secrets` @ settings > secrets & variables > Actions.
|
243
272
|
- Run a test.
|
244
273
|
```
|
245
|
-
uv run
|
274
|
+
uv run pytest tests -vv
|
246
275
|
```
|
247
276
|
|
248
|
-
|
277
|
+
**pytest**
|
278
|
+
|
279
|
+
* When adding a new file to `tests`, name the file ended with `_test.py`.
|
280
|
+
* When adding a new feature to the file, name the feature started with `test_`.
|
249
281
|
|
250
282
|
5. Pull the latest version of source code from the main branch (`git pull origin main`) *Address conflicts if any.
|
251
283
|
6. Commit your changes (`git add .` / `git commit -m 'Add your-amazing-feature'`)
|
@@ -321,9 +353,10 @@ Common issues and solutions:
|
|
321
353
|
- 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.
|
322
354
|
- Database connection issues: Check if the Chroma DB is properly initialized and accessible.
|
323
355
|
- Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
|
324
|
-
- Issues related to dependencies
|
356
|
+
- Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
325
357
|
- Issues related to the AI agents or RAG system: Check the `output.log` file for detailed error messages and stack traces.
|
326
358
|
- Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
359
|
+
- `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.
|
327
360
|
|
328
361
|
<hr />
|
329
362
|
|
@@ -354,17 +387,3 @@ Common issues and solutions:
|
|
354
387
|
> **Simple tasks**: You have a straightforward, one-off task that doesn't require significant complexity or iteration.
|
355
388
|
|
356
389
|
> **Human input**: You need to provide initial input or guidance to the agent, or you expect to review and refine the output.
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
<--- Remaining tasks --->
|
361
|
-
|
362
|
-
- llm handling - agent
|
363
|
-
- more llms integration
|
364
|
-
- simpler prompting
|
365
|
-
- broader knowledge
|
366
|
-
|
367
|
-
- utils - log
|
368
|
-
- utils - time
|
369
|
-
|
370
|
-
- end to end client app test
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# Overview
|
2
2
|
|
3
|
-
  
|
3
|
+
 [](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)   
|
5
4
|
|
6
5
|
|
7
6
|
An LLM orchestration frameworks for multi-agent systems with RAG to autopilot outbound workflows.
|
@@ -18,6 +17,7 @@ Messaging workflows are created at individual level, and will be deployed on thi
|
|
18
17
|
- [Orchestration frameworks](https://github.com/versionHQ/multi-agent-system)
|
19
18
|
- [Test client app](https://github.com/versionHQ/test-client-app)
|
20
19
|
|
20
|
+
<hr />
|
21
21
|
|
22
22
|
## Mindmap
|
23
23
|
|
@@ -34,10 +34,10 @@ LLM-powered `agent`s and `team`s use `tool`s and their own knowledge to complete
|
|
34
34
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
35
35
|
|
36
36
|
- [Key Features](#key-features)
|
37
|
+
- [Usage](#usage)
|
37
38
|
- [Technologies Used](#technologies-used)
|
38
39
|
- [Project Structure](#project-structure)
|
39
40
|
- [Setup](#setup)
|
40
|
-
- [Usage](#usage)
|
41
41
|
- [Contributing](#contributing)
|
42
42
|
- [Customizing AI Agents](#customizing-ai-agents)
|
43
43
|
- [Modifying RAG Functionality](#modifying-rag-functionality)
|
@@ -59,7 +59,7 @@ The `agent` is model agnostic. The default model is set Chat GTP 4o. We ask the
|
|
59
59
|
Multiple `agents` can form a `team` to complete complex tasks together.
|
60
60
|
|
61
61
|
**1. Analysis**
|
62
|
-
- Professional `agents` handle the analysis `tasks` on each client, customer, and product.
|
62
|
+
- Professional `agents` handle the analysis `tasks` on each client, customer, and product.
|
63
63
|
|
64
64
|
**2. Messaging Workflow Creation**
|
65
65
|
- Several `teams` receive the analysis and design initial messaging workflow with several layers.
|
@@ -69,6 +69,52 @@ Multiple `agents` can form a `team` to complete complex tasks together.
|
|
69
69
|
**3. Autopiloting**
|
70
70
|
- Responsible `agents` or `teams` autopilot executing and refining the messaging workflow.
|
71
71
|
|
72
|
+
<hr />
|
73
|
+
|
74
|
+
## Usage
|
75
|
+
|
76
|
+
1. Install `versionhq` package:
|
77
|
+
```
|
78
|
+
uv pip install versionhq
|
79
|
+
```
|
80
|
+
|
81
|
+
2. You can use the `versionhq` module in your Python app.
|
82
|
+
|
83
|
+
- **i.e.,** Make LLM-based agent execute the task and return JSON dict.
|
84
|
+
|
85
|
+
```
|
86
|
+
from versionhq.agent.model import Agent
|
87
|
+
from versionhq.task.model import Task, ResponseField
|
88
|
+
|
89
|
+
agent = Agent(
|
90
|
+
role="demo",
|
91
|
+
goal="amazing project goal",
|
92
|
+
skillsets=["skill_1", "skill_2", ],
|
93
|
+
llm="llm-of-choice"
|
94
|
+
)
|
95
|
+
|
96
|
+
task = Task(
|
97
|
+
description="Amazing task",
|
98
|
+
expected_output_json=True,
|
99
|
+
expected_output_pydantic=False,
|
100
|
+
output_field_list=[
|
101
|
+
ResponseField(title="test1", type=str, required=True),
|
102
|
+
ResponseField(title="test2", type=list, required=True),
|
103
|
+
],
|
104
|
+
context=["amazing context",],
|
105
|
+
tools=["amazing tool"],
|
106
|
+
callback=None,
|
107
|
+
)
|
108
|
+
|
109
|
+
res = task.execute_sync(agent=agent)
|
110
|
+
|
111
|
+
return res.to_dict()
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
For more details:
|
116
|
+
|
117
|
+
[PyPi package](https://pypi.org/project/versionhq/)
|
72
118
|
|
73
119
|
<hr />
|
74
120
|
|
@@ -93,6 +139,7 @@ Multiple `agents` can form a `team` to complete complex tasks together.
|
|
93
139
|
- [pre-commit](https://pre-commit.com/): Manage and maintain pre-commit hooks
|
94
140
|
- [setuptools](https://pypi.org/project/setuptools/): Build python modules
|
95
141
|
|
142
|
+
<hr />
|
96
143
|
|
97
144
|
## Project Structure
|
98
145
|
|
@@ -114,10 +161,10 @@ src/
|
|
114
161
|
│ └── ...
|
115
162
|
│
|
116
163
|
└──tests/
|
117
|
-
└── cli/
|
164
|
+
└── cli/
|
118
165
|
└── team/
|
119
166
|
└── ...
|
120
|
-
│
|
167
|
+
│
|
121
168
|
└── uploads/ # Uploaded files for the project
|
122
169
|
|
123
170
|
```
|
@@ -158,25 +205,6 @@ src/
|
|
158
205
|
|
159
206
|
<hr />
|
160
207
|
|
161
|
-
## Usage
|
162
|
-
|
163
|
-
1. Install `versionhq` package:
|
164
|
-
```
|
165
|
-
uv pip install versionhq
|
166
|
-
```
|
167
|
-
|
168
|
-
2. You can use the `versionhq` module in your Python app.
|
169
|
-
```
|
170
|
-
from versionhq.agent.model import Agent
|
171
|
-
agent = Agent(llm="your-llm", ...)
|
172
|
-
```
|
173
|
-
|
174
|
-
For more details:
|
175
|
-
|
176
|
-
[PyPi package](https://pypi.org/project/versionhq/)
|
177
|
-
|
178
|
-
<hr />
|
179
|
-
|
180
208
|
## Contributing
|
181
209
|
|
182
210
|
1. Fork the repository
|
@@ -187,13 +215,17 @@ For more details:
|
|
187
215
|
|
188
216
|
4. Test the features using the `tests` directory.
|
189
217
|
|
190
|
-
- Add a
|
218
|
+
- Add a test function to respective components in the `tests` directory.
|
219
|
+
- Add your `LITELLM_API_KEY` and `OPENAI_API_KEY` to the Github `repository secrets` @ settings > secrets & variables > Actions.
|
191
220
|
- Run a test.
|
192
221
|
```
|
193
|
-
uv run
|
222
|
+
uv run pytest tests -vv
|
194
223
|
```
|
195
224
|
|
196
|
-
|
225
|
+
**pytest**
|
226
|
+
|
227
|
+
* When adding a new file to `tests`, name the file ended with `_test.py`.
|
228
|
+
* When adding a new feature to the file, name the feature started with `test_`.
|
197
229
|
|
198
230
|
5. Pull the latest version of source code from the main branch (`git pull origin main`) *Address conflicts if any.
|
199
231
|
6. Commit your changes (`git add .` / `git commit -m 'Add your-amazing-feature'`)
|
@@ -269,9 +301,10 @@ Common issues and solutions:
|
|
269
301
|
- 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.
|
270
302
|
- Database connection issues: Check if the Chroma DB is properly initialized and accessible.
|
271
303
|
- Memory errors: If processing large contracts, you may need to increase the available memory for the Python process.
|
272
|
-
- Issues related to dependencies
|
304
|
+
- Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
273
305
|
- Issues related to the AI agents or RAG system: Check the `output.log` file for detailed error messages and stack traces.
|
274
306
|
- Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
307
|
+
- `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.
|
275
308
|
|
276
309
|
<hr />
|
277
310
|
|
@@ -302,17 +335,3 @@ Common issues and solutions:
|
|
302
335
|
> **Simple tasks**: You have a straightforward, one-off task that doesn't require significant complexity or iteration.
|
303
336
|
|
304
337
|
> **Human input**: You need to provide initial input or guidance to the agent, or you expect to review and refine the output.
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
<--- Remaining tasks --->
|
309
|
-
|
310
|
-
- llm handling - agent
|
311
|
-
- more llms integration
|
312
|
-
- simpler prompting
|
313
|
-
- broader knowledge
|
314
|
-
|
315
|
-
- utils - log
|
316
|
-
- utils - time
|
317
|
-
|
318
|
-
- end to end client app test
|
@@ -15,7 +15,7 @@ exclude = ["test*", "__pycache__"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.1.
|
18
|
+
version = "1.1.7.1"
|
19
19
|
authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
|
20
20
|
description = "LLM orchestration frameworks for model-agnostic AI agents that handle complex outbound workflows"
|
21
21
|
readme = "README.md"
|
@@ -58,15 +58,10 @@ dev-dependencies = [
|
|
58
58
|
"python-dotenv>=1.0.0",
|
59
59
|
"black",
|
60
60
|
"bandit",
|
61
|
-
"twine"
|
61
|
+
"twine",
|
62
|
+
"pytest>=8.3.4",
|
62
63
|
]
|
63
64
|
|
64
|
-
[tool.black]
|
65
|
-
line-length = 88
|
66
|
-
|
67
|
-
[tool.isort]
|
68
|
-
profile = "black"
|
69
|
-
|
70
65
|
[tool.uv.workspace]
|
71
66
|
members = ["krik8235"]
|
72
67
|
|
@@ -75,3 +70,11 @@ ignore_missing_imports = true
|
|
75
70
|
|
76
71
|
[tool.bandit]
|
77
72
|
exclude_dirs = [""]
|
73
|
+
|
74
|
+
|
75
|
+
[tool.pytest.ini_options]
|
76
|
+
filterwarnings = "ignore"
|
77
|
+
minversion = "8.0"
|
78
|
+
addopts = "-v -ra -q"
|
79
|
+
log_cli = true
|
80
|
+
log_cli_level = "INFO"
|
@@ -7,18 +7,10 @@ class UsageMetrics(BaseModel):
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
total_tokens: int = Field(default=0, description="Total number of tokens used")
|
10
|
-
prompt_tokens: int = Field(
|
11
|
-
|
12
|
-
)
|
13
|
-
|
14
|
-
default=0, description="Number of cached prompt tokens used"
|
15
|
-
)
|
16
|
-
completion_tokens: int = Field(
|
17
|
-
default=0, description="Number of tokens used in completions"
|
18
|
-
)
|
19
|
-
successful_requests: int = Field(
|
20
|
-
default=0, description="Number of successful requests made"
|
21
|
-
)
|
10
|
+
prompt_tokens: int = Field(default=0, description="Number of tokens used in prompts")
|
11
|
+
cached_prompt_tokens: int = Field(default=0, description="Number of cached prompt tokens used")
|
12
|
+
completion_tokens: int = Field(default=0, description="Number of tokens used in completions")
|
13
|
+
successful_requests: int = Field(default=0, description="Number of successful requests made")
|
22
14
|
|
23
15
|
def add_usage_metrics(self, usage_metrics: "UsageMetrics"):
|
24
16
|
"""
|
@@ -0,0 +1,3 @@
|
|
1
|
+
BACKSTORY="""You are a {role} with deep understanding of {knowledge} and highly skilled in {skillsets}.
|
2
|
+
You have access to call the RAG tools that can {rag_tool_overview}. By leveraging these tools, your knowledge, and skillsets, you can identify competitive strategies that have been proven effective to achieve the goal: {goal}. Take these into consideration, create innovative solutions.
|
3
|
+
"""
|