vision-agent 0.2.142__py3-none-any.whl → 0.2.144__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,6 +30,12 @@ WORKSPACE.mkdir(parents=True, exist_ok=True)
30
30
  if str(WORKSPACE) != "":
31
31
  os.environ["PYTHONPATH"] = f"{WORKSPACE}:{os.getenv('PYTHONPATH', '')}"
32
32
 
33
+ STUCK_IN_LOOP_ERROR_MESSAGE = {
34
+ "name": "Error when running conversation agent",
35
+ "value": "Agent is stuck in conversation loop, exited",
36
+ "traceback_raw": [],
37
+ }
38
+
33
39
 
34
40
  class BoilerplateCode:
35
41
  pre_code = [
@@ -229,7 +235,7 @@ class VisionAgent(Agent):
229
235
  ) as code_interpreter:
230
236
  orig_chat = copy.deepcopy(chat)
231
237
  int_chat = copy.deepcopy(chat)
232
- last_user_message_content = chat[-1].get("content")
238
+ last_user_message = chat[-1]
233
239
  media_list = []
234
240
  for chat_i in int_chat:
235
241
  if "media" in chat_i:
@@ -278,32 +284,9 @@ class VisionAgent(Agent):
278
284
  orig_chat.append({"role": "observation", "content": artifacts_loaded})
279
285
  self.streaming_message({"role": "observation", "content": artifacts_loaded})
280
286
 
281
- if int_chat[-1]["role"] == "user":
282
- last_user_message_content = cast(str, int_chat[-1].get("content", ""))
283
- user_code_action = parse_execution(last_user_message_content, False)
284
- if user_code_action is not None:
285
- user_result, user_obs = run_code_action(
286
- user_code_action, code_interpreter, str(remote_artifacts_path)
287
- )
288
- if self.verbosity >= 1:
289
- _LOGGER.info(user_obs)
290
- int_chat.append({"role": "observation", "content": user_obs})
291
- orig_chat.append(
292
- {
293
- "role": "observation",
294
- "content": user_obs,
295
- "execution": user_result,
296
- }
297
- )
298
- self.streaming_message(
299
- {
300
- "role": "observation",
301
- "content": user_obs,
302
- "execution": user_result,
303
- "finished": True,
304
- }
305
- )
306
- finished = True
287
+ finished = self.execute_user_code_action(
288
+ last_user_message, code_interpreter, remote_artifacts_path
289
+ )
307
290
 
308
291
  while not finished and iterations < self.max_iterations:
309
292
  response = run_conversation(self.agent, int_chat)
@@ -316,10 +299,12 @@ class VisionAgent(Agent):
316
299
  if last_response == response:
317
300
  response["let_user_respond"] = True
318
301
  self.streaming_message(
319
- {"role": "assistant", "error": "Stuck in loop"}
302
+ {
303
+ "role": "assistant",
304
+ "content": "{}",
305
+ "error": STUCK_IN_LOOP_ERROR_MESSAGE,
306
+ }
320
307
  )
321
- else:
322
- self.streaming_message({"role": "assistant", "content": response})
323
308
 
324
309
  finished = response["let_user_respond"]
325
310
 
@@ -327,6 +312,24 @@ class VisionAgent(Agent):
327
312
  response["response"], test_multi_plan, customized_tool_names
328
313
  )
329
314
 
315
+ if last_response == response:
316
+ self.streaming_message(
317
+ {
318
+ "role": "assistant",
319
+ "content": "{}",
320
+ "error": STUCK_IN_LOOP_ERROR_MESSAGE,
321
+ "finished": finished and code_action is None,
322
+ }
323
+ )
324
+ else:
325
+ self.streaming_message(
326
+ {
327
+ "role": "assistant",
328
+ "content": response,
329
+ "finished": finished and code_action is None,
330
+ }
331
+ )
332
+
330
333
  if code_action is not None:
