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.
Files changed (157) hide show
  1. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/PKG-INFO +11 -12
  2. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/README.md +7 -7
  3. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/task-handling.md +1 -1
  4. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/index.md +8 -8
  5. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/pyproject.toml +6 -7
  6. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/requirements.txt +3 -0
  7. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/__init__.py +1 -1
  8. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/TEMPLATES/Backstory.py +1 -1
  9. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/model.py +11 -5
  10. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/model.py +14 -9
  11. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/PKG-INFO +11 -12
  12. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/requires.txt +3 -5
  13. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/agent_test.py +4 -4
  14. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/doc_test.py +1 -1
  15. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/llm_connection_test.py +2 -2
  16. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/llm_test.py +6 -2
  17. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/uv.lock +29 -31
  18. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.env.sample +0 -0
  19. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/deploy_docs.yml +0 -0
  20. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/publish.yml +0 -0
  21. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/publish_testpypi.yml +0 -0
  22. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/run_tests.yml +0 -0
  23. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.github/workflows/security_check.yml +0 -0
  24. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.gitignore +0 -0
  25. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.pre-commit-config.yaml +0 -0
  26. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/.python-version +0 -0
  27. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/LICENSE +0 -0
  28. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/SECURITY.md +0 -0
  29. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/db/preprocess.py +0 -0
  30. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/CNAME +0 -0
  31. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/_logos/favicon.ico +0 -0
  32. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/_logos/logo192.png +0 -0
  33. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/config.md +0 -0
  34. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent/index.md +0 -0
  35. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/config.md +0 -0
  36. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/form.md +0 -0
  37. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/index.md +0 -0
  38. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/agent-network/ref.md +0 -0
  39. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/knowledge.md +0 -0
  40. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/llm/index.md +0 -0
  41. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/memory.md +0 -0
  42. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/rag-tool.md +0 -0
  43. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/evaluation.md +0 -0
  44. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/index.md +0 -0
  45. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/reference.md +0 -0
  46. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/response-field.md +0 -0
  47. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-execution.md +0 -0
  48. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-output.md +0 -0
  49. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task/task-strc-response.md +0 -0
  50. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/task-graph/index.md +0 -0
  51. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/core/tool.md +0 -0
  52. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/quickstart.md +0 -0
  53. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/stylesheets/main.css +0 -0
  54. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/docs/tags.md +0 -0
  55. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/mkdocs.yml +0 -0
  56. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/requirements-dev.txt +0 -0
  57. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/runtime.txt +0 -0
  58. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/setup.cfg +0 -0
  59. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/__init__.py +0 -0
  60. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/i18n.py +0 -0
  61. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/llm_as_a_judge.py +0 -0
  62. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/logger.py +0 -0
  63. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/process_config.py +0 -0
  64. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/usage_metrics.py +0 -0
  65. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/_utils/vars.py +0 -0
  66. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
  67. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/__init__.py +0 -0
  68. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/inhouse_agents.py +0 -0
  69. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/parser.py +0 -0
  70. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent/rpm_controller.py +0 -0
  71. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/__init__.py +0 -0
  72. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/formation.py +0 -0
  73. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/agent_network/model.py +0 -0
  74. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/cli/__init__.py +0 -0
  75. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/__init__.py +0 -0
  76. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/customer/__init__.py +0 -0
  77. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/customer/model.py +0 -0
  78. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/product/__init__.py +0 -0
  79. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/product/model.py +0 -0
  80. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/workflow/__init__.py +0 -0
  81. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/clients/workflow/model.py +0 -0
  82. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/__init__.py +0 -0
  83. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/_utils.py +0 -0
  84. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/embedding.py +0 -0
  85. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/model.py +0 -0
  86. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/source.py +0 -0
  87. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/source_docling.py +0 -0
  88. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/knowledge/storage.py +0 -0
  89. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/__init__.py +0 -0
  90. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/llm/llm_vars.py +0 -0
  91. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/__init__.py +0 -0
  92. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/contextual_memory.py +0 -0
  93. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/memory/model.py +0 -0
  94. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/__init__.py +0 -0
  95. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/base.py +0 -0
  96. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
  97. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/mem0_storage.py +0 -0
  98. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/rag_storage.py +0 -0
  99. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/task_output_storage.py +0 -0
  100. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/storage/utils.py +0 -0
  101. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/TEMPLATES/Description.py +0 -0
  102. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/__init__.py +0 -0
  103. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/evaluation.py +0 -0
  104. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/formatter.py +0 -0
  105. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/model.py +0 -0
  106. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task/structured_response.py +0 -0
  107. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/__init__.py +0 -0
  108. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/colors.py +0 -0
  109. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/draft.py +0 -0
  110. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/task_graph/model.py +0 -0
  111. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/__init__.py +0 -0
  112. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/cache_handler.py +0 -0
  113. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/composio_tool.py +0 -0
  114. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/composio_tool_vars.py +0 -0
  115. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/decorator.py +0 -0
  116. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/model.py +0 -0
  117. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/rag_tool.py +0 -0
  118. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq/tool/tool_handler.py +0 -0
  119. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/SOURCES.txt +0 -0
  120. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/dependency_links.txt +0 -0
  121. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/src/versionhq.egg-info/top_level.txt +0 -0
  122. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/__init__.py +0 -0
  123. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/_sample/sample.csv +0 -0
  124. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/_sample/sample.json +0 -0
  125. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent/__init__.py +0 -0
  126. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/Prompts/Demo_test.py +0 -0
  127. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/__init__.py +0 -0
  128. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/agent_network_test.py +0 -0
  129. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/agent_network/doc_test.py +0 -0
  130. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/cli/__init__.py +0 -0
  131. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/customer_test.py +0 -0
  132. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/product_test.py +0 -0
  133. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/clients/workflow_test.py +0 -0
  134. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/conftest.py +0 -0
  135. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/doc_test.py +0 -0
  136. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/formation_test.py +0 -0
  137. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/__init__.py +0 -0
  138. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/knowledge_test.py +0 -0
  139. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/knowledge/mock_report_compressed.pdf +0 -0
  140. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/llm/__init__.py +0 -0
  141. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/memory/__init__.py +0 -0
  142. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/memory/memory_test.py +0 -0
  143. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/__init__.py +0 -0
  144. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_eval_test.py +0 -0
  145. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_taskoutput_test.py +0 -0
  146. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/doc_test.py +0 -0
  147. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/eval_test.py +0 -0
  148. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task/task_test.py +0 -0
  149. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/__init__.py +0 -0
  150. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/doc_test.py +0 -0
  151. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/task_graph/task_graph_test.py +0 -0
  152. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/__init__.py +0 -0
  153. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/composio_test.py +0 -0
  154. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/doc_test.py +0 -0
  155. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/rag_tool_test.py +0 -0
  156. {versionhq-1.2.3.4 → versionhq-1.2.3.6}/tests/tool/tool_test.py +0 -0
  157. {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.4
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 agent networks that handle complex task automation without human interaction.
145
+ `versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
147
146
 
148
- Agents are model-agnostic, and will improve task output, while optimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
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
- Agents are model-agnostic and can handle multiple tasks, leveraging their own and their peers' knowledge sources, memories, and tools.
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 agents and other systems: Check `.logs` directory located in the root directory for error messages and stack traces.
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 agent networks that handle complex task automation without human interaction.
57
+ `versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
58
58
 
59
- Agents are model-agnostic, and will improve task output, while optimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
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
- Agents are model-agnostic and can handle multiple tasks, leveraging their own and their peers' knowledge sources, memories, and tools.
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 agents and other systems: Check `.logs` directory located in the root directory for error messages and stack traces.
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 skillsets 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."
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 agent networks that handle complex task automation without human interaction.
26
+ `versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
27
27
 
28
- Agents are model-agnostic, and will improve task output, while optimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
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
- Agents are model-agnostic and can handle multiple tasks, leveraging their own and their peers' knowledge sources, memories, and tools.
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 agents and other systems: Check `.logs` directory located in the root directory for detailed error messages and stack traces.
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.4"
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
- evals = [
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 = [
@@ -22,3 +22,6 @@ composio-core==0.7.0
22
22
  networkx>=3.4.2
23
23
  matplotlib>=3.10.0
24
24
  boto3>=1.37.1
25
+ scikit-learn>=1.6.1
26
+ numpy>=1.26.4
27
+ pandas>=2.2.3
@@ -32,7 +32,7 @@ from versionhq.agent_network.formation import form_agent_network
32
32
  from versionhq.task_graph.draft import workflow
33
33
 
34
34
 
35
- __version__ = "1.2.3.4"
35
+ __version__ = "1.2.3.6"
36
36
  __all__ = [
37
37
  "Agent",
38
38
 
@@ -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 skillsets and abilities to query relevant information from the given knowledge sources. Leveraging these, you will identify competitive solutions to achieve the following goal: {goal}."""
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
- skillsets: Optional[List[str]] = Field(default_factory=list)
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.skillsets]) if self.skillsets else ""
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.skillsets:
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": "system", "content": self.backstory })
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 litellm
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 = litellm.get_supported_openai_params(
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 = litellm.get_supported_openai_params(model=self.model)
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
- supported_params = litellm.get_supported_openai_params(model=self.model, custom_llm_provider=self.endpoint_provider)
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.4
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 agent networks that handle complex task automation without human interaction.
145
+ `versionhq` is a Python framework designed for automating complex, multi-step tasks using autonomous agent networks.
147
146
 
148
- Agents are model-agnostic, and will improve task output, while optimizing token cost and job latency, by sharing their memory, knowledge base, and RAG tools with other agents in the network.
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
- Agents are model-agnostic and can handle multiple tasks, leveraging their own and their peers' knowledge sources, memories, and tools.
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 agents and other systems: Check `.logs` directory located in the root directory for error messages and stack traces.
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
- skillsets=["financial analysis", "product management", ]
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.skillsets]), tools="")
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
- skillsets=["financial analysis", "product management", ],
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.skillsets]
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 skillsets 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."
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 test_con_bedrock(simple_task, tool_task, schema_task, res_field_task):
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 test_con_gpt(simple_task, tool_task, schema_task, res_field_task):
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