vision-agent 0.2.52__tar.gz → 0.2.54__tar.gz

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.
Files changed (36) hide show
  1. {vision_agent-0.2.52 → vision_agent-0.2.54}/PKG-INFO +10 -9
  2. {vision_agent-0.2.52 → vision_agent-0.2.54}/README.md +9 -8
  3. {vision_agent-0.2.52 → vision_agent-0.2.54}/pyproject.toml +1 -1
  4. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/llm/llm.py +1 -1
  5. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/lmm/lmm.py +7 -2
  6. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/utils/__init__.py +1 -1
  7. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/utils/sim.py +39 -3
  8. {vision_agent-0.2.52 → vision_agent-0.2.54}/LICENSE +0 -0
  9. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/__init__.py +0 -0
  10. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/__init__.py +0 -0
  11. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/agent.py +0 -0
  12. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/agent_coder.py +0 -0
  13. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/agent_coder_prompts.py +0 -0
  14. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/data_interpreter.py +0 -0
  15. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/data_interpreter_prompts.py +0 -0
  16. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/easytool.py +0 -0
  17. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/easytool_prompts.py +0 -0
  18. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/easytool_v2.py +0 -0
  19. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/easytool_v2_prompts.py +0 -0
  20. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/reflexion.py +0 -0
  21. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/reflexion_prompts.py +0 -0
  22. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/vision_agent.py +0 -0
  23. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/agent/vision_agent_prompts.py +0 -0
  24. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/fonts/__init__.py +0 -0
  25. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/fonts/default_font_ch_en.ttf +0 -0
  26. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/llm/__init__.py +0 -0
  27. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/lmm/__init__.py +0 -0
  28. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/tools/__init__.py +0 -0
  29. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/tools/easytool_tools.py +0 -0
  30. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/tools/prompts.py +0 -0
  31. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/tools/tool_utils.py +0 -0
  32. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/tools/tools.py +0 -0
  33. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/utils/execute.py +0 -0
  34. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/utils/image_utils.py +0 -0
  35. {vision_agent-0.2.52 → vision_agent-0.2.54}/vision_agent/utils/type_defs.py +0 -0
  36. {vision_agent-0.2.52 → vision_agent-0.2.54}/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.52
3
+ Version: 0.2.54
4
4
  Summary: Toolset for Vision Agent
5
5
  Author: Landing AI
6
6
  Author-email: dev@landing.ai
@@ -195,13 +195,14 @@ export AZURE_OPENAI_ENDPOINT="your-endpoint"
195
195
  You can then run Vision Agent using the Azure OpenAI models:
196
196
 
197
197
  ```python
198
- >>> import vision_agent as va
199
- >>> agent = va.agent.VisionAgent(
200
- >>> planner=va.llm.AzureOpenAILLM(),
201
- >>> coder=va.lmm.AzureOpenAILMM(),
202
- >>> tester=va.lmm.AzureOpenAILMM(),
203
- >>> debugger=va.lmm.AzureOpenAILMM(),
204
- >>> )
198
+ import vision_agent as va
199
+ import vision_agent.tools as T
200
+ agent = va.agent.VisionAgent(
201
+ planner=va.llm.AzureOpenAILLM(),
202
+ coder=va.lmm.AzureOpenAILLM(),
203
+ tester=va.lmm.AzureOpenAILLM(),
204
+ debugger=va.lmm.AzureOpenAILLM(),
205
+ tool_recommender=va.utils.AzureSim(T.TOOLS_DF, sim_key="desc"),
206
+ )
205
207
  ```
206
208
 
207
-
@@ -159,12 +159,13 @@ export AZURE_OPENAI_ENDPOINT="your-endpoint"
159
159
  You can then run Vision Agent using the Azure OpenAI models:
160
160
 
161
161
  ```python
162
- >>> import vision_agent as va
163
- >>> agent = va.agent.VisionAgent(
164
- >>> planner=va.llm.AzureOpenAILLM(),
165
- >>> coder=va.lmm.AzureOpenAILMM(),
166
- >>> tester=va.lmm.AzureOpenAILMM(),
167
- >>> debugger=va.lmm.AzureOpenAILMM(),
168
- >>> )
162
+ import vision_agent as va
163
+ import vision_agent.tools as T
164
+ agent = va.agent.VisionAgent(
165
+ planner=va.llm.AzureOpenAILLM(),
166
+ coder=va.lmm.AzureOpenAILLM(),
167
+ tester=va.lmm.AzureOpenAILLM(),
168
+ debugger=va.lmm.AzureOpenAILLM(),
169
+ tool_recommender=va.utils.AzureSim(T.TOOLS_DF, sim_key="desc"),
170
+ )
169
171
  ```
