versionhq 1.2.3.4__tar.gz → 1.2.3.6__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.3.4 → versionhq-1.2.3.6}/PKG-INFO +11 -12
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/README.md +7 -7
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/task-handling.md +1 -1
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/index.md +8 -8
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/pyproject.toml +6 -7
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/requirements.txt +3 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/__init__.py +1 -1
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/TEMPLATES/Backstory.py +1 -1
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/model.py +11 -5
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/model.py +14 -9
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/PKG-INFO +11 -12
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/requires.txt +3 -5
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/agent_test.py +4 -4
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/doc_test.py +1 -1
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/llm_connection_test.py +2 -2
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/llm_test.py +6 -2
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/uv.lock +29 -31
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.env.sample +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/deploy_docs.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/publish.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/run_tests.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.gitignore +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.pre-commit-config.yaml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.python-version +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/LICENSE +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/SECURITY.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/db/preprocess.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/CNAME +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/_logos/favicon.ico +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/_logos/logo192.png +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/config.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/index.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/config.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/form.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/index.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/ref.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/knowledge.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/llm/index.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/memory.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/rag-tool.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/evaluation.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/index.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/reference.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/response-field.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-execution.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-output.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-strc-response.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task-graph/index.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/tool.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/quickstart.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/stylesheets/main.css +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/tags.md +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/mkdocs.yml +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/requirements-dev.txt +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/runtime.txt +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/setup.cfg +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/llm_as_a_judge.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/logger.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/usage_metrics.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/vars.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/inhouse_agents.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/rpm_controller.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/formation.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/cli/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/customer/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/product/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/product/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/workflow/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/_utils.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/embedding.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/source.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/source_docling.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/storage.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/llm_vars.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/contextual_memory.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/base.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/mem0_storage.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/rag_storage.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/task_output_storage.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/utils.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/TEMPLATES/Description.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/evaluation.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/structured_response.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/colors.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/draft.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/cache_handler.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/composio_tool.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/composio_tool_vars.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/model.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/rag_tool.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/SOURCES.txt +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/_sample/sample.csv +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/_sample/sample.json +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/Prompts/Demo_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/agent_network_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/doc_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/cli/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/customer_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/product_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/workflow_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/conftest.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/doc_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/formation_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/knowledge_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/mock_report_compressed.pdf +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/memory/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/memory/memory_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_eval_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_taskoutput_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/eval_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/task_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/doc_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/task_graph_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/__init__.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/composio_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/doc_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/rag_tool_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/tool_test.py +0 -0
- {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/usecase_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.3.
|
3
|
+
Version: 1.2.3.6
|
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
|
@@ -68,6 +68,9 @@ Requires-Dist: composio-core==0.7.0
|
|
68
68
|
Requires-Dist: networkx>=3.4.2
|
69
69
|
Requires-Dist: matplotlib>=3.10.0
|
70
70
|
Requires-Dist: boto3>=1.37.1
|
71
|
+
Requires-Dist: scikit-learn>=1.6.1
|
72
|
+
Requires-Dist: numpy>=1.26.4
|
73
|
+
Requires-Dist: pandas>=2.2.3
|
71
74
|
Provides-Extra: docling
|
72
75
|
Requires-Dist: docling>=2.25.2; extra == "docling"
|
73
76
|
Provides-Extra: mem0ai
|
@@ -82,10 +85,6 @@ Requires-Dist: sec-api>=1.0.28; extra == "tools"
|
|
82
85
|
Provides-Extra: torch
|
83
86
|
Requires-Dist: torch>=2.6.0; extra == "torch"
|
84
87
|
Requires-Dist: torchvision>=0.21.0; extra == "torch"
|
85
|
-
Provides-Extra: evals
|
86
|
-
Requires-Dist: scikit-learn>=1.6.1; extra == "evals"
|
87
|
-
Requires-Dist: numpy>=1.26.4; extra == "evals"
|
88
|
-
Requires-Dist: pandas>=2.2.3; extra == "evals"
|
89
88
|
|
90
89
|
# Overview
|
91
90
|
|
@@ -143,9 +142,9 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
143
142
|
|
144
143
|
## Key Features
|
145
144
|
|
146
|
-
`versionhq` is a Python framework for
|
145
|
+
`versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
|
147
146
|
|
148
|
-
|
147
|
+
Users can either configure their agents and network manually or allow the system to automatically manage the process based on provided task goals.
|
149
148
|
|
150
149
|
|
151
150
|
### Agent Network
|
@@ -172,7 +171,7 @@ Each node is triggered by specific events and executed by an assigned agent once
|
|
172
171
|
While the network automatically reconfigures itself, you retain the ability to direct the agents using `should_reform` variable.
|
173
172
|
|
174
173
|
|
175
|
-
The following code snippet demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
174
|
+
The following code snippet explicitly demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
176
175
|
|
177
176
|
```python
|
178
177
|
import versionhq as vhq
|
@@ -214,15 +213,13 @@ A `TaskGraph` represents tasks as `nodes` and their execution dependencies as `e
|
|
214
213
|
|
215
214
|
`Agent Networks` can handle `TaskGraph` objects by optimizing their formations.
|
216
215
|
|
217
|
-
The following example demonstrates a simple concept of a `supervising` agent network handling a task graph with three tasks and one critical edge.
|
218
|
-
|
219
216
|
<img src="https://res.cloudinary.com/dfeirxlea/image/upload/v1739337639/pj_m_home/zfg4ccw1m1ww1tpnb0pa.png">
|
220
217
|
|
221
218
|
<hr />
|
222
219
|
|
223
220
|
### Optimization
|
224
221
|
|
225
|
-
|
222
|
+
Autonomous agents are model-agnostic and can leverage their own and their peers' knowledge sources, memories, and tools.
|
226
223
|
|
227
224
|
Agents are optimized during network formation, but customization is possible before or after.
|
228
225
|
|
@@ -581,7 +578,9 @@ Common issues and solutions:
|
|
581
578
|
|
582
579
|
* Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
583
580
|
|
584
|
-
* Issues related to
|
581
|
+
* Issues related to `torch` installation: Add optional dependencies by `uv add versionhq[torch]`.
|
582
|
+
|
583
|
+
* Issues related to agents and other systems: Check `.logs` directory located at the root of the project directory for error messages and stack traces.
|
585
584
|
|
586
585
|
* Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
587
586
|
|
@@ -54,9 +54,9 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
54
54
|
|
55
55
|
## Key Features
|
56
56
|
|
57
|
-
`versionhq` is a Python framework for
|
57
|
+
`versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
|
58
58
|
|
59
|
-
|
59
|
+
Users can either configure their agents and network manually or allow the system to automatically manage the process based on provided task goals.
|
60
60
|
|
61
61
|
|
62
62
|
### Agent Network
|
@@ -83,7 +83,7 @@ Each node is triggered by specific events and executed by an assigned agent once
|
|
83
83
|
While the network automatically reconfigures itself, you retain the ability to direct the agents using `should_reform` variable.
|
84
84
|
|
85
85
|
|
86
|
-
The following code snippet demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
86
|
+
The following code snippet explicitly demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
87
87
|
|
88
88
|
```python
|
89
89
|
import versionhq as vhq
|
@@ -125,15 +125,13 @@ A `TaskGraph` represents tasks as `nodes` and their execution dependencies as `e
|
|
125
125
|
|
126
126
|
`Agent Networks` can handle `TaskGraph` objects by optimizing their formations.
|
127
127
|
|
128
|
-
The following example demonstrates a simple concept of a `supervising` agent network handling a task graph with three tasks and one critical edge.
|
129
|
-
|
130
128
|
<img src="https://res.cloudinary.com/dfeirxlea/image/upload/v1739337639/pj_m_home/zfg4ccw1m1ww1tpnb0pa.png">
|
131
129
|
|
132
130
|
<hr />
|
133
131
|
|
134
132
|
### Optimization
|
135
133
|
|
136
|
-
|
134
|
+
Autonomous agents are model-agnostic and can leverage their own and their peers' knowledge sources, memories, and tools.
|
137
135
|
|
138
136
|
Agents are optimized during network formation, but customization is possible before or after.
|
139
137
|
|
@@ -492,7 +490,9 @@ Common issues and solutions:
|
|
492
490
|
|
493
491
|
* Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
494
492
|
|
495
|
-
* Issues related to
|
493
|
+
* Issues related to `torch` installation: Add optional dependencies by `uv add versionhq[torch]`.
|
494
|
+
|
495
|
+
* Issues related to agents and other systems: Check `.logs` directory located at the root of the project directory for error messages and stack traces.
|
496
496
|
|
497
497
|
* Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
498
498
|
|
@@ -25,7 +25,7 @@ agent = vhq.Agent(
|
|
25
25
|
goal="Coping with price competition in saturated markets"
|
26
26
|
)
|
27
27
|
|
28
|
-
assert agent.backstory == "You are an expert marketing analyst with relevant
|
28
|
+
assert agent.backstory == "You are an expert marketing analyst with relevant skills and abilities to query relevant information from the given knowledge sources. Leveraging these, you will identify competitive solutions to achieve the following goal: coping with price competition in saturated markets."
|
29
29
|
```
|
30
30
|
|
31
31
|
You can also specify your own backstory by simply adding the value to the backstory field of the Agent model:
|
@@ -23,9 +23,9 @@ A Python framework for agentic orchestration that handles complex task automatio
|
|
23
23
|
|
24
24
|
## Key Features
|
25
25
|
|
26
|
-
`versionhq` is a Python framework for
|
26
|
+
`versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
|
27
27
|
|
28
|
-
|
28
|
+
Users can either configure their agents and network manually or allow the system to automatically manage the process based on provided task goals.
|
29
29
|
|
30
30
|
|
31
31
|
### Agent Network
|
@@ -51,8 +51,7 @@ Each node is triggered by specific events and executed by an assigned agent once
|
|
51
51
|
|
52
52
|
While the network automatically reconfigures itself, you retain the ability to direct the agents using `should_reform` variable.
|
53
53
|
|
54
|
-
|
55
|
-
The following code snippet demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
54
|
+
The following code snippet explicitly demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
56
55
|
|
57
56
|
```python
|
58
57
|
import versionhq as vhq
|
@@ -94,8 +93,6 @@ A `TaskGraph` represents tasks as `nodes` and their execution dependencies as `e
|
|
94
93
|
|
95
94
|
`Agent Networks` can handle `TaskGraph` objects by optimizing their formations.
|
96
95
|
|
97
|
-
The following example demonstrates a simple concept of a `supervising` agent network handling a task graph with three tasks and one critical edge.
|
98
|
-
|
99
96
|
<img src="https://res.cloudinary.com/dfeirxlea/image/upload/v1739337639/pj_m_home/zfg4ccw1m1ww1tpnb0pa.png">
|
100
97
|
|
101
98
|
* Ref: <a href="/core/task-graph">TaskGraph</a> class
|
@@ -104,7 +101,7 @@ The following example demonstrates a simple concept of a `supervising` agent net
|
|
104
101
|
|
105
102
|
### Optimization
|
106
103
|
|
107
|
-
|
104
|
+
Autonomous agents are model-agnostic and can leverage their own and their peers' knowledge sources, memories, and tools.
|
108
105
|
|
109
106
|
Agents are optimized during network formation, but customization is possible before or after.
|
110
107
|
|
@@ -239,12 +236,15 @@ Common issues and solutions:
|
|
239
236
|
|
240
237
|
* Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
241
238
|
|
242
|
-
* Issues related to
|
239
|
+
* Issues related to `torch` installation: Add optional dependencies by `uv add versionhq[torch]`.
|
240
|
+
|
241
|
+
* Issues related to agents and other systems: Check `.logs` directory located at the root of the project directory for error messages and stack traces.
|
243
242
|
|
244
243
|
* Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
245
244
|
|
246
245
|
* `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.
|
247
246
|
|
247
|
+
|
248
248
|
<hr />
|
249
249
|
|
250
250
|
## FAQ
|
@@ -15,7 +15,7 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.2.3.
|
18
|
+
version = "1.2.3.6"
|
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"
|
@@ -46,7 +46,10 @@ dependencies = [
|
|
46
46
|
"composio-core==0.7.0",
|
47
47
|
"networkx>=3.4.2",
|
48
48
|
"matplotlib>=3.10.0",
|
49
|
-
"boto3>=1.37.1"
|
49
|
+
"boto3>=1.37.1",
|
50
|
+
"scikit-learn>=1.6.1",
|
51
|
+
"numpy>=1.26.4",
|
52
|
+
"pandas>=2.2.3",
|
50
53
|
]
|
51
54
|
classifiers = [
|
52
55
|
"Programming Language :: Python",
|
@@ -89,11 +92,7 @@ torch = [
|
|
89
92
|
"torch>=2.6.0",
|
90
93
|
"torchvision>=0.21.0",
|
91
94
|
]
|
92
|
-
|
93
|
-
"scikit-learn>=1.6.1",
|
94
|
-
"numpy>=1.26.4",
|
95
|
-
"pandas>=2.2.3",
|
96
|
-
]
|
95
|
+
|
97
96
|
|
98
97
|
[tool.uv]
|
99
98
|
dev-dependencies = [
|
@@ -1,4 +1,4 @@
|
|
1
1
|
BACKSTORY_FULL="""You are an expert {role} highly skilled in {skills}. You have abilities to query relevant information from the given knowledge sources and use tools such as {tools}. Leveraging these, you will identify competitive solutions to achieve the following goal: {goal}."""
|
2
2
|
|
3
3
|
|
4
|
-
BACKSTORY_SHORT="""You are an expert {role} with relevant
|
4
|
+
BACKSTORY_SHORT="""You are an expert {role} with relevant skills and abilities to query relevant information from the given knowledge sources. Leveraging these, you will identify competitive solutions to achieve the following goal: {goal}."""
|
@@ -32,13 +32,15 @@ class Agent(BaseModel):
|
|
32
32
|
_request_within_rpm_limit: Any = PrivateAttr(default=None)
|
33
33
|
_times_executed: int = PrivateAttr(default=0)
|
34
34
|
_logger_config: Dict[str, Any] = PrivateAttr(default=dict(verbose=True, info_file_save=True))
|
35
|
+
|
36
|
+
api_key: Optional[str] = Field(default=None)
|
35
37
|
config: Optional[Dict[str, Any]] = Field(default=None, exclude=True, description="values to add to the Agent class")
|
36
38
|
|
37
39
|
id: UUID4 = Field(default_factory=uuid.uuid4, frozen=True)
|
38
40
|
role: str = Field(description="required. agent's role")
|
39
41
|
goal: Optional[str] = Field(default=None)
|
40
42
|
backstory: Optional[str] = Field(default=None, description="developer prompt to the llm")
|
41
|
-
|
43
|
+
skills: Optional[List[str]] = Field(default_factory=list, description="list up the agent's tangible skills in natural language")
|
42
44
|
tools: Optional[List[Any]] = Field(default_factory=list)
|
43
45
|
|
44
46
|
# knowledge
|
@@ -149,8 +151,12 @@ class Agent(BaseModel):
|
|
149
151
|
setattr(tool, k, v)
|
150
152
|
tool_list.append(tool)
|
151
153
|
|
154
|
+
case callable():
|
155
|
+
tool = Tool(func=item)
|
156
|
+
tool_list.append(tool)
|
157
|
+
|
152
158
|
case _:
|
153
|
-
if item.__base__ == BaseTool or item.__base__ == RagTool or item.__base__ == Tool:
|
159
|
+
if hasattr(item, "__base__") and (item.__base__ == BaseTool or item.__base__ == RagTool or item.__base__ == Tool):
|
154
160
|
tool_list.append(item)
|
155
161
|
else:
|
156
162
|
Logger(**self._logger_config, filename=self.key).log(level="error", message=f"Tool {str(item)} is missing a function.", color="red")
|
@@ -169,12 +175,12 @@ class Agent(BaseModel):
|
|
169
175
|
if self.backstory is None:
|
170
176
|
from versionhq.agent.TEMPLATES.Backstory import BACKSTORY_FULL, BACKSTORY_SHORT
|
171
177
|
backstory = ""
|
172
|
-
skills = ", ".join([item for item in self.
|
178
|
+
skills = ", ".join([item for item in self.skills]) if self.skills else ""
|
173
179
|
tools = ", ".join([item.name for item in self.tools if hasattr(item, "name") and item.name is not None]) if self.tools else ""
|
174
180
|
role = self.role.lower()
|
175
181
|
goal = self.goal.lower() if self.goal else ""
|
176
182
|
|
177
|
-
if self.tools or self.
|
183
|
+
if self.tools or self.skills:
|
178
184
|
backstory = BACKSTORY_FULL.format(role=role, goal=goal, skills=skills, tools=tools)
|
179
185
|
else:
|
180
186
|
backstory = BACKSTORY_SHORT.format(role=role, goal=goal)
|
@@ -371,7 +377,7 @@ class Agent(BaseModel):
|
|
371
377
|
messages = []
|
372
378
|
messages.append({ "role": "user", "content": prompts })
|
373
379
|
if self.use_developer_prompt:
|
374
|
-
messages.append({ "role": "
|
380
|
+
messages.append({ "role": "developer", "content": self.backstory })
|
375
381
|
|
376
382
|
try:
|
377
383
|
if self._rpm_controller and self.max_rpm:
|
@@ -8,8 +8,7 @@ from contextlib import contextmanager
|
|
8
8
|
from typing import Any, Dict, List, Optional
|
9
9
|
from typing_extensions import Self
|
10
10
|
|
11
|
-
import
|
12
|
-
from litellm import JSONSchemaValidationError
|
11
|
+
from litellm import JSONSchemaValidationError, get_supported_openai_params
|
13
12
|
from pydantic import BaseModel, Field, PrivateAttr, model_validator, ConfigDict
|
14
13
|
|
15
14
|
from versionhq.llm.llm_vars import LLM_CONTEXT_WINDOW_SIZES, MODELS, PARAMS, PROVIDERS, ENDPOINT_PROVIDERS, ENV_VARS
|
@@ -48,6 +47,7 @@ class FilteredStream:
|
|
48
47
|
@contextmanager
|
49
48
|
def suppress_warnings():
|
50
49
|
with warnings.catch_warnings():
|
50
|
+
import litellm
|
51
51
|
litellm.set_verbose = False
|
52
52
|
warnings.filterwarnings(action="ignore")
|
53
53
|
old_stdout = sys.stdout
|
@@ -94,8 +94,6 @@ class LLM(BaseModel):
|
|
94
94
|
|
95
95
|
model_config = ConfigDict(extra="allow")
|
96
96
|
|
97
|
-
litellm.drop_params = True
|
98
|
-
litellm.set_verbose = True
|
99
97
|
os.environ['LITELLM_LOG'] = 'DEBUG'
|
100
98
|
|
101
99
|
|
@@ -104,6 +102,8 @@ class LLM(BaseModel):
|
|
104
102
|
"""
|
105
103
|
Validate the given model, provider, interface provider.
|
106
104
|
"""
|
105
|
+
import litellm
|
106
|
+
litellm.drop_params = True
|
107
107
|
|
108
108
|
self._init_model_name = self.model
|
109
109
|
|
@@ -180,6 +180,9 @@ class LLM(BaseModel):
|
|
180
180
|
"""
|
181
181
|
Set up valid config params after setting up a valid model, provider, interface provider names.
|
182
182
|
"""
|
183
|
+
import litellm
|
184
|
+
litellm.drop_params = True
|
185
|
+
|
183
186
|
self._tokens = 0
|
184
187
|
|
185
188
|
if self.callbacks:
|
@@ -202,11 +205,10 @@ class LLM(BaseModel):
|
|
202
205
|
"""
|
203
206
|
Returns valid params incl. model + litellm original params) from the given config dict.
|
204
207
|
"""
|
205
|
-
|
206
208
|
valid_config, valid_keys = dict(), list()
|
207
209
|
|
208
210
|
if self.model:
|
209
|
-
valid_keys =
|
211
|
+
valid_keys = get_supported_openai_params(
|
210
212
|
model=self.model, custom_llm_provider=self.endpoint_provider, request_type="chat_completion"
|
211
213
|
)
|
212
214
|
|
@@ -257,7 +259,7 @@ class LLM(BaseModel):
|
|
257
259
|
def _supports_function_calling(self) -> bool:
|
258
260
|
try:
|
259
261
|
if self.model:
|
260
|
-
params =
|
262
|
+
params = get_supported_openai_params(model=self.model)
|
261
263
|
return "response_format" in params if params else False
|
262
264
|
else:
|
263
265
|
return False
|
@@ -267,7 +269,8 @@ class LLM(BaseModel):
|
|
267
269
|
|
268
270
|
|
269
271
|
def _supports_stop_words(self) -> bool:
|
270
|
-
|
272
|
+
import litellm
|
273
|
+
supported_params = get_supported_openai_params(model=self.model, custom_llm_provider=self.endpoint_provider)
|
271
274
|
return "stop" in supported_params if supported_params else False
|
272
275
|
|
273
276
|
|
@@ -279,6 +282,7 @@ class LLM(BaseModel):
|
|
279
282
|
|
280
283
|
|
281
284
|
def _set_callbacks(self, callbacks: List[Any]):
|
285
|
+
import litellm
|
282
286
|
callback_types = [type(callback) for callback in callbacks]
|
283
287
|
for callback in litellm.success_callback[:]:
|
284
288
|
if type(callback) in callback_types:
|
@@ -302,8 +306,9 @@ class LLM(BaseModel):
|
|
302
306
|
"""
|
303
307
|
Execute LLM based on the agent's params and model params.
|
304
308
|
"""
|
305
|
-
|
309
|
+
import litellm
|
306
310
|
litellm.drop_params = True
|
311
|
+
litellm.set_verbose = True
|
307
312
|
|
308
313
|
with suppress_warnings():
|
309
314
|
if len(self.callbacks) > 0:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.3.
|
3
|
+
Version: 1.2.3.6
|
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
|
@@ -68,6 +68,9 @@ Requires-Dist: composio-core==0.7.0
|
|
68
68
|
Requires-Dist: networkx>=3.4.2
|
69
69
|
Requires-Dist: matplotlib>=3.10.0
|
70
70
|
Requires-Dist: boto3>=1.37.1
|
71
|
+
Requires-Dist: scikit-learn>=1.6.1
|
72
|
+
Requires-Dist: numpy>=1.26.4
|
73
|
+
Requires-Dist: pandas>=2.2.3
|
71
74
|
Provides-Extra: docling
|
72
75
|
Requires-Dist: docling>=2.25.2; extra == "docling"
|
73
76
|
Provides-Extra: mem0ai
|
@@ -82,10 +85,6 @@ Requires-Dist: sec-api>=1.0.28; extra == "tools"
|
|
82
85
|
Provides-Extra: torch
|
83
86
|
Requires-Dist: torch>=2.6.0; extra == "torch"
|
84
87
|
Requires-Dist: torchvision>=0.21.0; extra == "torch"
|
85
|
-
Provides-Extra: evals
|
86
|
-
Requires-Dist: scikit-learn>=1.6.1; extra == "evals"
|
87
|
-
Requires-Dist: numpy>=1.26.4; extra == "evals"
|
88
|
-
Requires-Dist: pandas>=2.2.3; extra == "evals"
|
89
88
|
|
90
89
|
# Overview
|
91
90
|
|
@@ -143,9 +142,9 @@ Agentic orchestration framework for multi-agent networks and task graphs for com
|
|
143
142
|
|
144
143
|
## Key Features
|
145
144
|
|
146
|
-
`versionhq` is a Python framework for
|
145
|
+
`versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
|
147
146
|
|
148
|
-
|
147
|
+
Users can either configure their agents and network manually or allow the system to automatically manage the process based on provided task goals.
|
149
148
|
|
150
149
|
|
151
150
|
### Agent Network
|
@@ -172,7 +171,7 @@ Each node is triggered by specific events and executed by an assigned agent once
|
|
172
171
|
While the network automatically reconfigures itself, you retain the ability to direct the agents using `should_reform` variable.
|
173
172
|
|
174
173
|
|
175
|
-
The following code snippet demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
174
|
+
The following code snippet explicitly demonstrates the `TaskGraph` and its visualization, saving the diagram to the `uploads` directory.
|
176
175
|
|
177
176
|
```python
|
178
177
|
import versionhq as vhq
|
@@ -214,15 +213,13 @@ A `TaskGraph` represents tasks as `nodes` and their execution dependencies as `e
|
|
214
213
|
|
215
214
|
`Agent Networks` can handle `TaskGraph` objects by optimizing their formations.
|
216
215
|
|
217
|
-
The following example demonstrates a simple concept of a `supervising` agent network handling a task graph with three tasks and one critical edge.
|
218
|
-
|
219
216
|
<img src="https://res.cloudinary.com/dfeirxlea/image/upload/v1739337639/pj_m_home/zfg4ccw1m1ww1tpnb0pa.png">
|
220
217
|
|
221
218
|
<hr />
|
222
219
|
|
223
220
|
### Optimization
|
224
221
|
|
225
|
-
|
222
|
+
Autonomous agents are model-agnostic and can leverage their own and their peers' knowledge sources, memories, and tools.
|
226
223
|
|
227
224
|
Agents are optimized during network formation, but customization is possible before or after.
|
228
225
|
|
@@ -581,7 +578,9 @@ Common issues and solutions:
|
|
581
578
|
|
582
579
|
* Issues related to dependencies: `rm -rf uv.lock`, `uv cache clean`, `uv venv`, and run `uv pip install -r requirements.txt -v`.
|
583
580
|
|
584
|
-
* Issues related to
|
581
|
+
* Issues related to `torch` installation: Add optional dependencies by `uv add versionhq[torch]`.
|
582
|
+
|
583
|
+
* Issues related to agents and other systems: Check `.logs` directory located at the root of the project directory for error messages and stack traces.
|
585
584
|
|
586
585
|
* Issues related to `Python quit unexpectedly`: Check [this stackoverflow article](https://stackoverflow.com/questions/59888499/macos-catalina-python-quit-unexpectedly-error).
|
587
586
|
|
@@ -22,15 +22,13 @@ composio-core==0.7.0
|
|
22
22
|
networkx>=3.4.2
|
23
23
|
matplotlib>=3.10.0
|
24
24
|
boto3>=1.37.1
|
25
|
-
|
26
|
-
[docling]
|
27
|
-
docling>=2.25.2
|
28
|
-
|
29
|
-
[evals]
|
30
25
|
scikit-learn>=1.6.1
|
31
26
|
numpy>=1.26.4
|
32
27
|
pandas>=2.2.3
|
33
28
|
|
29
|
+
[docling]
|
30
|
+
docling>=2.25.2
|
31
|
+
|
34
32
|
[mem0ai]
|
35
33
|
mem0ai>=0.1.55
|
36
34
|
|
@@ -56,11 +56,11 @@ def test_build_agent():
|
|
56
56
|
agent = Agent(
|
57
57
|
role="analyst",
|
58
58
|
goal="analyze the company's website and retrieve the product overview",
|
59
|
-
|
59
|
+
skills=["financial analysis", "product management", ]
|
60
60
|
)
|
61
61
|
|
62
62
|
assert agent.role == "analyst"
|
63
|
-
assert agent.backstory == BACKSTORY_FULL.format(role=agent.role.lower(), goal=agent.goal.lower(), skills=", ".join([item for item in agent.
|
63
|
+
assert agent.backstory == BACKSTORY_FULL.format(role=agent.role.lower(), goal=agent.goal.lower(), skills=", ".join([item for item in agent.skills]), tools="")
|
64
64
|
assert isinstance(agent.llm, LLM)
|
65
65
|
assert agent.llm.model == DEFAULT_MODEL_NAME
|
66
66
|
# assert agent.llm.api_key == LITELLM_API_KEY
|
@@ -72,14 +72,14 @@ def test_build_agent_with_llm():
|
|
72
72
|
agent = Agent(
|
73
73
|
role="analyst",
|
74
74
|
goal="analyze the company's website and retrieve the product overview",
|
75
|
-
|
75
|
+
skills=["financial analysis", "product management", ],
|
76
76
|
llm="gpt-4o"
|
77
77
|
)
|
78
78
|
|
79
79
|
assert agent.role == "analyst"
|
80
80
|
assert agent.role in agent.backstory
|
81
81
|
assert agent.goal in agent.backstory
|
82
|
-
assert [item in agent.backstory for item in agent.
|
82
|
+
assert [item in agent.backstory for item in agent.skills]
|
83
83
|
assert isinstance(agent.llm, LLM)
|
84
84
|
assert agent.llm.model == "gpt-4o"
|
85
85
|
# assert agent.llm.api_key == LITELLM_API_KEY
|
@@ -62,7 +62,7 @@ def test_docs_core_agent_c1():
|
|
62
62
|
goal="Coping with price competition in saturated markets"
|
63
63
|
)
|
64
64
|
|
65
|
-
assert agent.backstory == "You are an expert marketing analyst with relevant
|
65
|
+
assert agent.backstory == "You are an expert marketing analyst with relevant skills and abilities to query relevant information from the given knowledge sources. Leveraging these, you will identify competitive solutions to achieve the following goal: coping with price competition in saturated markets."
|
66
66
|
|
67
67
|
|
68
68
|
def test_docs_core_agent_c2():
|
@@ -37,7 +37,7 @@ def res_field_task():
|
|
37
37
|
return Task(description="return random values strictly following the given response format.", response_fields=demo_response_fields)
|
38
38
|
|
39
39
|
|
40
|
-
def
|
40
|
+
def _test_con_bedrock(simple_task, tool_task, schema_task, res_field_task):
|
41
41
|
llms_to_test = [
|
42
42
|
"bedrock/converse/us.meta.llama3-3-70b-instruct-v1:0",
|
43
43
|
"bedrock/us.meta.llama3-2-11b-instruct-v1:0",
|
@@ -67,7 +67,7 @@ def test_con_bedrock(simple_task, tool_task, schema_task, res_field_task):
|
|
67
67
|
assert [v and type(v) == res_field_task.response_fields[i].data_type for i, (k, v) in enumerate(res_4.json_dict.items())]
|
68
68
|
|
69
69
|
|
70
|
-
def
|
70
|
+
def _test_con_gpt(simple_task, tool_task, schema_task, res_field_task):
|
71
71
|
llms_to_test = [
|
72
72
|
"gpt-4.5-preview-2025-02-27",
|
73
73
|
]
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import litellm
|
2
|
-
|
3
1
|
from versionhq.llm.llm_vars import MODELS, LLM_CONTEXT_WINDOW_SIZES
|
4
2
|
from versionhq.llm.model import LLM, DEFAULT_CONTEXT_WINDOW_SIZE
|
5
3
|
|
@@ -23,6 +21,8 @@ def test_create_llm_from_valid_name():
|
|
23
21
|
assert llm.context_window_size == int(LLM_CONTEXT_WINDOW_SIZES.get(model_name) *0.75) if LLM_CONTEXT_WINDOW_SIZES.get(model_name) is not None else DEFAULT_CONTEXT_WINDOW_SIZE
|
24
22
|
assert llm._supports_function_calling() is not None
|
25
23
|
assert llm._supports_stop_words() is not None
|
24
|
+
|
25
|
+
import litellm
|
26
26
|
assert litellm.callbacks == [dummy_func,]
|
27
27
|
|
28
28
|
|
@@ -38,6 +38,8 @@ def test_create_llm_from_invalid_name():
|
|
38
38
|
assert llm.context_window_size == int(128000 * 0.75)
|
39
39
|
assert llm._supports_function_calling() == True
|
40
40
|
assert llm._supports_stop_words() == True
|
41
|
+
|
42
|
+
import litellm
|
41
43
|
assert litellm.callbacks == [dummy_func,]
|
42
44
|
|
43
45
|
|
@@ -49,6 +51,8 @@ def test_create_llm_from_provider():
|
|
49
51
|
assert llm.context_window_size == int(LLM_CONTEXT_WINDOW_SIZES.get(llm.model) *0.75)
|
50
52
|
assert llm._supports_function_calling() == True
|
51
53
|
assert llm._supports_stop_words() == True
|
54
|
+
|
55
|
+
import litellm
|
52
56
|
assert litellm.callbacks == [dummy_func,]
|
53
57
|
|
54
58
|
|