versionhq 1.2.2.4__tar.gz → 1.2.2.5__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.2.4 → versionhq-1.2.2.5}/PKG-INFO +4 -7
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/README.md +3 -6
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent/index.md +1 -1
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/index.md +1 -4
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/quickstart.md +1 -1
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/pyproject.toml +1 -1
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/__init__.py +1 -1
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/inhouse_agents.py +1 -1
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/model.py +6 -6
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq.egg-info/PKG-INFO +4 -7
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent/agent_test.py +2 -5
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/doc_test.py +3 -3
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/usecase_test.py +1 -4
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/uv.lock +8 -7
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.env.sample +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.github/workflows/deploy_docs.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.github/workflows/publish.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.github/workflows/run_tests.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.gitignore +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.pre-commit-config.yaml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/.python-version +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/LICENSE +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/SECURITY.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/db/preprocess.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/CNAME +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/_logos/favicon.ico +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/_logos/logo192.png +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent/config.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent/task-handling.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent-network/config.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent-network/form.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent-network/index.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/agent-network/ref.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/llm/index.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/evaluation.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/index.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/response-field.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/task-execution.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/task-output.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/task-ref.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task/task-strc-response.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/task-graph/index.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/core/tool.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/stylesheets/main.css +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/docs/tags.md +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/mkdocs.yml +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/requirements-dev.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/requirements.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/runtime.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/setup.cfg +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/llm_as_a_judge.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/logger.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/usage_metrics.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/_utils/vars.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/TEMPLATES/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent/rpm_controller.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent_network/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent_network/formation.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/agent_network/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/cli/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/customer/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/product/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/product/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/workflow/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/_utils.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/embedding.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/source.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/source_docling.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/knowledge/storage.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/llm/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/llm/llm_vars.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/llm/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/memory/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/memory/contextual_memory.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/memory/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/base.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/ltm_sqlite_storage.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/mem0_storage.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/rag_storage.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/task_output_storage.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/storage/utils.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/TEMPLATES/Description.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/evaluation.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task/structured_response.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task_graph/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task_graph/colors.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task_graph/draft.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/task_graph/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/cache_handler.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/composio_tool.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/composio_tool_vars.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/model.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/rag_tool.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq.egg-info/SOURCES.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq.egg-info/requires.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent/doc_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent_network/Prompts/Demo_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent_network/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent_network/agent_network_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/agent_network/doc_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/cli/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/clients/customer_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/clients/product_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/clients/workflow_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/conftest.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/formation_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/knowledge/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/knowledge/knowledge_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/knowledge/mock_report_compressed.pdf +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/llm/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/llm/llm_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/memory/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/memory/memory_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/sample.json +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/doc_taskoutput_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/doc_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/eval_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/llm_connection_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task/task_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task_graph/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task_graph/doc_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/task_graph/task_graph_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/tool/__init__.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/tool/composio_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/tool/doc_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/tool/rag_tool_test.py +0 -0
- {versionhq-1.2.2.4 → versionhq-1.2.2.5}/tests/tool/tool_test.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.2.
|
3
|
+
Version: 1.2.2.5
|
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
|
@@ -227,10 +227,7 @@ The following code snippet demonstrates agent customization:
|
|
227
227
|
```python
|
228
228
|
import versionhq as vhq
|
229
229
|
|
230
|
-
agent = vhq.Agent(
|
231
|
-
role="Marketing Analyst",
|
232
|
-
goal="my amazing goal"
|
233
|
-
) # assuming this agent was created during the network formation
|
230
|
+
agent = vhq.Agent(role="Marketing Analyst")
|
234
231
|
|
235
232
|
# update the agent
|
236
233
|
agent.update(
|
@@ -321,8 +318,8 @@ To create an agent network with one or more manager agents, designate members us
|
|
321
318
|
```python
|
322
319
|
import versionhq as vhq
|
323
320
|
|
324
|
-
agent_a = vhq.Agent(role="agent a",
|
325
|
-
agent_b = vhq.Agent(role="agent b",
|
321
|
+
agent_a = vhq.Agent(role="agent a", llm="llm-of-your-choice")
|
322
|
+
agent_b = vhq.Agent(role="agent b", llm="llm-of-your-choice")
|
326
323
|
|
327
324
|
task_1 = vhq.Task(
|
328
325
|
description="Analyze the client's business model.",
|
@@ -141,10 +141,7 @@ The following code snippet demonstrates agent customization:
|
|
141
141
|
```python
|
142
142
|
import versionhq as vhq
|
143
143
|
|
144
|
-
agent = vhq.Agent(
|
145
|
-
role="Marketing Analyst",
|
146
|
-
goal="my amazing goal"
|
147
|
-
) # assuming this agent was created during the network formation
|
144
|
+
agent = vhq.Agent(role="Marketing Analyst")
|
148
145
|
|
149
146
|
# update the agent
|
150
147
|
agent.update(
|
@@ -235,8 +232,8 @@ To create an agent network with one or more manager agents, designate members us
|
|
235
232
|
```python
|
236
233
|
import versionhq as vhq
|
237
234
|
|
238
|
-
agent_a = vhq.Agent(role="agent a",
|
239
|
-
agent_b = vhq.Agent(role="agent b",
|
235
|
+
agent_a = vhq.Agent(role="agent a", llm="llm-of-your-choice")
|
236
|
+
agent_b = vhq.Agent(role="agent b", llm="llm-of-your-choice")
|
240
237
|
|
241
238
|
task_1 = vhq.Task(
|
242
239
|
description="Analyze the client's business model.",
|
@@ -7,7 +7,7 @@ tags:
|
|
7
7
|
|
8
8
|
<class>`class` versionhq.agent.model.<bold>Agent<bold></class>
|
9
9
|
|
10
|
-
A Pydantic class to store `Agent`
|
10
|
+
A Pydantic class to store an `Agent` object that handles `Task` execution.
|
11
11
|
|
12
12
|
|
13
13
|
## Quick Start
|
@@ -113,10 +113,7 @@ The following code snippet demonstrates agent customization:
|
|
113
113
|
```python
|
114
114
|
import versionhq as vhq
|
115
115
|
|
116
|
-
agent = vhq.Agent(
|
117
|
-
role="Marketing Analyst",
|
118
|
-
goal="my amazing goal"
|
119
|
-
) # assuming this agent was created during the network formation
|
116
|
+
agent = vhq.Agent(role="Marketing Analyst")
|
120
117
|
|
121
118
|
# update the agent
|
122
119
|
agent.update(
|
@@ -48,7 +48,7 @@ def dummy_func(message: str, test1: str, test2: list[str]) -> str:
|
|
48
48
|
return f"""{message}: {test1}, {", ".join(test2)}"""
|
49
49
|
|
50
50
|
|
51
|
-
agent = vhq.Agent(role="demo
|
51
|
+
agent = vhq.Agent(role="demo manager")
|
52
52
|
|
53
53
|
task = vhq.Task(
|
54
54
|
description="Amazing task",
|
@@ -15,7 +15,7 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.2.2.
|
18
|
+
version = "1.2.2.5"
|
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"
|
@@ -38,7 +38,7 @@ vhq_formation_planner = Agent(
|
|
38
38
|
"Solo is a formation where a single agent with tools, knowledge, and memory handles tasks indivudually. When self-learning mode is on - it will turn into Random formation. Typical usecase is an email agent drafts promo message for the given audience using their own knowledge.",
|
39
39
|
"Supervising is a formation where the leader agent gives directions, while sharing its knowledge and memory with subbordinates.Subordinates can be solo agents or networks. Typical usecase is that the leader agent strategizes an outbound campaign plan and assigns components such as media mix or message creation to subordinate agents.",
|
40
40
|
"Network is a formation where multple agents can share tasks, knowledge, and memory among network members without hierarchy. Typical usecase is that an email agent and social media agent share the product knowledge and deploy multi-channel outbound campaign. ",
|
41
|
-
"Random is a formation where a single agent handles tasks, asking help from other agents without sharing its memory or knowledge. Typical usecase is that an email agent drafts promo message for the given audience, asking insights on tones from other email agents which oversee other customer clusters, or an agent calls the external, third party agent to deploy the campaign.
|
41
|
+
"Random is a formation where a single agent handles tasks, asking help from other agents without sharing its memory or knowledge. Typical usecase is that an email agent drafts promo message for the given audience, asking insights on tones from other email agents which oversee other customer clusters, or an agent calls the external, third party agent to deploy the campaign.",
|
42
42
|
]
|
43
43
|
)
|
44
44
|
|
@@ -35,8 +35,8 @@ class Agent(BaseModel):
|
|
35
35
|
config: Optional[Dict[str, Any]] = Field(default=None, exclude=True, description="values to add to the Agent class")
|
36
36
|
|
37
37
|
id: UUID4 = Field(default_factory=uuid.uuid4, frozen=True)
|
38
|
-
role: str = Field(description="
|
39
|
-
goal: str = Field(
|
38
|
+
role: str = Field(description="required. agent's role")
|
39
|
+
goal: Optional[str] = Field(default=None)
|
40
40
|
backstory: Optional[str] = Field(default=None, description="developer prompt to the llm")
|
41
41
|
skillsets: Optional[List[str]] = Field(default_factory=list)
|
42
42
|
tools: Optional[List[Any]] = Field(default_factory=list)
|
@@ -92,7 +92,7 @@ class Agent(BaseModel):
|
|
92
92
|
|
93
93
|
@model_validator(mode="after")
|
94
94
|
def validate_required_fields(self) -> Self:
|
95
|
-
required_fields = ["role",
|
95
|
+
required_fields = ["role",]
|
96
96
|
for field in required_fields:
|
97
97
|
if getattr(self, field) is None:
|
98
98
|
raise ValueError(f"{field} must be provided either directly or through config")
|
@@ -172,7 +172,7 @@ class Agent(BaseModel):
|
|
172
172
|
skills = ", ".join([item for item in self.skillsets]) if self.skillsets else ""
|
173
173
|
tools = ", ".join([item.name for item in self.tools if hasattr(item, "name") and item.name is not None]) if self.tools else ""
|
174
174
|
role = self.role.lower()
|
175
|
-
goal = self.goal.lower()
|
175
|
+
goal = self.goal.lower() if self.goal else ""
|
176
176
|
|
177
177
|
if self.tools or self.skillsets:
|
178
178
|
backstory = BACKSTORY_FULL.format(role=role, goal=goal, skills=skills, tools=tools)
|
@@ -494,7 +494,7 @@ class Agent(BaseModel):
|
|
494
494
|
Defines and executes a task when it is not given and returns TaskOutput object.
|
495
495
|
"""
|
496
496
|
|
497
|
-
if not self.
|
497
|
+
if not self.role or not self.goal:
|
498
498
|
return None
|
499
499
|
|
500
500
|
from versionhq.task.model import Task
|
@@ -595,7 +595,7 @@ class Agent(BaseModel):
|
|
595
595
|
|
596
596
|
|
597
597
|
def __repr__(self):
|
598
|
-
return f"Agent(role={self.role},
|
598
|
+
return f"Agent(role={self.role}, id={str(self.id)}"
|
599
599
|
|
600
600
|
def __str__(self):
|
601
601
|
return super().__str__()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.2.2.
|
3
|
+
Version: 1.2.2.5
|
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
|
@@ -227,10 +227,7 @@ The following code snippet demonstrates agent customization:
|
|
227
227
|
```python
|
228
228
|
import versionhq as vhq
|
229
229
|
|
230
|
-
agent = vhq.Agent(
|
231
|
-
role="Marketing Analyst",
|
232
|
-
goal="my amazing goal"
|
233
|
-
) # assuming this agent was created during the network formation
|
230
|
+
agent = vhq.Agent(role="Marketing Analyst")
|
234
231
|
|
235
232
|
# update the agent
|
236
233
|
agent.update(
|
@@ -321,8 +318,8 @@ To create an agent network with one or more manager agents, designate members us
|
|
321
318
|
```python
|
322
319
|
import versionhq as vhq
|
323
320
|
|
324
|
-
agent_a = vhq.Agent(role="agent a",
|
325
|
-
agent_b = vhq.Agent(role="agent b",
|
321
|
+
agent_a = vhq.Agent(role="agent a", llm="llm-of-your-choice")
|
322
|
+
agent_b = vhq.Agent(role="agent b", llm="llm-of-your-choice")
|
326
323
|
|
327
324
|
task_1 = vhq.Task(
|
328
325
|
description="Analyze the client's business model.",
|
@@ -13,13 +13,10 @@ LITELLM_API_KEY = os.environ.get("LITELLM_API_KEY")
|
|
13
13
|
|
14
14
|
|
15
15
|
def test_build_agent_with_minimal_input():
|
16
|
-
agent = Agent(
|
17
|
-
role="analyst",
|
18
|
-
goal="analyze the company's website and retrieve the product overview"
|
19
|
-
)
|
16
|
+
agent = Agent(role="analyst")
|
20
17
|
|
21
18
|
assert agent.role == "analyst"
|
22
|
-
assert agent.backstory == BACKSTORY_SHORT.format(role=agent.role.lower(), goal=
|
19
|
+
assert agent.backstory == BACKSTORY_SHORT.format(role=agent.role.lower(), goal="")
|
23
20
|
assert isinstance(agent.llm, LLM)
|
24
21
|
assert agent.llm.model == DEFAULT_MODEL_NAME
|
25
22
|
assert agent.llm.api_key == LITELLM_API_KEY
|
@@ -25,7 +25,7 @@ def test_doc_index_b():
|
|
25
25
|
return f"""{message}: {test1}, {", ".join(test2)}"""
|
26
26
|
|
27
27
|
|
28
|
-
agent = vhq.Agent(role="demo",
|
28
|
+
agent = vhq.Agent(role="demo", maxit=1)
|
29
29
|
|
30
30
|
task = vhq.Task(
|
31
31
|
description="Amazing task",
|
@@ -42,8 +42,8 @@ def test_doc_index_b():
|
|
42
42
|
def test_doc_index_c():
|
43
43
|
import versionhq as vhq
|
44
44
|
|
45
|
-
agent_a = vhq.Agent(role="agent a",
|
46
|
-
agent_b = vhq.Agent(role="agent b",
|
45
|
+
agent_a = vhq.Agent(role="agent a", llm="llm-of-your-choice")
|
46
|
+
agent_b = vhq.Agent(role="agent b", llm="llm-of-your-choice")
|
47
47
|
|
48
48
|
task_1 = vhq.Task(
|
49
49
|
description="Analyze the client's business model.",
|
@@ -31,10 +31,7 @@ def test_demo_agent_customization():
|
|
31
31
|
import pathlib
|
32
32
|
current_path = pathlib.Path(__file__).parent.resolve()
|
33
33
|
|
34
|
-
agent = vhq.Agent(
|
35
|
-
role='Demo Manager',
|
36
|
-
goal='run a demo successfully'
|
37
|
-
)
|
34
|
+
agent = vhq.Agent(role='Demo Manager')
|
38
35
|
|
39
36
|
agent.update(
|
40
37
|
llm='gemini-2.0',
|
@@ -1509,19 +1509,20 @@ wheels = [
|
|
1509
1509
|
|
1510
1510
|
[[package]]
|
1511
1511
|
name = "langsmith"
|
1512
|
-
version = "0.3.
|
1512
|
+
version = "0.3.11"
|
1513
1513
|
source = { registry = "https://pypi.org/simple" }
|
1514
1514
|
dependencies = [
|
1515
1515
|
{ name = "httpx" },
|
1516
1516
|
{ name = "orjson", marker = "platform_python_implementation != 'PyPy'" },
|
1517
|
+
{ name = "packaging" },
|
1517
1518
|
{ name = "pydantic" },
|
1518
1519
|
{ name = "requests" },
|
1519
1520
|
{ name = "requests-toolbelt" },
|
1520
1521
|
{ name = "zstandard" },
|
1521
1522
|
]
|
1522
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
1523
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ea/34/c4c0eddad03e00457cd6be1a88c288cd4419da8d368d8f519a29abe5392c/langsmith-0.3.11.tar.gz", hash = "sha256:ddf29d24352e99de79c9618aaf95679214324e146c5d3d9475a7ddd2870018b1", size = 323815 }
|
1523
1524
|
wheels = [
|
1524
|
-
{ url = "https://files.pythonhosted.org/packages/
|
1525
|
+
{ url = "https://files.pythonhosted.org/packages/ff/68/514ffa62860202a5a0a3acbf5c05017ef9df38d4437d2cb44a3cf93d617b/langsmith-0.3.11-py3-none-any.whl", hash = "sha256:0cca22737ef07d3b038a437c141deda37e00add56022582680188b681bec095e", size = 335265 },
|
1525
1526
|
]
|
1526
1527
|
|
1527
1528
|
[[package]]
|
@@ -1547,7 +1548,7 @@ wheels = [
|
|
1547
1548
|
|
1548
1549
|
[[package]]
|
1549
1550
|
name = "litellm"
|
1550
|
-
version = "1.61.
|
1551
|
+
version = "1.61.16"
|
1551
1552
|
source = { registry = "https://pypi.org/simple" }
|
1552
1553
|
dependencies = [
|
1553
1554
|
{ name = "aiohttp" },
|
@@ -1563,9 +1564,9 @@ dependencies = [
|
|
1563
1564
|
{ name = "tokenizers", version = "0.19.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
1564
1565
|
{ name = "tokenizers", version = "0.21.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
1565
1566
|
]
|
1566
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
1567
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3d/a5/0750edce9f4cbdce7f0d852b8e175cec4760d1c687c0079f7fe1b91c7d7f/litellm-1.61.16.tar.gz", hash = "sha256:02df5865f98ea9734a4d27ac7c33aad9a45c4015403d5c0797d3292ade3c5cb5", size = 6562533 }
|
1567
1568
|
wheels = [
|
1568
|
-
{ url = "https://files.pythonhosted.org/packages/
|
1569
|
+
{ url = "https://files.pythonhosted.org/packages/56/49/6af8c25e4e57426d322ee94e312a822162bb8122d24adcbcb913916225e2/litellm-1.61.16-py3-none-any.whl", hash = "sha256:d241436ac0edf64ec57fb5686f8d84a25998a7e52213d9063adf87df8432701f", size = 6871951 },
|
1569
1570
|
]
|
1570
1571
|
|
1571
1572
|
[[package]]
|
@@ -4024,7 +4025,7 @@ wheels = [
|
|
4024
4025
|
|
4025
4026
|
[[package]]
|
4026
4027
|
name = "versionhq"
|
4027
|
-
version = "1.2.2.
|
4028
|
+
version = "1.2.2.5"
|
4028
4029
|
source = { editable = "." }
|
4029
4030
|
dependencies = [
|
4030
4031
|
{ name = "appdirs" },
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|