versionhq 1.1.11.8__tar.gz → 1.1.12.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.github/workflows/run_tests.yml +6 -5
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.gitignore +0 -2
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/LICENSE +1 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/PKG-INFO +15 -16
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/README.md +10 -12
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/pyproject.toml +4 -3
- versionhq-1.1.12.2/src/versionhq/__init__.py +71 -0
- versionhq-1.1.12.2/src/versionhq/_utils/__init__.py +3 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/_utils/logger.py +6 -1
- versionhq-1.1.12.2/src/versionhq/agent/inhouse_agents.py +41 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/agent/model.py +10 -7
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/agent/rpm_controller.py +1 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/clients/product/model.py +0 -1
- versionhq-1.1.12.2/src/versionhq/knowledge/__init__.py +22 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/model.py +0 -2
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/source.py +0 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/llm/llm_vars.py +14 -124
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/llm/model.py +35 -37
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/memory/model.py +109 -47
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/ltm_sqlite_storage.py +29 -43
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/mem0_storage.py +1 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/rag_storage.py +23 -22
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/task_output_storage.py +6 -6
- versionhq-1.1.12.2/src/versionhq/task/TEMPLATES/Description.py +5 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/task/evaluate.py +19 -8
- versionhq-1.1.12.2/src/versionhq/task/formation.py +123 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/task/model.py +88 -110
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/task/structured_response.py +1 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/team/model.py +43 -62
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/team/team_planner.py +5 -2
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/model.py +1 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq.egg-info/PKG-INFO +15 -16
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq.egg-info/SOURCES.txt +3 -1
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq.egg-info/requires.txt +1 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/agent/agent_test.py +5 -13
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/clients/customer_test.py +2 -2
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/clients/product_test.py +1 -6
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/clients/workflow_test.py +1 -1
- {versionhq-1.1.11.8/tests/cli → versionhq-1.1.12.2/tests/knowledge}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/knowledge/knowledge_test.py +3 -3
- {versionhq-1.1.11.8/tests/knowledge → versionhq-1.1.12.2/tests/llm}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/llm/llm_test.py +1 -1
- {versionhq-1.1.11.8/tests/llm → versionhq-1.1.12.2/tests/memory}/__init__.py +0 -0
- versionhq-1.1.12.2/tests/memory/memory_test.py +67 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/task/__init__.py +19 -5
- versionhq-1.1.12.2/tests/task/llm_connection_test.py +69 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/task/task_test.py +22 -14
- {versionhq-1.1.11.8/tests/memory → versionhq-1.1.12.2/tests/team}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/team/team_test.py +7 -8
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/tool/tool_test.py +2 -5
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/uv.lock +102 -98
- versionhq-1.1.11.8/src/versionhq/__init__.py +0 -35
- versionhq-1.1.11.8/src/versionhq/agent/default_agents.py +0 -15
- versionhq-1.1.11.8/src/versionhq/task/TEMPLATES/Description.py +0 -5
- versionhq-1.1.11.8/src/versionhq/task/__init__.py +0 -9
- versionhq-1.1.11.8/tests/memory/memory_test.py +0 -83
- versionhq-1.1.11.8/tests/tool/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.github/workflows/publish.yml +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.github/workflows/publish_testpypi.yml +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.github/workflows/security_check.yml +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.pre-commit-config.yaml +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/.python-version +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/SECURITY.md +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/db/preprocess.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/requirements-dev.txt +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/requirements.txt +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/runtime.txt +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/setup.cfg +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/_utils/i18n.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/_utils/process_config.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/_utils/usage_metrics.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/_utils/vars.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/agent/TEMPLATES/Backstory.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/_utils → versionhq-1.1.12.2/src/versionhq/agent/TEMPLATES}/__init__.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/agent/TEMPLATES → versionhq-1.1.12.2/src/versionhq/agent}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/agent/parser.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/agent → versionhq-1.1.12.2/src/versionhq/cli}/__init__.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/cli → versionhq-1.1.12.2/src/versionhq/clients}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/clients/customer/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/clients/customer/model.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/clients → versionhq-1.1.12.2/src/versionhq/clients/product}/__init__.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/clients/product → versionhq-1.1.12.2/src/versionhq/clients/workflow}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/clients/workflow/model.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/_utils.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/embedding.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/source_docling.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/knowledge/storage.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/clients/workflow → versionhq-1.1.12.2/src/versionhq/llm}/__init__.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/knowledge → versionhq-1.1.12.2/src/versionhq/memory}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/memory/contextual_memory.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/llm → versionhq-1.1.12.2/src/versionhq/storage}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/base.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/storage/utils.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/memory → versionhq-1.1.12.2/src/versionhq/task}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/task/formatter.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/task/log_handler.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/storage → versionhq-1.1.12.2/src/versionhq/team}/__init__.py +0 -0
- {versionhq-1.1.11.8/src/versionhq/team → versionhq-1.1.12.2/src/versionhq/tool}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/cache_handler.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/composio_tool.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/composio_tool_vars.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/decorator.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq/tool/tool_handler.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq.egg-info/dependency_links.txt +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/src/versionhq.egg-info/top_level.txt +0 -0
- {versionhq-1.1.11.8/src/versionhq/tool → versionhq-1.1.12.2/tests}/__init__.py +0 -0
- {versionhq-1.1.11.8/tests → versionhq-1.1.12.2/tests/agent}/__init__.py +0 -0
- {versionhq-1.1.11.8/tests/agent → versionhq-1.1.12.2/tests/cli}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/conftest.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/knowledge/mock_report_compressed.pdf +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/team/Prompts/Demo_test.py +0 -0
- {versionhq-1.1.11.8/tests/team → versionhq-1.1.12.2/tests/tool}/__init__.py +0 -0
- {versionhq-1.1.11.8 → versionhq-1.1.12.2}/tests/tool/composio_test.py +0 -0
@@ -6,15 +6,16 @@ permissions:
|
|
6
6
|
contents: write
|
7
7
|
|
8
8
|
env:
|
9
|
+
DEFAULT_MODEL_NAME: ${{ secrets.DEFAULT_MODEL_NAME }}
|
10
|
+
DEFAULT_MODEL_PROVIDER_NAME: ${{ secrets.DEFAULT_MODEL_PROVIDER_NAME }}
|
9
11
|
LITELLM_API_KEY: ${{ secrets.LITELLM_API_KEY }}
|
10
12
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
11
|
-
DEFAULT_REDIRECT_URL: ${{ secrets.DEFAULT_REDIRECT_URL }}
|
12
|
-
DEFAULT_USER_ID: ${{ secrets.DEFAULT_USER_ID }}
|
13
|
-
COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
|
14
|
-
DEFAULT_MODEL_NAME: ${{ secrets.DEFAULT_MODEL_NAME }}
|
15
13
|
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
16
14
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
17
|
-
|
15
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
16
|
+
COMPOSIO_API_KEY: ${{ secrets.COMPOSIO_API_KEY }}
|
17
|
+
DEFAULT_REDIRECT_URL: ${{ secrets.DEFAULT_REDIRECT_URL }}
|
18
|
+
DEFAULT_USER_ID: ${{ secrets.DEFAULT_USER_ID }}
|
18
19
|
MEM0_API_KEY: ${{ secrets.MEM0_API_KEY }}
|
19
20
|
|
20
21
|
jobs:
|
@@ -1,11 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: versionhq
|
3
|
-
Version: 1.1.
|
4
|
-
Summary:
|
3
|
+
Version: 1.1.12.2
|
4
|
+
Summary: Agentic orchestration framework for task automation
|
5
5
|
Author-email: Kuriko Iwai <kuriko@versi0n.io>
|
6
6
|
License: MIT License
|
7
7
|
|
8
|
-
Copyright (c) 2024 Version IO Sdn. Bhd.
|
8
|
+
Copyright (c) 2024-2025 Version IO Sdn. Bhd.
|
9
9
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
11
11
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -29,7 +29,7 @@ Project-URL: Homepage, https://versi0n.io
|
|
29
29
|
Project-URL: Documentation, https://chief-oxygen-8a2.notion.site/Documentation-17e923685cf98001a5fad5c4b2acd79b?pvs=73
|
30
30
|
Project-URL: Repository, https://github.com/versionHQ/multi-agent-system
|
31
31
|
Project-URL: Issues, https://github.com/versionHQ/multi-agent-system/issues
|
32
|
-
Keywords: orchestration framework,orchestration,ai agent,multi-agent system,RAG,agent
|
32
|
+
Keywords: orchestration framework,orchestration,ai agent,multi-agent system,RAG,agent,agentic orchestration,llm
|
33
33
|
Classifier: Programming Language :: Python
|
34
34
|
Classifier: Programming Language :: Python :: 3
|
35
35
|
Classifier: Programming Language :: Python :: 3.11
|
@@ -63,6 +63,7 @@ Requires-Dist: composio-langchain>=0.6.12
|
|
63
63
|
Requires-Dist: chromadb>=0.6.3
|
64
64
|
Requires-Dist: wheel>=0.45.1
|
65
65
|
Requires-Dist: envoy>=0.0.3
|
66
|
+
Requires-Dist: composio-core==0.7.0
|
66
67
|
Provides-Extra: docling
|
67
68
|
Requires-Dist: docling>=2.17.0; extra == "docling"
|
68
69
|
Provides-Extra: mem0ai
|
@@ -78,12 +79,12 @@ Requires-Dist: numpy>=1.26.4; extra == "numpy"
|
|
78
79
|
|
79
80
|

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