331
334
  result, obs = run_code_action(
332
335
  code_action, code_interpreter, str(remote_artifacts_path)
@@ -353,6 +356,7 @@ class VisionAgent(Agent):
353
356
  "role": "observation",
354
357
  "content": obs,
355
358
  "execution": result,
359
+ "finished": finished,
356
360
  }
357
361
  )
358
362
 
@@ -367,6 +371,34 @@ class VisionAgent(Agent):
367
371
  artifacts.save()
368
372
  return orig_chat, artifacts
369
373
 
374
+ def execute_user_code_action(
375
+ self,
376
+ last_user_message: Message,
377
+ code_interpreter: CodeInterpreter,
378
+ remote_artifacts_path: Path,
379
+ ) -> bool:
380
+ if last_user_message["role"] != "user":
381
+ return False
382
+ user_code_action = parse_execution(
383
+ cast(str, last_user_message.get("content", "")), False
384
+ )
385
+ if user_code_action is not None:
386
+ user_result, user_obs = run_code_action(
387
+ user_code_action, code_interpreter, str(remote_artifacts_path)
388
+ )
389
+ if self.verbosity >= 1:
390
+ _LOGGER.info(user_obs)
391
+ self.streaming_message(
392
+ {
393
+ "role": "observation",
394
+ "content": user_obs,
395
+ "execution": user_result,
396
+ "finished": True,
397
+ }
398
+ )
399
+ return True
400
+ return False
401
+
370
402
  def streaming_message(self, message: Dict[str, Any]) -> None:
371
403
  if self.callback_message:
372
404
  self.callback_message(message)
