vision-agent 0.2.143__py3-none-any.whl → 0.2.144__py3-none-any.whl
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/agent/vision_agent.py +62 -30
- vision_agent/tools/meta_tools.py +1 -0
- {vision_agent-0.2.143.dist-info → vision_agent-0.2.144.dist-info}/METADATA +1 -1
- {vision_agent-0.2.143.dist-info → vision_agent-0.2.144.dist-info}/RECORD +6 -6
- {vision_agent-0.2.143.dist-info → vision_agent-0.2.144.dist-info}/LICENSE +0 -0
- {vision_agent-0.2.143.dist-info → vision_agent-0.2.144.dist-info}/WHEEL +0 -0
@@ -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
|
-
|
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
|
-
|
282
|
-
|
283
|
-
|
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
|
-
{
|
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)
|
vision_agent/tools/meta_tools.py
CHANGED
@@ -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=
|
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,7 +15,7 @@ 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=
|
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
|
@@ -27,7 +27,7 @@ vision_agent/utils/image_utils.py,sha256=rm9GfXvD4JrjnqKrP_f2gfq4SzmqYC0IdC1kKwd
|
|
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.
|
31
|
-
vision_agent-0.2.
|
32
|
-
vision_agent-0.2.
|
33
|
-
vision_agent-0.2.
|
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,,
|
File without changes
|
File without changes
|