vision-agent 0.2.138__tar.gz → 0.2.140__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. {vision_agent-0.2.138 → vision_agent-0.2.140}/PKG-INFO +1 -1
  2. {vision_agent-0.2.138 → vision_agent-0.2.140}/pyproject.toml +1 -1
  3. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/vision_agent.py +27 -0
  4. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/meta_tools.py +1 -0
  5. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/tool_utils.py +12 -6
  6. {vision_agent-0.2.138 → vision_agent-0.2.140}/LICENSE +0 -0
  7. {vision_agent-0.2.138 → vision_agent-0.2.140}/README.md +0 -0
  8. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/__init__.py +0 -0
  9. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/__init__.py +0 -0
  10. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/agent.py +0 -0
  11. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/agent_utils.py +0 -0
  12. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/vision_agent_coder.py +0 -0
  13. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/vision_agent_coder_prompts.py +0 -0
  14. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/agent/vision_agent_prompts.py +0 -0
  15. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/clients/__init__.py +0 -0
  16. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/clients/http.py +0 -0
  17. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/clients/landing_public_api.py +0 -0
  18. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/fonts/__init__.py +0 -0
  19. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/fonts/default_font_ch_en.ttf +0 -0
  20. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/lmm/__init__.py +0 -0
  21. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/lmm/lmm.py +0 -0
  22. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/lmm/types.py +0 -0
  23. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/__init__.py +0 -0
  24. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/prompts.py +0 -0
  25. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/tools.py +0 -0
  26. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/tools/tools_types.py +0 -0
  27. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/__init__.py +0 -0
  28. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/exceptions.py +0 -0
  29. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/execute.py +0 -0
  30. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/image_utils.py +0 -0
  31. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/sim.py +0 -0
  32. {vision_agent-0.2.138 → vision_agent-0.2.140}/vision_agent/utils/type_defs.py +0 -0
  33. {vision_agent-0.2.138 → vision_agent-0.2.140}/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.138
3
+ Version: 0.2.140
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.138"
7
+ version = "0.2.140"
8
8
  description = "Toolset for Vision Agent"
9
9
  authors = ["Landing AI <dev@landing.ai>"]
10
10
  readme = "README.md"
@@ -218,6 +218,7 @@ class VisionAgent(Agent):
218
218
  ) as code_interpreter:
219
219
  orig_chat = copy.deepcopy(chat)
220
220
  int_chat = copy.deepcopy(chat)
221
+ last_user_message_content = chat[-1].get("content")
221
222
  media_list = []
222
223
  for chat_i in int_chat:
223
224
  if "media" in chat_i:
@@ -266,6 +267,32 @@ class VisionAgent(Agent):
266
267
  orig_chat.append({"role": "observation", "content": artifacts_loaded})
267
268
  self.streaming_message({"role": "observation", "content": artifacts_loaded})
268
269
 
270
+ if isinstance(last_user_message_content, str):
271
+ user_code_action = parse_execution(last_user_message_content, False)
272
+ if user_code_action is not None:
273
+ user_result, user_obs = run_code_action(
274
+ user_code_action, code_interpreter, str(remote_artifacts_path)
275
+ )
276
+ if self.verbosity >= 1:
277
+ _LOGGER.info(user_obs)
278
+ int_chat.append({"role": "observation", "content": user_obs})
279
+ orig_chat.append(
280
+ {
281
+ "role": "observation",
282
+ "content": user_obs,
283
+ "execution": user_result,
284
+ }
285
+ )
286
+ self.streaming_message(
287
+ {
288
+ "role": "observation",
289
+ "content": user_obs,
290
+ "execution": user_result,
291
+ "finished": True,
292
+ }
293
+ )
294
+ finished = True
295
+
269
296
  while not finished and iterations < self.max_iterations:
270
297
  response = run_conversation(self.agent, int_chat)
271
298
  if self.verbosity >= 1:
@@ -250,6 +250,7 @@ def edit_code_artifact(
250
250
 
251
251
  total_lines = len(artifacts[name].splitlines())
252
252
  if start < 0 or end < 0 or start > end or end > total_lines:
253
+ print("[Invalid line range]")
253
254
  return "[Invalid line range]"
254
255
  if start == end:
255
256
  end += 1
@@ -208,19 +208,25 @@ def _call_post(
208
208
  if files:
209
209
  files_in_b64 = [(file[0], b64encode(file[1]).decode("utf-8")) for file in files]
210
210
  try:
211
+ if files is not None:
212
+ response = session.post(url, data=payload, files=files)
213
+ else:
214
+ response = session.post(url, json=payload)
215
+
216
+ # make sure function_name is in the payload so we can display it
217
+ tool_call_trace_payload = (
218
+ payload
219
+ if "function_name" in payload
220
+ else {**payload, **{"function_name": function_name}}
221
+ )
211
222
  tool_call_trace = ToolCallTrace(
212
223
  endpoint_url=url,
213
- request=payload,
224
+ request=tool_call_trace_payload,
214
225
  response={},
215
226
  error=None,
216
227
  files=files_in_b64,
217
228
  )
218
229
 
219
- if files is not None:
220
- response = session.post(url, data=payload, files=files)
221
- else:
222
- response = session.post(url, json=payload)
223
-
224
230
  if response.status_code != 200:
225
231
  tool_call_trace.error = Error(
226
232
  name="RemoteToolCallFailed",
File without changes
File without changes