|
83
|
+

|
83
84
|

|
84
85
|
|
85
86
|
|
86
|
-
|
87
|
+
Agentic orchestration framework to deploy agent network and handle complex task automation.
|
87
88
|
|
88
89
|
**Visit:**
|
89
90
|
|
@@ -122,15 +123,16 @@ LLM orchestration frameworks to deploy multi-agent systems with task-based forma
|
|
122
123
|
|
123
124
|
## Key Features
|
124
125
|
|
125
|
-
Generate
|
126
|
+
Generate multi-agent systems based on the task complexity, execute tasks, and evaluate output based on the given criteria.
|
126
127
|
|
127
|
-
|
128
|
+
Agents are model-agnostic, and can handle and share RAG tools, knowledge, memory, and callbacks among other agents. (self-learn)
|
128
129
|
|
129
130
|
|
130
131
|
### Agent formation
|
131
|
-
Depending on the task complexity, agents can make a different formation.
|
132
132
|
|
133
|
-
|
133
|
+
Agents adapt their formation based on task complexity.
|
134
|
+
|
135
|
+
You can specify a desired formation or allow the agents to determine it autonomously (default).
|
134
136
|
|
135
137
|
|
136
138
|
| | **Solo Agent** | **Supervising** | **Network** | **Random** |
|
@@ -158,8 +160,7 @@ You can specify which formation you want them to generate, or let the agent deci
|
|
158
160
|
|
159
161
|
```
|
160
162
|
from pydantic import BaseModel
|
161
|
-
from versionhq
|
162
|
-
from versionhq.task.model import Task
|
163
|
+
from versionhq import Agent, Task
|
163
164
|
|
164
165
|
class CustomOutput(BaseModel):
|
165
166
|
test1: str
|
@@ -199,9 +200,7 @@ This will return `TaskOutput` instance that stores a response in plane text, JSO
|
|
199
200
|
### Case 2. Supervising:
|
200
201
|
|
201
202
|
```
|
202
|
-
from versionhq
|
203
|
-
from versionhq.task.model import Task, ResponseField
|
204
|
-
from versionhq.team.model import Team, TeamMember
|
203
|
+
from versionhq import Agent, Task, ResponseField, Team, TeamMember
|
205
204
|
|
206
205
|
agent_a = Agent(role="agent a", goal="My amazing goals", llm="llm-of-your-choice")
|
207
206
|
agent_b = Agent(role="agent b", goal="My amazing goals", llm="llm-of-your-choice")
|
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|

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

