vision-agent 0.2.178__tar.gz → 0.2.180__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.178 → vision_agent-0.2.180}/PKG-INFO +1 -1
  2. {vision_agent-0.2.178 → vision_agent-0.2.180}/pyproject.toml +1 -1
  3. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/__init__.py +1 -0
  4. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/tools.py +41 -2
  5. {vision_agent-0.2.178 → vision_agent-0.2.180}/LICENSE +0 -0
  6. {vision_agent-0.2.178 → vision_agent-0.2.180}/README.md +0 -0
  7. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/__init__.py +0 -0
  8. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/__init__.py +0 -0
  9. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/agent.py +0 -0
  10. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/agent_utils.py +0 -0
  11. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent.py +0 -0
  12. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent_coder.py +0 -0
  13. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent_coder_prompts.py +0 -0
  14. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent_planner.py +0 -0
  15. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent_planner_prompts.py +0 -0
  16. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/agent/vision_agent_prompts.py +0 -0
  17. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/clients/__init__.py +0 -0
  18. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/clients/http.py +0 -0
  19. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/clients/landing_public_api.py +0 -0
  20. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/fonts/__init__.py +0 -0
  21. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/fonts/default_font_ch_en.ttf +0 -0
  22. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/lmm/__init__.py +0 -0
  23. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/lmm/lmm.py +0 -0
  24. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/lmm/types.py +0 -0
  25. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/meta_tools.py +0 -0
  26. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/prompts.py +0 -0
  27. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/tool_utils.py +0 -0
  28. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/tools/tools_types.py +0 -0
  29. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/__init__.py +0 -0
  30. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/exceptions.py +0 -0
  31. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/execute.py +0 -0
  32. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/image_utils.py +0 -0
  33. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/sim.py +0 -0
  34. {vision_agent-0.2.178 → vision_agent-0.2.180}/vision_agent/utils/type_defs.py +0 -0
  35. {vision_agent-0.2.178 → vision_agent-0.2.180}/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.178
3
+ Version: 0.2.180
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.178"
7
+ version = "0.2.180"
8
8
  description = "Toolset for Vision Agent"
9
9
  authors = ["Landing AI <dev@landing.ai>"]
10
10
  readme = "README.md"
@@ -65,6 +65,7 @@ from .tools import (
65
65
  template_match,
66
66
  vit_image_classification,
67
67
  vit_nsfw_classification,
68
+ qwen2_vl_images_vqa,
68
69
  video_temporal_localization,
69
70
  )
70
71
 
@@ -852,6 +852,39 @@ def ixc25_image_vqa(prompt: str, image: np.ndarray) -> str:
852
852
  return cast(str, data["answer"])
853
853
 
854
854
 
855
+ def qwen2_vl_images_vqa(prompt: str, images: List[np.ndarray]) -> str:
856
+ """'qwen2_vl_images_vqa' is a tool that can answer any questions about arbitrary images
857
+ including regular images or images of documents or presentations. It returns text
858
+ as an answer to the question.
859
+
860
+ Parameters:
861
+ prompt (str): The question about the document image
862
+ images (List[np.ndarray]): The reference images used for the question
863
+
864
+ Returns:
865
+ str: A string which is the answer to the given prompt.
866
+
867
+ Example
868
+ -------
869
+ >>> qwen2_vl_images_vqa('Give a summary of the document', images)
870
+ 'The document talks about the history of the United States of America and its...'
871
+ """
872
+ for image in images:
873
+ if image.shape[0] < 1 or image.shape[1] < 1:
874
+ raise ValueError(f"Image is empty, image shape: {image.shape}")
875
+
876
+ files = [("images", numpy_to_bytes(image)) for image in images]
877
+ payload = {
878
+ "prompt": prompt,
879
+ "model": "qwen2vl",
880
+ "function_name": "qwen2_vl_images_vqa",
881
+ }
882
+ data: Dict[str, Any] = send_inference_request(
883
+ payload, "image-to-text", files=files, v2=True
884
+ )
885
+ return cast(str, data)
886
+
887
+
855
888
  def ixc25_video_vqa(prompt: str, frames: List[np.ndarray]) -> str:
856
889
  """'ixc25_video_vqa' is a tool that can answer any questions about arbitrary videos
857
890
  including regular videos or videos of documents or presentations. It returns text
@@ -1937,8 +1970,14 @@ def overlay_bounding_boxes(
1937
1970
  medias_int: List[np.ndarray] = (
1938
1971
  [medias] if isinstance(medias, np.ndarray) else medias
1939
1972
  )
1940
- bbox_int = [bboxes] if isinstance(bboxes[0], dict) else bboxes
1941
- bbox_int = cast(List[List[Dict[str, Any]]], bbox_int)
1973
+ if len(bboxes) == 0:
1974
+ bbox_int: List[List[Dict[str, Any]]] = [[] for _ in medias_int]
1975
+ else:
1976
+ if isinstance(bboxes[0], dict):
1977
+ bbox_int = [cast(List[Dict[str, Any]], bboxes)]
1978
+ else:
1979
+ bbox_int = cast(List[List[Dict[str, Any]]], bboxes)
1980
+
1942
1981
  labels = set([bb["label"] for b in bbox_int for bb in b])
1943
1982
 
1944
1983
  if len(labels) > len(COLORS):
File without changes
File without changes