170
-
@@ -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.52"
7
+ version = "0.2.54"
8
8
  description = "Toolset for Vision Agent"
9
9
  authors = ["Landing AI <dev@landing.ai>"]
10
10
  readme = "README.md"
@@ -148,7 +148,7 @@ class OpenAILLM(LLM):
148
148
  class AzureOpenAILLM(OpenAILLM):
149
149
  def __init__(
150
150
  self,
151
- model_name: str = "gpt-4-turbo-preview",
151
+ model_name: str = "gpt-4o",
152
152
  api_key: Optional[str] = None,
153
153
  api_version: str = "2024-02-01",
154
154
  azure_endpoint: Optional[str] = None,
@@ -286,11 +286,12 @@ class OpenAILMM(LMM):
286
286
  class AzureOpenAILMM(OpenAILMM):
287
287
  def __init__(
288
288
  self,
289
- model_name: str = "gpt-4-vision-preview",
289
+ model_name: str = "gpt-4o",
290
290
  api_key: Optional[str] = None,
291
291
  api_version: str = "2024-02-01",
292
292
  azure_endpoint: Optional[str] = None,
293
293
  max_tokens: int = 1024,
294
+ json_mode: bool = False,
294
295
  **kwargs: Any,
295
296
  ):
296
297
  if not api_key:
@@ -307,7 +308,11 @@ class AzureOpenAILMM(OpenAILMM):
307
308
  api_key=api_key, api_version=api_version, azure_endpoint=azure_endpoint
308
309
  )
309
310
  self.model_name = model_name
310
- self.max_tokens = max_tokens
311
+
312
+ if "max_tokens" not in kwargs:
313
+ kwargs["max_tokens"] = max_tokens
314
+ if json_mode:
315
+ kwargs["response_format"] = {"type": "json_object"}
311
316
  self.kwargs = kwargs
312
317
 
313
318
 
@@ -6,5 +6,5 @@ from .execute import (
6
6
  Logs,
7
7
  Result,
8
8
  )
9
- from .sim import Sim, load_sim, merge_sim
9
+ from .sim import AzureSim, Sim, load_sim, merge_sim
10
10
  from .video import extract_frames_from_video
@@ -1,9 +1,10 @@
1
+ import os
1
2
  from pathlib import Path
2
3
  from typing import Dict, List, Optional, Sequence, Union
3
4
 
4
5
  import numpy as np
5
6
  import pandas as pd
6
- from openai import Client
7
+ from openai import AzureOpenAI, Client, OpenAI
7
8
  from scipy.spatial.distance import cosine # type: ignore
8
9
 
9
10
 
@@ -33,9 +34,9 @@ class Sim:
33
34
  """
34
35
  self.df = df
35
36
  if not api_key:
36
- self.client = Client()
37
+ self.client = OpenAI()
37
38
  else:
38
- self.client = Client(api_key=api_key)
39
+ self.client = OpenAI(api_key=api_key)
39
40
 
40
41
  self.model = model
41
42
  if "embs" not in df.columns and sim_key is None:
@@ -78,6 +79,41 @@ class Sim:
78
79
  return res[[c for c in res.columns if c != "embs"]].to_dict(orient="records")
79
80
 
80
81
 
82
+ class AzureSim(Sim):
83
+ def __init__(
84
+ self,
85
+ df: pd.DataFrame,
86
+ sim_key: Optional[str] = None,
87
+ api_key: Optional[str] = None,
88
+ api_version: str = "2024-02-01",
89
+ azure_endpoint: Optional[str] = None,
90
+ model: str = "text-embedding-3-small",
91
+ ) -> None:
92
+ if not api_key:
93
+ api_key = os.getenv("AZURE_OPENAI_API_KEY")
94
+ if not azure_endpoint:
95
+ azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
96
+
97
+ if not api_key:
98
+ raise ValueError("Azure OpenAI API key is required.")
99
+ if not azure_endpoint:
100
+ raise ValueError("Azure OpenAI endpoint is required.")
101
+
102
+ self.df = df
103
+ self.client = AzureOpenAI(
104
+ api_key=api_key, api_version=api_version, azure_endpoint=azure_endpoint
105
+ )
106
+
107
+ self.model = model
108
+ if "embs" not in df.columns and sim_key is None:
109
+ raise ValueError("key is required if no column 'embs' is present.")
110
+
111
+ if sim_key is not None:
112
+ self.df["embs"] = self.df[sim_key].apply(
113
+ lambda x: get_embedding(self.client, x, model=self.model)
114
+ )
115
+
116
+
81
117
  def merge_sim(sim1: Sim, sim2: Sim) -> Sim:
82
118
  return Sim(pd.concat([sim1.df, sim2.df], ignore_index=True))
83
119
 
File without changes