|
6
|
+

|
7
7
|

|
8
8
|
|
9
9
|
|
10
|
-
|
10
|
+
Agentic orchestration framework to deploy agent network and handle complex task automation.
|
11
11
|
|
12
12
|
**Visit:**
|
13
13
|
|
@@ -46,15 +46,16 @@ LLM orchestration frameworks to deploy multi-agent systems with task-based forma
|
|
46
46
|
|
47
47
|
## Key Features
|
48
48
|
|
49
|
-
Generate
|
49
|
+
Generate multi-agent systems based on the task complexity, execute tasks, and evaluate output based on the given criteria.
|
50
50
|
|
51
|
-
|
51
|
+
Agents are model-agnostic, and can handle and share RAG tools, knowledge, memory, and callbacks among other agents. (self-learn)
|
52
52
|
|
53
53
|
|
54
54
|
### Agent formation
|
55
|
-
Depending on the task complexity, agents can make a different formation.
|
56
55
|
|
57
|
-
|
56
|
+
Agents adapt their formation based on task complexity.
|
57
|
+
|
58
|
+
You can specify a desired formation or allow the agents to determine it autonomously (default).
|
58
59
|
|
59
60
|
|
60
61
|
| | **Solo Agent** | **Supervising** | **Network** | **Random** |
|
@@ -82,8 +83,7 @@ You can specify which formation you want them to generate, or let the agent deci
|
|
82
83
|
|
83
84
|
```
|
84
85
|
from pydantic import BaseModel
|
85
|
-
from versionhq
|
86
|
-
from versionhq.task.model import Task
|
86
|
+
from versionhq import Agent, Task
|
87
87
|
|
88
88
|
class CustomOutput(BaseModel):
|
89
89
|
test1: str
|
@@ -123,9 +123,7 @@ This will return `TaskOutput` instance that stores a response in plane text, JSO
|
|
123
123
|
### Case 2. Supervising:
|
124
124
|
|
125
125
|
```
|
126
|
-
from versionhq
|
127
|
-
from versionhq.task.model import Task, ResponseField
|
128
|
-
from versionhq.team.model import Team, TeamMember
|
126
|
+
from versionhq import Agent, Task, ResponseField, Team, TeamMember
|
129
127
|
|
130
128
|
agent_a = Agent(role="agent a", goal="My amazing goals", llm="llm-of-your-choice")
|
131
129
|
agent_b = Agent(role="agent b", goal="My amazing goals", llm="llm-of-your-choice")
|
@@ -15,13 +15,13 @@ exclude = ["test*", "__pycache__", "*.egg-info"]
|
|
15
15
|
|
16
16
|
[project]
|
17
17
|
name = "versionhq"
|
18
|
-
version = "1.1.
|
18
|
+
version = "1.1.12.2"
|
19
19
|
authors = [{ name = "Kuriko Iwai", email = "kuriko@versi0n.io" }]
|
20
|
-
description = "
|
20
|
+
description = "Agentic orchestration framework for task automation"
|
21
21
|
readme = "README.md"
|
22
22
|
requires-python = ">=3.11"
|
23
23
|
license = { file = "LICENSE" }
|
24
|
-
keywords = ["orchestration framework", "orchestration", "ai agent", "multi-agent system", "RAG", "agent"]
|
24
|
+
keywords = ["orchestration framework", "orchestration", "ai agent", "multi-agent system", "RAG", "agent", "agentic orchestration", "llm"]
|
25
25
|
dependencies = [
|
26
26
|
"regex==2024.11.6",
|
27
27
|
"requests>=2.32.3",
|
@@ -43,6 +43,7 @@ dependencies = [
|
|
43
43
|
"chromadb>=0.6.3",
|
44
44
|
"wheel>=0.45.1",
|
45
45
|
"envoy>=0.0.3",
|
46
|
+
"composio-core==0.7.0",
|
46
47
|
]
|
47
48
|
classifiers = [
|
48
49
|
"Programming Language :: Python",
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# silence some warnings
|
2
|
+
import warnings
|
3
|
+
warnings.filterwarnings(action="ignore", message="Pydantic serializer warnings:", category=UserWarning, module="pydantic.main")
|
4
|
+
warnings.filterwarnings(action="ignore", category=UserWarning, module="pydantic._internal")
|
5
|
+
warnings.filterwarnings(action="ignore", module="LiteLLM:utils")
|
6
|
+
|
7
|
+
from versionhq.agent.model import Agent
|
8
|
+
from versionhq.clients.customer.model import Customer
|
9
|
+
from versionhq.clients.product.model import Product, ProductProvider
|
10
|
+
from versionhq.clients.workflow.model import MessagingWorkflow, MessagingComponent
|
11
|
+
from versionhq.knowledge.model import Knowledge, KnowledgeStorage
|
12
|
+
from versionhq.knowledge.source import PDFKnowledgeSource, CSVKnowledgeSource, JSONKnowledgeSource, TextFileKnowledgeSource, ExcelKnowledgeSource, StringKnowledgeSource
|
13
|
+
from versionhq.knowledge.source_docling import DoclingSource
|
14
|
+
from versionhq.task.model import Task, TaskOutput, ConditionalTask, ResponseField
|
15
|
+
from versionhq.task.evaluate import Evaluation, EvaluationItem
|
16
|
+
from versionhq.team.model import Team, TeamOutput, Formation, TeamMember, TaskHandlingProcess
|
17
|
+
from versionhq.tool.model import Tool, ToolSet
|
18
|
+
from versionhq.tool.cache_handler import CacheHandler
|
19
|
+
from versionhq.tool.tool_handler import ToolHandler
|
20
|
+
from versionhq.tool.composio_tool import ComposioHandler
|
21
|
+
from versionhq.memory.contextual_memory import ContextualMemory
|
22
|
+
from versionhq.memory.model import ShortTermMemory,LongTermMemory, UserMemory, MemoryItem
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
__version__ = "1.1.12.2"
|
27
|
+
__all__ = [
|
28
|
+
"Agent",
|
29
|
+
|
30
|
+
"Customer",
|
31
|
+
"Product",
|
32
|
+
"ProductProvider",
|
33
|
+
"MessagingWorkflow",
|
34
|
+
"MessagingComponent",
|
35
|
+
|
36
|
+
"Knowledge",
|
37
|
+
"KnowledgeStorage",
|
38
|
+
"PDFKnowledgeSource",
|
39
|
+
"CSVKnowledgeSource",
|
40
|
+
"JSONKnowledgeSource",
|
41
|
+
"TextFileKnowledgeSource",
|
42
|
+
"ExcelKnowledgeSource",
|
43
|
+
"StringKnowledgeSource",
|
44
|
+
"DoclingSource",
|
45
|
+
|
46
|
+
"Task",
|
47
|
+
"TaskOutput",
|
48
|
+
"ConditionalTask",
|
49
|
+
"ResponseField",
|
50
|
+
|
51
|
+
"Evaluation",
|
52
|
+
"EvaluationItem",
|
53
|
+
|
54
|
+
"Team",
|
55
|
+
"TeamOutput",
|
56
|
+
"Formation",
|
57
|
+
"TeamMember",
|
58
|
+
"TaskHandlingProcess",
|
59
|
+
|
60
|
+
"Tool",
|
61
|
+
"ToolSet",
|
62
|
+
"CacheHandler",
|
63
|
+
"ToolHandler",
|
64
|
+
"ComposioHandler",
|
65
|
+
|
66
|
+
"ContextualMemory",
|
67
|
+
"ShortTermMemory",
|
68
|
+
"LongTermMemory",
|
69
|
+
"UserMemory",
|
70
|
+
"MemoryItem"
|
71
|
+
]
|
@@ -36,10 +36,15 @@ class Printer:
|
|
36
36
|
|
37
37
|
|
38
38
|
class Logger(BaseModel):
|
39
|
+
"""
|
40
|
+
Control CLI messages.
|
41
|
+
Color: red = error, yellow = warning, blue = info (from vhq), green = info (from third party)
|
42
|
+
"""
|
43
|
+
|
39
44
|
verbose: bool = Field(default=True)
|
40
45
|
_printer: Printer = PrivateAttr(default_factory=Printer)
|
41
46
|
|
42
47
|
def log(self, level, message, color="yellow"):
|
43
48
|
if self.verbose:
|
44
49
|
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
45
|
-
self._printer.print(f"\n{timestamp} - versionHQ
|
50
|
+
self._printer.print(f"\n{timestamp} - versionHQ [{level.upper()}]: {message}", color=color)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
from versionhq.agent.model import Agent
|
2
|
+
from versionhq.llm.model import DEFAULT_MODEL_NAME
|
3
|
+
|
4
|
+
"""
|
5
|
+
In-house agents to be called across the project.
|
6
|
+
[Rules] In house agents have names and roles that start with `vhq_`. No customization allowed by client.
|
7
|
+
"""
|
8
|
+
|
9
|
+
vhq_client_manager = Agent(
|
10
|
+
role="vhq-Client Manager",
|
11
|
+
goal="Efficiently communicate with the client on the task progress",
|
12
|
+
llm=DEFAULT_MODEL_NAME,
|
13
|
+
use_memory=True,
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
vhq_task_evaluator = Agent(
|
18
|
+
role="vhq-Task Evaluator",
|
19
|
+
goal="score the output according to the given evaluation criteria.",
|
20
|
+
llm=DEFAULT_MODEL_NAME,
|
21
|
+
llm_config=dict(top_p=0.8, top_k=30, max_tokens=5000, temperature=0.9),
|
22
|
+
maxit=1,
|
23
|
+
max_retry_limit=1,
|
24
|
+
use_memory=True # refer past eval records of similar tasks
|
25
|
+
)
|
26
|
+
|
27
|
+
|
28
|
+
vhq_formation_planner = Agent(
|
29
|
+
role="vhq-Formation Planner",
|
30
|
+
goal="Plan a formation of agents based on the given task descirption.",
|
31
|
+
llm="gemini/gemini-2.0-flash-exp",
|
32
|
+
llm_config=dict(top_p=0.8, top_k=30, temperature=0.9),
|
33
|
+
maxit=1,
|
34
|
+
max_retry_limit=1,
|
35
|
+
knowledge_sources=[
|
36
|
+
"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.",
|
37
|
+
"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.",
|
38
|
+
"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. ",
|
39
|
+
"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. ",
|
40
|
+
]
|
41
|
+
)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import os
|
2
2
|
import uuid
|
3
|
-
import datetime
|
4
3
|
from typing import Any, Dict, List, Optional, TypeVar, Callable, Type
|
5
4
|
from typing_extensions import Self
|
6
5
|
from dotenv import load_dotenv
|
@@ -165,13 +164,16 @@ class Agent(BaseModel):
|
|
165
164
|
Set up `llm` and `function_calling_llm` as valid LLM objects using the given values.
|
166
165
|
"""
|
167
166
|
self.agent_ops_agent_name = self.role
|
168
|
-
self.llm = self.
|
167
|
+
self.llm = self._convert_to_llm_class(llm=self.llm)
|
168
|
+
|
169
169
|
function_calling_llm = self.function_calling_llm if self.function_calling_llm else self.llm if self.llm else None
|
170
|
-
|
170
|
+
function_calling_llm = self._convert_to_llm_class(llm=function_calling_llm)
|
171
|
+
if function_calling_llm._supports_function_calling():
|
172
|
+
self.function_calling_llm = function_calling_llm
|
171
173
|
return self
|
172
174
|
|
173
175
|
|
174
|
-
def
|
176
|
+
def _convert_to_llm_class(self, llm: Any | None) -> LLM:
|
175
177
|
llm = llm if llm is not None else DEFAULT_MODEL_NAME
|
176
178
|
|
177
179
|
match llm:
|
@@ -350,7 +352,7 @@ class Agent(BaseModel):
|
|
350
352
|
@model_validator(mode="after")
|
351
353
|
def set_up_memory(self) -> Self:
|
352
354
|
"""
|
353
|
-
Set up memories: stm, um
|
355
|
+
Set up memories: stm, ltm, and um
|
354
356
|
"""
|
355
357
|
|
356
358
|
if self.use_memory == True:
|
@@ -413,7 +415,7 @@ class Agent(BaseModel):
|
|
413
415
|
task.tokens = self.llm._tokens
|
414
416
|
|
415
417
|
task_execution_counter += 1
|
416
|
-
self._logger.log(level="info", message=f"Agent response: {raw_response}", color="
|
418
|
+
self._logger.log(level="info", message=f"Agent response: {raw_response}", color="green")
|
417
419
|
return raw_response
|
418
420
|
|
419
421
|
except Exception as e:
|
@@ -429,7 +431,7 @@ class Agent(BaseModel):
|
|
429
431
|
iterations += 1
|
430
432
|
|
431
433
|
task_execution_counter += 1
|
432
|
-
self._logger.log(level="info", message=f"Agent #{task_execution_counter} response: {raw_response}", color="
|
434
|
+
self._logger.log(level="info", message=f"Agent #{task_execution_counter} response: {raw_response}", color="green")
|
433
435
|
return raw_response
|
434
436
|
|
435
437
|
if not raw_response:
|
@@ -474,6 +476,7 @@ class Agent(BaseModel):
|
|
474
476
|
task_prompt += memory.strip()
|
475
477
|
|
476
478
|
|
479
|
+
## comment out for now
|
477
480
|
# if self.team and self.team._train:
|
478
481
|
# task_prompt = self._training_handler(task_prompt=task_prompt)
|
479
482
|
# else:
|
@@ -0,0 +1,22 @@
|
|
1
|
+
from versionhq.knowledge.model import Knowledge, KnowledgeStorage
|
2
|
+
from versionhq.knowledge.source import (
|
3
|
+
CSVKnowledgeSource,
|
4
|
+
ExcelKnowledgeSource,
|
5
|
+
PDFKnowledgeSource,
|
6
|
+
TextFileKnowledgeSource,
|
7
|
+
JSONKnowledgeSource,
|
8
|
+
StringKnowledgeSource
|
9
|
+
)
|
10
|
+
from versionhq.knowledge.source_docling import DoclingSource
|
11
|
+
|
12
|
+
__all__ = [
|
13
|
+
"Knowledge",
|
14
|
+
"KnowledgeStorage",
|
15
|
+
"DoclingSource",
|
16
|
+
"CSVKnowledgeSource",
|
17
|
+
"ExcelKnowledgeSource",
|
18
|
+
"PDFKnowledgeSource",
|
19
|
+
"TextFileKnowledgeSource",
|
20
|
+
"JSONKnowledgeSource",
|
21
|
+
"StringKnowledgeSource"
|
22
|
+
]
|