@@ -425,6 +425,7 @@ def edit_vision_code(
425
425
 
426
426
  agent = va.agent.VisionAgentCoder()
427
427
  if name not in artifacts:
428
+ print(f"[Artifact {name} does not exist]")
428
429
  return f"[Artifact {name} does not exist]"
429
430
 
430
431
  code = artifacts[name]
@@ -464,9 +464,7 @@ print(f"Vision Agent version: {va_version}")"""
464
464
  _LOGGER.info(
465
465
  f"E2BCodeInterpreter (sandbox id: {self.interpreter.sandbox_id}) initialized:\n{sys_versions}"
466
466
  )
467
- self.remote_path = Path(
468
- remote_path if remote_path is not None else "/home/user"
469
- )
467
+ self.remote_path = Path(remote_path if remote_path is not None else WORKSPACE)
470
468
 
471
469
  def close(self, *args: Any, **kwargs: Any) -> None:
472
470
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vision-agent
3
- Version: 0.2.142
3
+ Version: 0.2.144
4
4
  Summary: Toolset for Vision Agent
5
5
  Author: Landing AI
6
6
  Author-email: dev@landing.ai
@@ -2,7 +2,7 @@ vision_agent/__init__.py,sha256=EAb4-f9iyuEYkBrX4ag1syM8Syx8118_t0R6_C34M9w,57
2
2
  vision_agent/agent/__init__.py,sha256=NF2LABqHixLvbsOIO-fe-VKZ7awvShLtcT0oQT4eWtI,235
3
3
  vision_agent/agent/agent.py,sha256=2cjIOxEuSJrqbfPXYoV0qER5ihXsPFCoEFJa4jpqan0,597
4
4
  vision_agent/agent/agent_utils.py,sha256=PEUHqvnHmFL4np_TeFmKMwr5s_dWfdfJz6TF_ogd1dU,2353
5
- vision_agent/agent/vision_agent.py,sha256=k1bUmvoz0KjVEu62PYA9djnq3pqzv2S1UsW6gLnTd7w,17023
5
+ vision_agent/agent/vision_agent.py,sha256=WW0vtu8EFp7sFmU8z5_GDEduMOh9e0y4R3ZDiFDYJmM,17812
6
6
  vision_agent/agent/vision_agent_coder.py,sha256=4bbebV1sKE10vsxcZR-R8P54X2HjLeU9lDt7ylIZAT4,38429
7
7
  vision_agent/agent/vision_agent_coder_prompts.py,sha256=YWK4C--YRS1Kuab11Gn-AXBzar1j_GNnTnxi_nnaPRY,14901
8
8
  vision_agent/agent/vision_agent_prompts.py,sha256=e_ASPeRFU1yZsQhCkK_bIBG-eyIWyWXmN64lFk-r7e0,10897
@@ -15,19 +15,19 @@ vision_agent/lmm/__init__.py,sha256=jyY1sJb_tYKg5-Wzs3p1lvwFkc-aUNZfMcLy3TOC4Zg,
15
15
  vision_agent/lmm/lmm.py,sha256=B5ClgwvbybVCWkf9opDMLjTtJZemUU4KUkQoRxGh43I,16787
16
16
  vision_agent/lmm/types.py,sha256=ZEXR_ptBL0ZwDMTDYkgxUCmSZFmBYPQd2jreNzr_8UY,221
17
17
  vision_agent/tools/__init__.py,sha256=zUv3aVPN1MXfyQiQi5To4rkQGtG7mxLQ1NjLI3pxM80,2412
18
- vision_agent/tools/meta_tools.py,sha256=XO5Ahe5ZauomynxgDcBuzmm0ocXwTnmZ0wjfgvOzDWc,23426
18
+ vision_agent/tools/meta_tools.py,sha256=iHvMeBktWcVi-0DOrSMak1gsZrM_VKJlAq1mAFbBemE,23477
19
19
  vision_agent/tools/prompts.py,sha256=V1z4YJLXZuUl_iZ5rY0M5hHc_2tmMEUKr0WocXKGt4E,1430
20
20
  vision_agent/tools/tool_utils.py,sha256=5ukuDMxbEH4iKetYR9I7twzsA8ECyP4tVwYXQq54mxI,8020
21
21
  vision_agent/tools/tools.py,sha256=dD_8AmAQb0oKVZHg2w2kSKlvWrG9yaKRbaHTz_kHgjA,73648
22
22
  vision_agent/tools/tools_types.py,sha256=JUOZWGW2q-dlJ85CHr9gvo9KQk_rXyjJhi-iwPNn4eM,2397
23
23
  vision_agent/utils/__init__.py,sha256=7fMgbZiEwbNS0fBOS_hJI5PuEYBblw36zLi_UjUzvj4,244
24
24
  vision_agent/utils/exceptions.py,sha256=booSPSuoULF7OXRr_YbC4dtKt6gM_HyiFQHBuaW86C4,2052
25
- vision_agent/utils/execute.py,sha256=Lb78YX34v2Ydr-Md25a_gylsdRVXBFbE-_dc_z6oHvg,27968
25
+ vision_agent/utils/execute.py,sha256=WX4bYdmJGznnaxEOAKLc7cswUJNPZZCil1OP2xFzpRU,27943
26
26
  vision_agent/utils/image_utils.py,sha256=rm9GfXvD4JrjnqKrP_f2gfq4SzmqYC0IdC1kKwdn6sk,11303
27
27
  vision_agent/utils/sim.py,sha256=ebE9Cs00pVEDI1HMjAzUBk88tQQmc2U-yAzIDinnekU,5572
28
28
  vision_agent/utils/type_defs.py,sha256=BE12s3JNQy36QvauXHjwyeffVh5enfcvd4vTzSwvEZI,1384
29
29
  vision_agent/utils/video.py,sha256=xbMEoRk13l4fHeQlbvMQhLCn8RNndYmsDhUf01TUeR8,4781
30
- vision_agent-0.2.142.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
31
- vision_agent-0.2.142.dist-info/METADATA,sha256=yP7ShheLQ_a50CME1rbSUifRlc4ylqmM6PeIKflW9Ig,13758
32
- vision_agent-0.2.142.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
33
- vision_agent-0.2.142.dist-info/RECORD,,
30
+ vision_agent-0.2.144.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
31
+ vision_agent-0.2.144.dist-info/METADATA,sha256=HcZyYla50SBGHFDstUNElj7524PT64XT5a6_VQV_y6E,13758
32
+ vision_agent-0.2.144.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
33
+ vision_agent-0.2.144.dist-info/RECORD,,