versionhq 1.2.1.6__tar.gz → 1.2.1.8__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.2.1.6 → versionhq-1.2.1.8}/PKG-INFO +7 -14
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/README.md +6 -13
- versionhq-1.2.1.8/docs/_logos/favicon.ico +0 -0
- versionhq-1.2.1.8/docs/_logos/logo192.png +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/task/response-field.md +5 -5
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/task-graph.md +4 -4
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/task.md +145 -23
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/index.md +6 -15
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/mkdocs.yml +16 -3
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/pyproject.toml +1 -1
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/__init__.py +1 -1
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/model.py +2 -2
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq.egg-info/PKG-INFO +7 -14
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task/doc_test.py +62 -3
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task/task_test.py +27 -27
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/uv.lock +7 -7
- versionhq-1.2.1.6/docs/_logos/favicon.ico +0 -0
- versionhq-1.2.1.6/docs/_logos/logo192.png +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.env.sample +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.github/workflows/deploy_docs.yml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.github/workflows/publish.yml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.github/workflows/run_tests.yml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.gitignore +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.pre-commit-config.yaml +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/.python-version +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/LICENSE +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/SECURITY.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/db/preprocess.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/CNAME +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/Agent.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/task/evaluation.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/task/task-output.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/core/tool.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/quickstart.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/stylesheets/main.css +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/docs/tags.md +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/requirements-dev.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/requirements.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/runtime.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/setup.cfg +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/logger.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/usage_metrics.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/_utils/vars.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/inhouse_agents.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent/rpm_controller.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent_network/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/agent_network/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/cli/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/customer/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/product/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/product/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/workflow/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/_utils.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/embedding.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/source.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/source_docling.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/knowledge/storage.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/llm/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/llm/llm_vars.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/llm/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/memory/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/memory/contextual_memory.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/memory/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/base.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/mem0_storage.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/rag_storage.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/task_output_storage.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/storage/utils.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/TEMPLATES/Description.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/evaluate.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/formation.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/log_handler.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task/structured_response.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task_graph/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task_graph/colors.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task_graph/draft.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/task_graph/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/cache_handler.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/composio_tool.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/composio_tool_vars.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/model.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq.egg-info/SOURCES.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq.egg-info/requires.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent/agent_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent/doc_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent_network/Prompts/Demo_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent_network/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/agent_network/agent_network_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/cli/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/clients/customer_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/clients/product_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/clients/workflow_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/conftest.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/doc_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/formation_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/knowledge/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/knowledge/knowledge_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/knowledge/mock_report_compressed.pdf +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/llm/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/llm/llm_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/memory/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/memory/memory_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task/doc_taskoutput_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task/llm_connection_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task_graph/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task_graph/doc_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/task_graph/task_graph_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/tool/__init__.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/tool/composio_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/tool/doc_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/tool/tool_test.py +0 -0
- {versionhq-1.2.1.6 → versionhq-1.2.1.8}/tests/usecase_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.1.
|
3
|
+
Version: 1.2.1.8
|
4
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
|
@@ -81,7 +81,7 @@ Requires-Dist: pygraphviz>=1.14; extra == "pygraphviz"
|
|
81
81
|
|
82
82
|
# Overview
|
83
83
|
|
84
|
-
[](https://clickpy.clickhouse.com/dashboard/versionhq)
|
85
85
|

|
86
86
|
[](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
|
87
87
|

|
@@ -93,11 +93,10 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
93
93
|
|
94
94
|
**Visit:**
|
95
95
|
|
96
|
-
- [
|
96
|
+
- [Playground](https://versi0n.io/playground)
|
97
97
|
- [Docs](https://docs.versi0n.io)
|
98
98
|
- [Github Repository](https://github.com/versionHQ/multi-agent-system)
|
99
|
-
- [
|
100
|
-
|
99
|
+
- [PyPI](https://pypi.org/project/versionhq/)
|
101
100
|
|
102
101
|
<hr />
|
103
102
|
|
@@ -181,11 +180,11 @@ node_c = task_graph.add_task(task=task_c)
|
|
181
180
|
|
182
181
|
task_graph.add_dependency(
|
183
182
|
node_a.identifier, node_b.identifier,
|
184
|
-
|
183
|
+
dependency_type=vhq.DependencyType.FINISH_TO_START, weight=5, description="B depends on A"
|
185
184
|
)
|
186
185
|
task_graph.add_dependency(
|
187
186
|
node_a.identifier, node_c.identifier,
|
188
|
-
|
187
|
+
dependency_type=vhq.DependencyType.FINISH_TO_FINISH, lag=1, required=False, weight=3
|
189
188
|
)
|
190
189
|
|
191
190
|
# To visualize the graph:
|
@@ -594,10 +593,4 @@ Common issues and solutions:
|
|
594
593
|
## Frequently Asked Questions (FAQ)
|
595
594
|
**Q. Where can I see if the agent is working?**
|
596
595
|
|
597
|
-
A. Visit [playground](https://versi0n.io).
|
598
|
-
|
599
|
-
|
600
|
-
**Q. How do you analyze the customer?**
|
601
|
-
|
602
|
-
A. We employ soft clustering for each customer.
|
603
|
-
<img width="200" src="https://res.cloudinary.com/dfeirxlea/image/upload/v1732732628/pj_m_agents/ito937s5d5x0so8isvw6.png">
|
596
|
+
A. Visit [playground](https://versi0n.io/playground).
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Overview
|
2
2
|
|
3
|
-
[](https://clickpy.clickhouse.com/dashboard/versionhq)
|
4
4
|

|
5
5
|
[](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
|
6
6
|

|
@@ -12,11 +12,10 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
12
12
|
|
13
13
|
**Visit:**
|
14
14
|
|
15
|
-
- [
|
15
|
+
- [Playground](https://versi0n.io/playground)
|
16
16
|
- [Docs](https://docs.versi0n.io)
|
17
17
|
- [Github Repository](https://github.com/versionHQ/multi-agent-system)
|
18
|
-
- [
|
19
|
-
|
18
|
+
- [PyPI](https://pypi.org/project/versionhq/)
|
20
19
|
|
21
20
|
<hr />
|
22
21
|
|
@@ -100,11 +99,11 @@ node_c = task_graph.add_task(task=task_c)
|
|
100
99
|
|
101
100
|
task_graph.add_dependency(
|
102
101
|
node_a.identifier, node_b.identifier,
|
103
|
-
|
102
|
+
dependency_type=vhq.DependencyType.FINISH_TO_START, weight=5, description="B depends on A"
|
104
103
|
)
|
105
104
|
task_graph.add_dependency(
|
106
105
|
node_a.identifier, node_c.identifier,
|
107
|
-
|
106
|
+
dependency_type=vhq.DependencyType.FINISH_TO_FINISH, lag=1, required=False, weight=3
|
108
107
|
)
|
109
108
|
|
110
109
|
# To visualize the graph:
|
@@ -513,10 +512,4 @@ Common issues and solutions:
|
|
513
512
|
## Frequently Asked Questions (FAQ)
|
514
513
|
**Q. Where can I see if the agent is working?**
|
515
514
|
|
516
|
-
A. Visit [playground](https://versi0n.io).
|
517
|
-
|
518
|
-
|
519
|
-
**Q. How do you analyze the customer?**
|
520
|
-
|
521
|
-
A. We employ soft clustering for each customer.
|
522
|
-
<img width="200" src="https://res.cloudinary.com/dfeirxlea/image/upload/v1732732628/pj_m_agents/ito937s5d5x0so8isvw6.png">
|
515
|
+
A. Visit [playground](https://versi0n.io/playground).
|
Binary file
|
Binary file
|
@@ -7,7 +7,7 @@ tags:
|
|
7
7
|
|
8
8
|
<class>`class` versionhq.task.model.<bold>ResponseField<bold></class>
|
9
9
|
|
10
|
-
A Pydantic class to store response formats to
|
10
|
+
A Pydantic class to store response formats to generate a structured response in JSON.
|
11
11
|
|
12
12
|
<hr/>
|
13
13
|
|
@@ -105,7 +105,7 @@ Agents can handle **one layer** of nested items usign `properties` and `items` f
|
|
105
105
|
|
106
106
|
We highly recommend to use `gemini-x` or `gpt-x` to get stable results.
|
107
107
|
|
108
|
-
###
|
108
|
+
### Object in List
|
109
109
|
|
110
110
|
```python
|
111
111
|
import versionhq as vhq
|
@@ -129,7 +129,7 @@ list_with_objects = vhq.ResponseField(
|
|
129
129
|
|
130
130
|
<hr />
|
131
131
|
|
132
|
-
### List
|
132
|
+
### List in List
|
133
133
|
|
134
134
|
```python
|
135
135
|
import versionhq as vhq
|
@@ -150,7 +150,7 @@ list_with_list = vhq.ResponseField(
|
|
150
150
|
|
151
151
|
<hr />
|
152
152
|
|
153
|
-
###
|
153
|
+
### List in Object
|
154
154
|
|
155
155
|
```python
|
156
156
|
import versionhq as vhq
|
@@ -173,7 +173,7 @@ dict_with_list = vhq.ResponseField(
|
|
173
173
|
|
174
174
|
<hr />
|
175
175
|
|
176
|
-
### Object
|
176
|
+
### Object in Object
|
177
177
|
|
178
178
|
```python
|
179
179
|
import versionhq as vhq
|
@@ -23,7 +23,7 @@ The following example demonstrates a simple concept of a `supervising` agent net
|
|
23
23
|
You can define nodes and edges mannually by creating nodes from tasks, and defining edges.
|
24
24
|
|
25
25
|
|
26
|
-
### Generating
|
26
|
+
### Generating
|
27
27
|
|
28
28
|
```python
|
29
29
|
import versionhq as vhq
|
@@ -40,11 +40,11 @@ node_c = task_graph.add_task(task=task_c)
|
|
40
40
|
|
41
41
|
task_graph.add_dependency(
|
42
42
|
node_a.identifier, node_b.identifier,
|
43
|
-
|
43
|
+
dependency_type=vhq.DependencyType.FINISH_TO_START, weight=5, description="B depends on A"
|
44
44
|
)
|
45
45
|
task_graph.add_dependency(
|
46
46
|
node_a.identifier, node_c.identifier,
|
47
|
-
|
47
|
+
dependency_type=vhq.DependencyType.FINISH_TO_FINISH, lag=1, required=False, weight=3
|
48
48
|
)
|
49
49
|
|
50
50
|
critical_path, duration, paths = task_graph.find_critical_path()
|
@@ -57,7 +57,7 @@ assert critical_path and duration and paths
|
|
57
57
|
```
|
58
58
|
|
59
59
|
|
60
|
-
### Activating
|
60
|
+
### Activating
|
61
61
|
|
62
62
|
Calling `.activate()` begins execution of the graph's nodes, respecting dependencies [`dependency-met`] and prioritizing the critical path.
|
63
63
|
|
@@ -9,7 +9,7 @@ tags:
|
|
9
9
|
|
10
10
|
A class to store and manage information for individual tasks, including their assignment to agents or agent networks, and dependencies via a node-based system that tracks conditions and status.
|
11
11
|
|
12
|
-
Ref. Node / Edge / TaskGraph class
|
12
|
+
Ref. Node / Edge / <a href="/core/task-graph">TaskGraph</a> class
|
13
13
|
|
14
14
|
<hr />
|
15
15
|
|
@@ -284,6 +284,7 @@ Context can consist of `Task` objects, `TaskOutput` objects, plain text `strings
|
|
284
284
|
|
285
285
|
In this scenario, `sub_task_2` executes before the main task. Its string output is then incorporated into the main task's context prompt on top of other context before the main task is executed.
|
286
286
|
|
287
|
+
<hr>
|
287
288
|
|
288
289
|
## Executing
|
289
290
|
|
@@ -298,7 +299,6 @@ import versionhq as vhq
|
|
298
299
|
|
299
300
|
task = vhq.Task(
|
300
301
|
description="return the output following the given prompt.",
|
301
|
-
response_fields=[vhq.ResponseField(title="test1", data_type=str, required=True)],
|
302
302
|
allow_delegation=True
|
303
303
|
)
|
304
304
|
task.execute()
|
@@ -308,47 +308,169 @@ assert "vhq-Delegated-Agent" in task.processed_agents # delegated agent
|
|
308
308
|
assert task.delegations ==1
|
309
309
|
```
|
310
310
|
|
311
|
+
<hr>
|
311
312
|
|
312
|
-
|
313
|
+
**SYNC - ASYNC**
|
313
314
|
|
314
|
-
|
315
|
-
callback: Optional[Callable] = Field(default=None, description="callback to be executed after the task is completed.")
|
316
|
-
callback_kwargs: Optional[Dict[str, Any]] = Field(default_factory=dict, description="kwargs for the callback when the callback is callable")
|
315
|
+
`[var]`<bold>`type: bool = False`</bold>
|
317
316
|
|
317
|
+
You can specify whether the task will be executed asynchronously.
|
318
318
|
|
319
|
-
|
320
|
-
|
321
|
-
can_use_agent_tools: bool = Field(default=False, description="whether the agent can use their own tools when executing the task")
|
322
|
-
tool_res_as_final: bool = Field(default=False, description="when set True, tools res will be stored in the `TaskOutput`")
|
319
|
+
```python
|
320
|
+
import versionhq as vhq
|
323
321
|
|
322
|
+
task = vhq.Task(
|
323
|
+
description="Return a word: 'test'",
|
324
|
+
type=vhq.TaskExecutionType.ASYNC # default: vhq.TaskExecutionType.SYNC
|
325
|
+
)
|
324
326
|
|
327
|
+
from unittest.mock import patch
|
328
|
+
with patch.object(vhq.Agent, "execute_task", return_value="test") as execute:
|
329
|
+
res = task.execute()
|
330
|
+
assert res.raw == "test"
|
331
|
+
execute.assert_called_once_with(task=task, context=None, task_tools=list())
|
332
|
+
```
|
325
333
|
|
334
|
+
<hr>
|
326
335
|
|
327
|
-
|
328
|
-
EXECUTION type
|
336
|
+
**Using tools**
|
329
337
|
|
330
|
-
|
338
|
+
`[var]`<bold>`tools: Optional[List[ToolSet | Tool | Any]] = None`</bold>
|
331
339
|
|
332
|
-
|
340
|
+
`[var]`<bold>`tool_res_as_final: bool = False`</bold>
|
333
341
|
|
334
|
-
### Async
|
335
342
|
|
336
|
-
|
343
|
+
Tasks can directly store tools explicitly called by the agent.
|
337
344
|
|
338
|
-
|
345
|
+
If the results from the tool should be the final results, set `tool_res_as_final` True.
|
339
346
|
|
340
|
-
|
347
|
+
This will allow the agent to store the tool results in the `tool_output` field of `TaskOutput` object.
|
341
348
|
|
342
|
-
### Context
|
343
349
|
|
350
|
+
```python
|
351
|
+
import versionhq as vhq
|
352
|
+
from typing import Callable
|
353
|
+
|
354
|
+
def random_func(message: str) -> str:
|
355
|
+
return message + "_demo"
|
356
|
+
|
357
|
+
tool = vhq.Tool(name="tool", func=random_func)
|
358
|
+
tool_set = vhq.ToolSet(tool=tool, kwargs=dict(message="empty func"))
|
359
|
+
task = vhq.Task(
|
360
|
+
description="execute the given tools",
|
361
|
+
tools=[tool_set,], # stores tools
|
362
|
+
tool_res_as_final=True, # stores tool results in TaskOutput object
|
363
|
+
)
|
364
|
+
|
365
|
+
res = task.execute()
|
366
|
+
assert res.tool_output == "empty func_demo"
|
367
|
+
```
|
368
|
+
|
369
|
+
Ref. <a href="/core/tool">Tool</a> class / <a href="/core/task/task-output">TaskOutput</a> class
|
370
|
+
|
371
|
+
<hr>
|
372
|
+
|
373
|
+
**Using agents' tools**
|
374
|
+
|
375
|
+
`[var]`<bold>`can_use_agent_tools: bool = True`</bold>
|
376
|
+
|
377
|
+
Tasks can explicitly stop/start using agent tools on top of the tools stored in the task object.
|
378
|
+
|
379
|
+
```python
|
380
|
+
import versionhq as vhq
|
381
|
+
|
382
|
+
simple_tool = vhq.Tool(name="simple tool", func=lambda x: "simple func")
|
383
|
+
agent = vhq.Agent(role="demo", goal="execute tools", tools=[simple_tool,])
|
384
|
+
task = vhq.Task(
|
385
|
+
description="execute tools",
|
386
|
+
can_use_agent_tools=True, # Flagged
|
387
|
+
tool_res_as_final=True
|
388
|
+
)
|
389
|
+
res = task.execute(agent=agent)
|
390
|
+
assert res.tool_output == "simple func"
|
391
|
+
```
|
344
392
|
|
393
|
+
<hr>
|
394
|
+
|
395
|
+
## Callback
|
396
|
+
|
397
|
+
`[var]`<bold>`callback: Optional[Callable] = None`</bold>
|
398
|
+
|
399
|
+
`[var]`<bold>`callback_kwargs: Optional[Dict[str, Any]] = dict()`</bold>
|
400
|
+
|
401
|
+
After executing the task, you can run a `callback` function with `callback_kwargs` and task output as parameters.
|
402
|
+
|
403
|
+
Callback results will be stored in `callback_output` filed of the `TaskOutput` object.
|
404
|
+
|
405
|
+
```python
|
406
|
+
import versionhq as vhq
|
407
|
+
|
408
|
+
def callback_func(condition: str, test1: str):
|
409
|
+
return f"Result: {test1}, condition added: {condition}"
|
410
|
+
|
411
|
+
task = vhq.Task(
|
412
|
+
description="return the output following the given prompt.",
|
413
|
+
callback=callback_func,
|
414
|
+
callback_kwargs=dict(condition="demo for pytest")
|
415
|
+
)
|
416
|
+
res = task.execute()
|
417
|
+
|
418
|
+
assert res and isinstance(res, vhq.TaskOutput)
|
419
|
+
assert res.task_id is task.id
|
420
|
+
assert "demo for pytest" in res.callback_output
|
421
|
+
```
|
422
|
+
|
423
|
+
<hr>
|
345
424
|
|
346
425
|
## Evaluating
|
347
426
|
|
348
|
-
|
349
|
-
|
427
|
+
`[var]`<bold>`should_evaluate: bool = False`</bold>
|
428
|
+
|
429
|
+
`[var]`<bold>`eval_criteria: Optional[List[str]] = list()`</bold>
|
430
|
+
|
431
|
+
You can turn on customized evaluations using the given criteria.
|
432
|
+
|
433
|
+
Refer <a href="/core/task/task-output">TaskOutput</a> class for details.
|
434
|
+
|
435
|
+
<hr>
|
436
|
+
|
437
|
+
|
438
|
+
## Ref
|
439
|
+
|
440
|
+
### Variables
|
441
|
+
|
442
|
+
| <div style="width:160px">**Variable**</div> | **Data Type** | **Default** | **Nullable** | **Description** |
|
443
|
+
| :--- | :--- | :--- | :--- | :--- |
|
444
|
+
| **`id`** | UUID | uuid.uuid4() | False | Stores task `id` as an identifier. |
|
445
|
+
| **`name`** | Optional[str] | None | True | Stores a task name (Inherited as `node` identifier if the task is dependent) |
|
446
|
+
| **`description`** | str | None | False | Required field to store a concise task description |
|
447
|
+
| **`pydantic_output`** | Optional[Type[BaseModel]] | None | True | Stores pydantic custom output class for structured response |
|
448
|
+
| **`response_fields`** | Optional[List[ResponseField]] | list() | True | Stores JSON formats for stuructured response |
|
449
|
+
| **`tools`** | Optional[List[ToolSet | Tool | Any]] | None | True | Stores tools to be called when the agent executes the task. |
|
450
|
+
| **`can_use_agent_tools`** | bool | True | - | Whether to use the agent tools |
|
451
|
+
| **`tool_res_as_final`** | bool | False | - | Whether to make the tool response a final response from the agent |
|
452
|
+
| **`execution_type`** | TaskExecutionType | TaskExecutionType.SYNC | - | Sync or async execution |
|
453
|
+
| **`allow_delegation`** | bool | False | - | Whether to allow the agent to delegate the task to another agent |
|
454
|
+
| **`callback`** | Optional[Callable] | None | True | Callback function to be executed after LLM calling |
|
455
|
+
| **`callback_kwargs`** | Optional[Dict[str, Any]] | dict() | True | Args for the callback function (if any)|
|
456
|
+
| **`should_evaluate`** | bool | False | - | Whether to evaluate the task output using eval criteria |
|
457
|
+
| **`eval_criteria`** | Optional[List[str]] | list() | True | Evaluation criteria given by the human client |
|
458
|
+
| **`processed_agents`** | Set[str] | set() | True | [Ops] Stores roles of the agents executed the task |
|
459
|
+
| **`tool_errors`** | int | 0 | True | [Ops] Stores number of tool errors |
|
460
|
+
| **`delegation`** | int | 0 | True | [Ops] Stores number of agent delegations |
|
461
|
+
| **`output`** | Optional[TaskOutput] | None | True | [Ops] Stores `TaskOutput` object after the execution |
|
462
|
+
|
463
|
+
|
464
|
+
### Class Methods
|
465
|
+
|
466
|
+
| <div style="width:120px">**Method**</div> | <div style="width:300px">**Params**</div> | **Returns** | **Description** |
|
467
|
+
| :--- | :--- | :--- | :--- |
|
468
|
+
| **`execute`** | <p>type: TaskExecutionType = None<br>agent: Optional["vhq.Agent"] = None<br>context: Optional[Any] = None</p> | InstanceOf[`TaskOutput`] or None (error) | A main method to handle task execution. Auto-build an agent when the agent is not given. |
|
350
469
|
|
351
470
|
|
352
|
-
|
471
|
+
### Properties
|
353
472
|
|
354
|
-
|
473
|
+
| <div style="width:120px">**Property**</div> | **Returns** | **Description** |
|
474
|
+
| :--- | :--- | :--- |
|
475
|
+
| **`key`** | str | Returns task key based on its description and output format. |
|
476
|
+
| **`summary`** | str | Returns a summary of the task based on its id, description and tools. |
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Overview
|
2
2
|
|
3
|
-
[](https://clickpy.clickhouse.com/dashboard/versionhq)
|
4
4
|

|
5
5
|
[](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
|
6
6
|

|
@@ -11,9 +11,9 @@ A Python framework for agentic orchestration that handles complex task automatio
|
|
11
11
|
|
12
12
|
**Visit:**
|
13
13
|
|
14
|
+
- [Playground](https://versi0n.io/playground)
|
14
15
|
- [PyPI](https://pypi.org/project/versionhq/)
|
15
16
|
- [Docs](https://docs.versi0n.io)
|
16
|
-
- [Playground](https://versi0n.io/)
|
17
17
|
|
18
18
|
**Contribute:**
|
19
19
|
|
@@ -69,11 +69,11 @@ node_c = task_graph.add_task(task=task_c)
|
|
69
69
|
|
70
70
|
task_graph.add_dependency(
|
71
71
|
node_a.identifier, node_b.identifier,
|
72
|
-
|
72
|
+
dependency_type=vhq.DependencyType.FINISH_TO_START, weight=5, description="B depends on A"
|
73
73
|
)
|
74
74
|
task_graph.add_dependency(
|
75
75
|
node_a.identifier, node_c.identifier,
|
76
|
-
|
76
|
+
dependency_type=vhq.DependencyType.FINISH_TO_FINISH, lag=1, required=False, weight=3
|
77
77
|
)
|
78
78
|
|
79
79
|
# To visualize the graph:
|
@@ -182,16 +182,7 @@ agent.update(
|
|
182
182
|
|
183
183
|
**Setting up a local env file**
|
184
184
|
|
185
|
-
Create `.env` file
|
186
|
-
|
187
|
-
```
|
188
|
-
OPENAI_API_KEY=your-openai-api-key
|
189
|
-
GEMINI_API_KEY=your-gemini-api-key
|
190
|
-
LITELLM_API_KEY=your-litellm-api-key
|
191
|
-
COMPOSIO_API_KEY=your-composio-api-key
|
192
|
-
COMPOSIO_CLI_KEY=your-composio-cli-key
|
193
|
-
[OTHER_LLM_INTERFACE_PROVIDER_OF_YOUR_CHOICE]_API_KEY=your-api-key
|
194
|
-
```
|
185
|
+
Create `.env` file at the root of the project directry and add your keys following `.env.sample`.
|
195
186
|
|
196
187
|
<hr />
|
197
188
|
|
@@ -268,7 +259,7 @@ Common issues and solutions:
|
|
268
259
|
## FAQ
|
269
260
|
**Q. Where can I see if the agent is working?**
|
270
261
|
|
271
|
-
A. Visit [playground](https://versi0n.io).
|
262
|
+
A. Visit [playground](https://versi0n.io/playground).
|
272
263
|
|
273
264
|
<hr />
|
274
265
|
|
@@ -83,7 +83,7 @@ theme:
|
|
83
83
|
icon: material/brightness-7
|
84
84
|
name: Switch to light mode
|
85
85
|
features:
|
86
|
-
- announce.dismiss
|
86
|
+
# - announce.dismiss
|
87
87
|
- content.action.edit
|
88
88
|
- content.action.view
|
89
89
|
- content.code.annotate
|
@@ -92,6 +92,7 @@ theme:
|
|
92
92
|
- content.tabs.link
|
93
93
|
- content.tooltips
|
94
94
|
- header.autohide
|
95
|
+
- navigation.tabs
|
95
96
|
- navigation.path
|
96
97
|
- navigation.top
|
97
98
|
- navigation.footer
|
@@ -117,10 +118,9 @@ nav:
|
|
117
118
|
- TaskOutput: 'core/task/task-output.md'
|
118
119
|
- Evaluation: 'core/task/evaluation.md'
|
119
120
|
- Tool: 'core/tool.md'
|
120
|
-
# - Compoio Tools: 'core/composio-tool.md'
|
121
121
|
- Tags: 'tags.md'
|
122
122
|
- Examples:
|
123
|
-
- Playground: https://versi0n.io
|
123
|
+
- Playground: https://versi0n.io/playground
|
124
124
|
- Experiment - Agent Performance: https://github.com/versionHQ/exp-agent-performance
|
125
125
|
- Change Log: https://github.com/versionHQ/multi-agent-system/releases
|
126
126
|
|
@@ -137,6 +137,19 @@ extra:
|
|
137
137
|
analytics:
|
138
138
|
provider: google
|
139
139
|
property: G-E19K228ENL
|
140
|
+
feedback:
|
141
|
+
title: Was this page helpful?
|
142
|
+
ratings:
|
143
|
+
- icon: material/emoticon-happy-outline
|
144
|
+
name: This page was helpful
|
145
|
+
data: 1
|
146
|
+
note: >-
|
147
|
+
Thanks for your feedback!
|
148
|
+
- icon: material/emoticon-sad-outline
|
149
|
+
name: This page could be improved
|
150
|
+
data: 0
|
151
|
+
note: >-
|
152
|
+
Thanks for your feedback! Help us improve this page by using our <a href="https://github.com/versionhq/multi-agent-system/issues/new/?title=[Feedback]+{title}+-+{url}" target="_blank" rel="noopener">feedback form</a>.
|
140
153
|
social:
|
141
154
|
- icon: fontawesome/brands/github
|
142
155
|
link: https://github.com/versionHQ/multi-agent-system
|
@@ -15,7 +15,7 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.2.1.
|
18
|
+
version = "1.2.1.8"
|
19
19
|
authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
|
20
20
|
description = "An agentic orchestration framework for building agent networks that handle task automation."
|
21
21
|
readme = "README.md"
|
@@ -276,7 +276,7 @@ class Task(BaseModel):
|
|
276
276
|
|
277
277
|
# tool usage
|
278
278
|
tools: Optional[List[ToolSet | Tool | Any]] = Field(default_factory=list, description="tools that the agent can use aside from their tools")
|
279
|
-
can_use_agent_tools: bool = Field(default=
|
279
|
+
can_use_agent_tools: bool = Field(default=True, description="whether the agent can use their own tools when executing the task")
|
280
280
|
tool_res_as_final: bool = Field(default=False, description="when set True, tools res will be stored in the `TaskOutput`")
|
281
281
|
|
282
282
|
# executing
|
@@ -478,7 +478,7 @@ Ref. Output image: {output_formats_to_follow}
|
|
478
478
|
return output
|
479
479
|
|
480
480
|
else:
|
481
|
-
r = str(raw).replace("{'", '{"').replace("{ '", '{"').replace("': '", '": "').replace("'}", '"}').replace("' }", '"}').replace("', '", '", "').replace("['", '["').replace("[ '", '[ "').replace("']", '"]').replace("' ]", '" ]').replace("{\n'", '{"').replace("{\'", '{"').replace("true", "True").replace("false", "False")
|
481
|
+
r = str(raw).strip().replace("{'", '{"').replace("{ '", '{"').replace("': '", '": "').replace("'}", '"}').replace("' }", '"}').replace("', '", '", "').replace("['", '["').replace("[ '", '[ "').replace("']", '"]').replace("' ]", '" ]').replace("{\n'", '{"').replace("{\'", '{"').replace("true", "True").replace("false", "False").replace('\"', "'")
|
482
482
|
j = json.dumps(eval(r))
|
483
483
|
output = json.loads(j)
|
484
484
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.1.
|
3
|
+
Version: 1.2.1.8
|
4
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
|
@@ -81,7 +81,7 @@ Requires-Dist: pygraphviz>=1.14; extra == "pygraphviz"
|
|
81
81
|
|
82
82
|
# Overview
|
83
83
|
|
84
|
-
[](https://clickpy.clickhouse.com/dashboard/versionhq)
|
85
85
|

|
86
86
|
[](https://github.com/versionHQ/multi-agent-system/actions/workflows/publish.yml)
|
87
87
|

|
@@ -93,11 +93,10 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
93
93
|
|
94
94
|
**Visit:**
|
95
95
|
|
96
|
-
- [
|
96
|
+
- [Playground](https://versi0n.io/playground)
|
97
97
|
- [Docs](https://docs.versi0n.io)
|
98
98
|
- [Github Repository](https://github.com/versionHQ/multi-agent-system)
|
99
|
-
- [
|
100
|
-
|
99
|
+
- [PyPI](https://pypi.org/project/versionhq/)
|
101
100
|
|
102
101
|
<hr />
|
103
102
|
|
@@ -181,11 +180,11 @@ node_c = task_graph.add_task(task=task_c)
|
|
181
180
|
|
182
181
|
task_graph.add_dependency(
|
183
182
|
node_a.identifier, node_b.identifier,
|
184
|
-
|
183
|
+
dependency_type=vhq.DependencyType.FINISH_TO_START, weight=5, description="B depends on A"
|
185
184
|
)
|
186
185
|
task_graph.add_dependency(
|
187
186
|
node_a.identifier, node_c.identifier,
|
188
|
-
|
187
|
+
dependency_type=vhq.DependencyType.FINISH_TO_FINISH, lag=1, required=False, weight=3
|
189
188
|
)
|
190
189
|
|
191
190
|
# To visualize the graph:
|
@@ -594,10 +593,4 @@ Common issues and solutions:
|
|
594
593
|
## Frequently Asked Questions (FAQ)
|
595
594
|
**Q. Where can I see if the agent is working?**
|
596
595
|
|
597
|
-
A. Visit [playground](https://versi0n.io).
|
598
|
-
|
599
|
-
|
600
|
-
**Q. How do you analyze the customer?**
|
601
|
-
|
602
|
-
A. We employ soft clustering for each customer.
|
603
|
-
<img width="200" src="https://res.cloudinary.com/dfeirxlea/image/upload/v1732732628/pj_m_agents/ito937s5d5x0so8isvw6.png">
|
596
|
+
A. Visit [playground](https://versi0n.io/playground).
|