vision-agent 0.2.193__py3-none-any.whl → 0.2.196__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/utils/sim.py CHANGED
@@ -1,5 +1,8 @@
1
1
  import os
2
+ import platform
3
+ import shutil
2
4
  from functools import lru_cache
5
+ from importlib import resources
3
6
  from pathlib import Path
4
7
  from typing import Callable, Dict, List, Optional, Sequence, Union
5
8
 
@@ -18,6 +21,23 @@ def get_embedding(
18
21
  return emb_call([text])
19
22
 
20
23
 
24
+ def load_cached_sim(
25
+ tools_df: pd.DataFrame, sim_key: str = "desc", cached_dir: str = ".sim_tools"
26
+ ) -> "Sim":
27
+ cached_dir_full_path = str(resources.files("vision_agent") / cached_dir)
28
+ if os.path.exists(cached_dir_full_path):
29
+ if tools_df is not None:
30
+ if Sim.check_load(cached_dir_full_path, tools_df):
31
+ # don't pass sim_key to loaded Sim object or else it will re-calculate embeddings
32
+ return Sim.load(cached_dir_full_path)
33
+ if os.path.exists(cached_dir_full_path):
34
+ shutil.rmtree(cached_dir_full_path)
35
+
36
+ sim = Sim(tools_df, sim_key=sim_key)
37
+ sim.save(cached_dir_full_path)
38
+ return sim
39
+
40
+
21
41
  class Sim:
22
42
  def __init__(
23
43
  self,
@@ -33,33 +53,59 @@ class Sim:
33
53
  df: pd.DataFrame: The dataframe to use for similarity.
34
54
  sim_key: Optional[str]: The column name that you want to use to construct
35
55
  the embeddings.
36
- model: str: The model to use for embeddings.
56
+ api_key: Optional[str]: The OpenAI API key to use for embeddings.
57
+ model: str: The model to use for embeddingshttps://github.com/landing-ai/vision-agent/pull/280.
37
58
  """
38
59
  self.df = df
39
- client = OpenAI(api_key=api_key)
40
- self.emb_call = (
41
- lambda text: client.embeddings.create(input=text, model=model)
42
- .data[0]
43
- .embedding
44
- )
60
+ self.client = OpenAI(api_key=api_key)
45
61
  self.model = model
46
62
  if "embs" not in df.columns and sim_key is None:
47
63
  raise ValueError("key is required if no column 'embs' is present.")
48
64
 
49
65
  if sim_key is not None:
50
66
  self.df["embs"] = self.df[sim_key].apply(
51
- lambda x: get_embedding(self.emb_call, x)
67
+ lambda x: get_embedding(
68
+ lambda text: self.client.embeddings.create(
69
+ input=text, model=self.model
70
+ )
71
+ .data[0]
72
+ .embedding,
73
+ x,
74
+ )
52
75
  )
53
76
 
54
- def save(self, sim_file: Union[str, Path]) -> None:
55
- sim_file = Path(sim_file)
56
- sim_file.mkdir(parents=True, exist_ok=True)
77
+ def save(self, save_dir: Union[str, Path]) -> None:
78
+ save_dir = Path(save_dir)
79
+ save_dir.mkdir(parents=True, exist_ok=True)
57
80
 
58
81
  df = self.df.copy()
59
82
  embs = np.array(df.embs.tolist())
60
- np.save(sim_file / "embs.npy", embs)
83
+ np.save(save_dir / "embs.npy", embs)
61
84
  df = df.drop("embs", axis=1)
62
- df.to_csv(sim_file / "df.csv", index=False)
85
+ df.to_csv(save_dir / "df.csv", index=False)
86
+
87
+ @staticmethod
88
+ def load(
89
+ load_dir: Union[str, Path],
90
+ api_key: Optional[str] = None,
91
+ model: str = "text-embedding-3-small",
92
+ ) -> "Sim":
93
+ load_dir = Path(load_dir)
94
+ df = pd.read_csv(load_dir / "df.csv")
95
+ embs = np.load(load_dir / "embs.npy")
96
+ df["embs"] = list(embs)
97
+ return Sim(df, api_key=api_key, model=model)
98
+
99
+ @staticmethod
100
+ def check_load(
101
+ load_dir: Union[str, Path],
102
+ df: pd.DataFrame,
103
+ ) -> bool:
104
+ load_dir = Path(load_dir)
105
+ df_load = pd.read_csv(load_dir / "df.csv")
106
+ if platform.system() == "Windows":
107
+ df_load["doc"] = df_load["doc"].apply(lambda x: x.replace("\r", ""))
108
+ return df.equals(df_load) # type: ignore
63
109
 
64
110
  @lru_cache(maxsize=256)
65
111
  def top_k(
@@ -76,7 +122,12 @@ class Sim:
76
122
  Sequence[Dict]: The top k most similar items.
77
123
  """
78
124
 
79
- embedding = get_embedding(self.emb_call, query)
125
+ embedding = get_embedding(
126
+ lambda text: self.client.embeddings.create(input=text, model=self.model)
127
+ .data[0]
128
+ .embedding,
129
+ query,
130
+ )
80
131
  self.df["sim"] = self.df.embs.apply(lambda x: 1 - cosine(x, embedding))
81
132
  res = self.df.sort_values("sim", ascending=False).head(k)
82
133
  if thresh is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vision-agent
3
- Version: 0.2.193
3
+ Version: 0.2.196
4
4
  Summary: Toolset for Vision Agent
5
5
  Author: Landing AI
6
6
  Author-email: dev@landing.ai
@@ -17,6 +17,7 @@ Requires-Dist: flake8 (>=7.0.0,<8.0.0)
17
17
  Requires-Dist: ipykernel (>=6.29.4,<7.0.0)
18
18
  Requires-Dist: langsmith (>=0.1.58,<0.2.0)
19
19
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
20
+ Requires-Dist: matplotlib (>=3.9.2,<4.0.0)
20
21
  Requires-Dist: nbclient (>=0.10.0,<0.11.0)
21
22
  Requires-Dist: nbformat (>=5.10.4,<6.0.0)
22
23
  Requires-Dist: numpy (>=1.21.0,<2.0.0)
@@ -0,0 +1,42 @@
1
+ vision_agent/.sim_tools/df.csv,sha256=IPYWrI8W8r7zs2-QRjGsAzlg1O3wqngGRSyz9F-BOpo,34008
2
+ vision_agent/.sim_tools/embs.npy,sha256=ItJgcBpT0--0HeZjUV30INzFXNQh-12HoUVevNY38dc,356480
3
+ vision_agent/__init__.py,sha256=EAb4-f9iyuEYkBrX4ag1syM8Syx8118_t0R6_C34M9w,57
4
+ vision_agent/agent/__init__.py,sha256=j4W3zHXKE96o93ZziY62ZBWgicLYEink1rIU3gPsfwM,548
5
+ vision_agent/agent/agent.py,sha256=2cjIOxEuSJrqbfPXYoV0qER5ihXsPFCoEFJa4jpqan0,597
6
+ vision_agent/agent/agent_utils.py,sha256=jDkvanBsT_ZH7MnPWP_Wa_ToPOy4hdy4kTw9FZytwwo,12765
7
+ vision_agent/agent/vision_agent.py,sha256=rr1P9iTbr7OsjgMYWCeIxQYI4cLwPWia3NIMJNi-9Yo,26110
8
+ vision_agent/agent/vision_agent_coder.py,sha256=waCmw_NTgsy9G-UqlRZFhsFJJVuWVrjxVnShe4Xp_lI,27743
9
+ vision_agent/agent/vision_agent_coder_prompts.py,sha256=gPLVXQMNSzYnQYpNm0wlH_5FPkOTaFDV24bqzK3jQ40,12221
10
+ vision_agent/agent/vision_agent_coder_prompts_v2.py,sha256=9v5HwbNidSzYUEFl6ZMniWWOmyLITM_moWLtKVaTen8,4845
11
+ vision_agent/agent/vision_agent_coder_v2.py,sha256=LVV5Ij-2s03Cj27VJZI11dMKios8ALYZ4_mZTpeMDJU,10863
12
+ vision_agent/agent/vision_agent_planner.py,sha256=F_5opnc0XmQmNH40rs2T7DFrai4CC6aDYe02Z8e93AM,18875
13
+ vision_agent/agent/vision_agent_planner_prompts.py,sha256=Y3jz9HRf8fz9NLUseN7cTgZqewP0RazxR7vw1sPhcn0,6691
14
+ vision_agent/agent/vision_agent_planner_prompts_v2.py,sha256=PrihfrkxbeVQNzR2Vu3UwG_PRjFsjoC9IQko3WfUqPM,33143
15
+ vision_agent/agent/vision_agent_planner_v2.py,sha256=11pCfaXXsivV9DKWI7nDcLf5dJV3IyHX0IR4Zn7UC9E,14288
16
+ vision_agent/agent/vision_agent_prompts.py,sha256=4329ll0kqCznRALIMl-rlKWGjN92p3bcRrz8R-cO744,13748
17
+ vision_agent/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ vision_agent/clients/http.py,sha256=k883i6M_4nl7zwwHSI-yP5sAgQZIDPM1nrKD6YFJ3Xs,2009
19
+ vision_agent/clients/landing_public_api.py,sha256=lU2ev6E8NICmR8DMUljuGcVFy5VNJQ4WQkWC8WnnJEc,1503
20
+ vision_agent/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ vision_agent/fonts/default_font_ch_en.ttf,sha256=1YM0Z3XqLDjSNbF7ihQFSAIUdjF9m1rtHiNC_6QosTE,1594400
22
+ vision_agent/lmm/__init__.py,sha256=jyY1sJb_tYKg5-Wzs3p1lvwFkc-aUNZfMcLy3TOC4Zg,100
23
+ vision_agent/lmm/lmm.py,sha256=x_nIyDNDZwq4-pfjnJTmcyyJZ2_B7TjkA5jZp88YVO8,17103
24
+ vision_agent/lmm/types.py,sha256=ZEXR_ptBL0ZwDMTDYkgxUCmSZFmBYPQd2jreNzr_8UY,221
25
+ vision_agent/tools/__init__.py,sha256=xuNt5e4syQH28Vr6EdjLmO9ni9i00yav9yqcPMUx1oo,2878
26
+ vision_agent/tools/meta_tools.py,sha256=by7TIbH7lsLIayX_Pe2mS1iw8aeLn2T8yqAo8SkB9Kg,32074
27
+ vision_agent/tools/planner_tools.py,sha256=FROahw_6Taqvytv6pOjCHUEypOfjsi_f8Vo1c5vz6Mw,8823
28
+ vision_agent/tools/prompts.py,sha256=V1z4YJLXZuUl_iZ5rY0M5hHc_2tmMEUKr0WocXKGt4E,1430
29
+ vision_agent/tools/tool_utils.py,sha256=GDGOmBCo4UfYz-DJ-olREJHPsqs5mzHu0YXiAnpNE8E,10179
30
+ vision_agent/tools/tools.py,sha256=Q8QSuOUk0df_XueU856vi21GOolp2TB3_f0WvMayjIA,87835
31
+ vision_agent/tools/tools_types.py,sha256=8hYf2OZhI58gvf65KGaeGkt4EQ56nwLFqIQDPHioOBc,2339
32
+ vision_agent/utils/__init__.py,sha256=7fMgbZiEwbNS0fBOS_hJI5PuEYBblw36zLi_UjUzvj4,244
33
+ vision_agent/utils/exceptions.py,sha256=booSPSuoULF7OXRr_YbC4dtKt6gM_HyiFQHBuaW86C4,2052
34
+ vision_agent/utils/execute.py,sha256=2sIQn45llOENMyrKu3TPINVRLLbOvvZ6SVHFCB9MQUo,28028
35
+ vision_agent/utils/image_utils.py,sha256=rRWcxKggPXIRXIY_XT9rZt30ECDRq8zq7FDeXRDqQWs,11679
36
+ vision_agent/utils/sim.py,sha256=NZc9QGD6BTY5O29NVbHH7oxDePL_QMnylT1lYcDUn1Y,7437
37
+ vision_agent/utils/type_defs.py,sha256=BE12s3JNQy36QvauXHjwyeffVh5enfcvd4vTzSwvEZI,1384
38
+ vision_agent/utils/video.py,sha256=tRcGp4vEnaDycigL1hBO9k0FBPtDH35fCQciVr9GqYI,6013
39
+ vision_agent-0.2.196.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
40
+ vision_agent-0.2.196.dist-info/METADATA,sha256=rwIA7lIAgRKNYsAbqwJkEgR_qMi23sJwEm0LCYYM-Gw,18110
41
+ vision_agent-0.2.196.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
42
+ vision_agent-0.2.196.dist-info/RECORD,,
@@ -1,35 +0,0 @@
1
- vision_agent/__init__.py,sha256=EAb4-f9iyuEYkBrX4ag1syM8Syx8118_t0R6_C34M9w,57
2
- vision_agent/agent/__init__.py,sha256=RRMPhH8mgm_pCtEKiVFSjJyDi4lCr4F7k05AhK01xlM,436
3
- vision_agent/agent/agent.py,sha256=2cjIOxEuSJrqbfPXYoV0qER5ihXsPFCoEFJa4jpqan0,597
4
- vision_agent/agent/agent_utils.py,sha256=WYJF11PfKXlRMPnogGz3s7c2TlWoxoGzuLiIptVYE1s,5524
5
- vision_agent/agent/vision_agent.py,sha256=rr1P9iTbr7OsjgMYWCeIxQYI4cLwPWia3NIMJNi-9Yo,26110
6
- vision_agent/agent/vision_agent_coder.py,sha256=7Ko1c41dvdDbSP_Yw2yz_SlE3sO6hhlpf_oCjW0we2w,31749
7
- vision_agent/agent/vision_agent_coder_prompts.py,sha256=gPLVXQMNSzYnQYpNm0wlH_5FPkOTaFDV24bqzK3jQ40,12221
8
- vision_agent/agent/vision_agent_planner.py,sha256=Hy4vKiae7zIIKVPgLetGArbsjGRNVOXlxY9xhFgW-A0,18871
9
- vision_agent/agent/vision_agent_planner_prompts.py,sha256=JDARUzko2HZdxkBtcy6wuP9DCCmbqhK_gnVgrjr6l1k,6691
10
- vision_agent/agent/vision_agent_prompts.py,sha256=4329ll0kqCznRALIMl-rlKWGjN92p3bcRrz8R-cO744,13748
11
- vision_agent/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- vision_agent/clients/http.py,sha256=k883i6M_4nl7zwwHSI-yP5sAgQZIDPM1nrKD6YFJ3Xs,2009
13
- vision_agent/clients/landing_public_api.py,sha256=lU2ev6E8NICmR8DMUljuGcVFy5VNJQ4WQkWC8WnnJEc,1503
14
- vision_agent/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- vision_agent/fonts/default_font_ch_en.ttf,sha256=1YM0Z3XqLDjSNbF7ihQFSAIUdjF9m1rtHiNC_6QosTE,1594400
16
- vision_agent/lmm/__init__.py,sha256=jyY1sJb_tYKg5-Wzs3p1lvwFkc-aUNZfMcLy3TOC4Zg,100
17
- vision_agent/lmm/lmm.py,sha256=B5ClgwvbybVCWkf9opDMLjTtJZemUU4KUkQoRxGh43I,16787
18
- vision_agent/lmm/types.py,sha256=ZEXR_ptBL0ZwDMTDYkgxUCmSZFmBYPQd2jreNzr_8UY,221
19
- vision_agent/tools/__init__.py,sha256=UrpGFB1ACOZZCAyj8vNw0IHhKm9wGp0qHOtci2cqAMU,2825
20
- vision_agent/tools/meta_tools.py,sha256=by7TIbH7lsLIayX_Pe2mS1iw8aeLn2T8yqAo8SkB9Kg,32074
21
- vision_agent/tools/prompts.py,sha256=V1z4YJLXZuUl_iZ5rY0M5hHc_2tmMEUKr0WocXKGt4E,1430
22
- vision_agent/tools/tool_utils.py,sha256=VPGqGJ2ZYEJA6AW7K9X7hQv6vRlMtAQcybE4izdToCw,8196
23
- vision_agent/tools/tools.py,sha256=gV9z8jE38JVXhIMCwmBZU1TKM16KlwAk48ZBAV0t1w8,85728
24
- vision_agent/tools/tools_types.py,sha256=8hYf2OZhI58gvf65KGaeGkt4EQ56nwLFqIQDPHioOBc,2339
25
- vision_agent/utils/__init__.py,sha256=7fMgbZiEwbNS0fBOS_hJI5PuEYBblw36zLi_UjUzvj4,244
26
- vision_agent/utils/exceptions.py,sha256=booSPSuoULF7OXRr_YbC4dtKt6gM_HyiFQHBuaW86C4,2052
27
- vision_agent/utils/execute.py,sha256=2sIQn45llOENMyrKu3TPINVRLLbOvvZ6SVHFCB9MQUo,28028
28
- vision_agent/utils/image_utils.py,sha256=rm9GfXvD4JrjnqKrP_f2gfq4SzmqYC0IdC1kKwdn6sk,11303
29
- vision_agent/utils/sim.py,sha256=ZuSS07TUXFGjipmiQoY8TKRmSes7XXCdtU9PI8PC1sw,5609
30
- vision_agent/utils/type_defs.py,sha256=BE12s3JNQy36QvauXHjwyeffVh5enfcvd4vTzSwvEZI,1384
31
- vision_agent/utils/video.py,sha256=tRcGp4vEnaDycigL1hBO9k0FBPtDH35fCQciVr9GqYI,6013
32
- vision_agent-0.2.193.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
33
- vision_agent-0.2.193.dist-info/METADATA,sha256=uDs9o-Lu4tU1jftsh-XQlcRJXyunc6VyPEoVAArGC7c,18067
34
- vision_agent-0.2.193.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
35
- vision_agent-0.2.193.dist-info/RECORD,,