vision-agent 0.2.166__tar.gz → 0.2.167__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. {vision_agent-0.2.166 → vision_agent-0.2.167}/PKG-INFO +1 -1
  2. {vision_agent-0.2.166 → vision_agent-0.2.167}/pyproject.toml +1 -1
  3. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent.py +14 -1
  4. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/meta_tools.py +3 -2
  5. {vision_agent-0.2.166 → vision_agent-0.2.167}/LICENSE +0 -0
  6. {vision_agent-0.2.166 → vision_agent-0.2.167}/README.md +0 -0
  7. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/__init__.py +0 -0
  8. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/__init__.py +0 -0
  9. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/agent.py +0 -0
  10. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/agent_utils.py +0 -0
  11. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent_coder.py +0 -0
  12. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent_coder_prompts.py +0 -0
  13. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent_planner.py +0 -0
  14. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent_planner_prompts.py +0 -0
  15. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/agent/vision_agent_prompts.py +0 -0
  16. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/clients/__init__.py +0 -0
  17. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/clients/http.py +0 -0
  18. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/clients/landing_public_api.py +0 -0
  19. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/fonts/__init__.py +0 -0
  20. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/fonts/default_font_ch_en.ttf +0 -0
  21. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/lmm/__init__.py +0 -0
  22. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/lmm/lmm.py +0 -0
  23. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/lmm/types.py +0 -0
  24. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/__init__.py +0 -0
  25. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/prompts.py +0 -0
  26. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/tool_utils.py +0 -0
  27. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/tools.py +0 -0
  28. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/tools/tools_types.py +0 -0
  29. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/__init__.py +0 -0
  30. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/exceptions.py +0 -0
  31. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/execute.py +0 -0
  32. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/image_utils.py +0 -0
  33. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/sim.py +0 -0
  34. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/type_defs.py +0 -0
  35. {vision_agent-0.2.166 → vision_agent-0.2.167}/vision_agent/utils/video.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vision-agent
3
- Version: 0.2.166
3
+ Version: 0.2.167
4
4
  Summary: Toolset for Vision Agent
5
5
  Author: Landing AI
6
6
  Author-email: dev@landing.ai
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "vision-agent"
7
- version = "0.2.166"
7
+ version = "0.2.167"
8
8
  description = "Toolset for Vision Agent"
9
9
  authors = ["Landing AI <dev@landing.ai>"]
10
10
  readme = "README.md"
@@ -85,6 +85,15 @@ def format_agent_message(agent_message: str) -> str:
85
85
  return output
86
86
 
87
87
 
88
+ def _clean_response(response: str) -> str:
89
+ # Sometimes the LLM will hallucinate responses to an <execute_python> tag as if it
90
+ # had already executed the code. This function removes the hallucinated response.
91
+ if "<execute_python>" in response:
92
+ end_execute_python = response.find("</execute_python>")
93
+ response = response[: end_execute_python + len("</execute_python>")]
94
+ return response
95
+
96
+
88
97
  def run_conversation(orch: LMM, chat: List[Message]) -> Dict[str, Any]:
89
98
  chat = copy.deepcopy(chat)
90
99
 
@@ -114,6 +123,10 @@ def run_conversation(orch: LMM, chat: List[Message]) -> Dict[str, Any]:
114
123
  message["media"] = chat[-1]["media"]
115
124
  conv_resp = cast(str, orch([message], stream=False))
116
125
 
126
+ # clean the response first, if we are executing code, do not resond or end
127
+ # conversation before the code has been executed.
128
+ conv_resp = _clean_response(conv_resp)
129
+
117
130
  let_user_respond_str = extract_tag(conv_resp, "let_user_respond")
118
131
  let_user_respond = (
119
132
  "true" in let_user_respond_str.lower() if let_user_respond_str else False
@@ -458,7 +471,7 @@ class VisionAgent(Agent):
458
471
  self.streaming_message(
459
472
  {
460
473
  "role": "assistant",
461
- "content": json.dumps(response),
474
+ "content": json.dumps(add_step_descriptions(response)),
462
475
  "finished": finished and code_action is None,
463
476
  }
464
477
  )
@@ -676,12 +676,13 @@ def use_extra_vision_agent_args(
676
676
  for node in red:
677
677
  # seems to always be atomtrailers not call type
678
678
  if node.type == "atomtrailers":
679
+ if node.name.value == "generate_vision_code":
680
+ node.value[1].value.append(f"test_multi_plan={test_multi_plan}")
681
+
679
682
  if (
680
683
  node.name.value == "generate_vision_code"
681
684
  or node.name.value == "edit_vision_code"
682
685
  ):
683
- node.value[1].value.append(f"test_multi_plan={test_multi_plan}")
684
-
685
686
  if custom_tool_names is not None:
686
687
  node.value[1].value.append(f"custom_tool_names={custom_tool_names}")
687
688
  cleaned_code = red.dumps().strip()
File without changes
File without changes