vision-agent 0.0.31__tar.gz → 0.0.32__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.
- {vision_agent-0.0.31 → vision_agent-0.0.32}/PKG-INFO +1 -1
- {vision_agent-0.0.31 → vision_agent-0.0.32}/pyproject.toml +1 -1
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/easytool.py +31 -1
- {vision_agent-0.0.31 → vision_agent-0.0.32}/LICENSE +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/README.md +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/agent.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/easytool_prompts.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/reflexion.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/agent/reflexion_prompts.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/data/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/data/data.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/emb/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/emb/emb.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/image_utils.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/llm/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/llm/llm.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/lmm/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/lmm/lmm.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/tools/__init__.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/tools/prompts.py +0 -0
- {vision_agent-0.0.31 → vision_agent-0.0.32}/vision_agent/tools/tools.py +0 -0
@@ -49,6 +49,33 @@ def format_tools(tools: Dict[int, Any]) -> str:
|
|
49
49
|
return tool_str
|
50
50
|
|
51
51
|
|
52
|
+
def topological_sort(tasks: List[Dict]) -> List[Dict]:
|
53
|
+
in_degree = {task["id"]: 0 for task in tasks}
|
54
|
+
for task in tasks:
|
55
|
+
for dep in task["dep"]:
|
56
|
+
if dep in in_degree:
|
57
|
+
in_degree[task["id"]] += 1
|
58
|
+
|
59
|
+
queue = [task for task in tasks if in_degree[task["id"]] == 0]
|
60
|
+
sorted_order = []
|
61
|
+
|
62
|
+
while queue:
|
63
|
+
current = queue.pop(0)
|
64
|
+
sorted_order.append(current)
|
65
|
+
|
66
|
+
for task in tasks:
|
67
|
+
if current["id"] in task["dep"]:
|
68
|
+
in_degree[task["id"]] -= 1
|
69
|
+
if in_degree[task["id"]] == 0:
|
70
|
+
queue.append(task)
|
71
|
+
|
72
|
+
if len(sorted_order) != len(tasks):
|
73
|
+
completed_ids = set([task["id"] for task in sorted_order])
|
74
|
+
remaining_tasks = [task for task in tasks if task["id"] not in completed_ids]
|
75
|
+
sorted_order.extend(remaining_tasks)
|
76
|
+
return sorted_order
|
77
|
+
|
78
|
+
|
52
79
|
def task_decompose(
|
53
80
|
model: Union[LLM, LMM, Agent], question: str, tools: Dict[int, Any]
|
54
81
|
) -> Optional[Dict]:
|
@@ -265,6 +292,10 @@ class EasyTool(Agent):
|
|
265
292
|
if tasks is not None:
|
266
293
|
task_list = [{"task": task, "id": i + 1} for i, task in enumerate(tasks)]
|
267
294
|
task_list = task_topology(self.task_model, question, task_list)
|
295
|
+
try:
|
296
|
+
task_list = topological_sort(task_list)
|
297
|
+
except Exception:
|
298
|
+
_LOGGER.error(f"Failed topological_sort on: {task_list}")
|
268
299
|
else:
|
269
300
|
task_list = []
|
270
301
|
|
@@ -274,7 +305,6 @@ class EasyTool(Agent):
|
|
274
305
|
answers = []
|
275
306
|
for task in task_list:
|
276
307
|
task_depend[task["id"]] = {"task": task["task"], "answer": ""} # type: ignore
|
277
|
-
# TODO topological sort task_list
|
278
308
|
all_tool_results = []
|
279
309
|
for task in task_list:
|
280
310
|
task_str = task["task"]
|
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
|