vision-agent 0.2.90__py3-none-any.whl → 0.2.92__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/__init__.py +2 -1
- vision_agent/agent/agent.py +1 -1
- vision_agent/agent/agent_utils.py +43 -0
- vision_agent/agent/vision_agent.py +116 -824
- vision_agent/agent/vision_agent_coder.py +897 -0
- vision_agent/agent/vision_agent_coder_prompts.py +328 -0
- vision_agent/agent/vision_agent_prompts.py +89 -302
- vision_agent/lmm/__init__.py +2 -1
- vision_agent/lmm/lmm.py +3 -5
- vision_agent/lmm/types.py +5 -0
- vision_agent/tools/__init__.py +1 -0
- vision_agent/tools/meta_tools.py +402 -0
- vision_agent/tools/tool_utils.py +48 -2
- vision_agent/tools/tools.py +7 -49
- vision_agent/utils/execute.py +52 -76
- vision_agent/utils/image_utils.py +1 -1
- vision_agent/utils/type_defs.py +1 -1
- {vision_agent-0.2.90.dist-info → vision_agent-0.2.92.dist-info}/METADATA +42 -12
- vision_agent-0.2.92.dist-info/RECORD +29 -0
- vision_agent-0.2.90.dist-info/RECORD +0 -24
- {vision_agent-0.2.90.dist-info → vision_agent-0.2.92.dist-info}/LICENSE +0 -0
- {vision_agent-0.2.90.dist-info → vision_agent-0.2.92.dist-info}/WHEEL +0 -0
vision_agent/utils/execute.py
CHANGED
@@ -40,9 +40,7 @@ _SESSION_TIMEOUT = 600 # 10 minutes
|
|
40
40
|
|
41
41
|
|
42
42
|
class MimeType(str, Enum):
|
43
|
-
"""
|
44
|
-
Represents a MIME type.
|
45
|
-
"""
|
43
|
+
"""Represents a MIME type."""
|
46
44
|
|
47
45
|
TEXT_PLAIN = "text/plain"
|
48
46
|
TEXT_HTML = "text/html"
|
@@ -58,7 +56,9 @@ class MimeType(str, Enum):
|
|
58
56
|
|
59
57
|
|
60
58
|
class FileSerializer:
|
61
|
-
"""Adaptor class that allows IPython.display.display() to serialize a file to a
|
59
|
+
"""Adaptor class that allows IPython.display.display() to serialize a file to a
|
60
|
+
base64 string representation.
|
61
|
+
"""
|
62
62
|
|
63
63
|
def __init__(self, file_uri: str):
|
64
64
|
self.video_uri = file_uri
|
@@ -76,13 +76,15 @@ class FileSerializer:
|
|
76
76
|
|
77
77
|
|
78
78
|
class Result:
|
79
|
-
"""
|
80
|
-
|
81
|
-
|
79
|
+
"""Represents the data to be displayed as a result of executing a cell in a Jupyter
|
80
|
+
notebook. The result is similar to the structure returned by ipython kernel:
|
81
|
+
https://ipython.readthedocs.io/en/stable/development/execution.html#execution-semantics
|
82
82
|
|
83
|
-
The result can contain multiple types of data, such as text, images, plots, etc.
|
84
|
-
as a string, and the result can contain multiple
|
85
|
-
|
83
|
+
The result can contain multiple types of data, such as text, images, plots, etc.
|
84
|
+
Each type of data is represented as a string, and the result can contain multiple
|
85
|
+
types of data. The display calls don't have to have text representation, for the
|
86
|
+
actual result the representation is always present for the result, the other
|
87
|
+
representations are always optional.
|
86
88
|
|
87
89
|
The class also provides methods to display the data in a Jupyter notebook.
|
88
90
|
"""
|
@@ -143,62 +145,43 @@ class Result:
|
|
143
145
|
return str(self.raw)
|
144
146
|
|
145
147
|
def _repr_html_(self) -> Optional[str]:
|
146
|
-
"""
|
147
|
-
Returns the HTML representation of the data.
|
148
|
-
"""
|
148
|
+
"""Returns the HTML representation of the data."""
|
149
149
|
return self.html
|
150
150
|
|
151
151
|
def _repr_markdown_(self) -> Optional[str]:
|
152
|
-
"""
|
153
|
-
Returns the Markdown representation of the data.
|
154
|
-
"""
|
152
|
+
"""Returns the Markdown representation of the data."""
|
155
153
|
return self.markdown
|
156
154
|
|
157
155
|
def _repr_svg_(self) -> Optional[str]:
|
158
|
-
"""
|
159
|
-
Returns the SVG representation of the data.
|
160
|
-
"""
|
156
|
+
"""Returns the SVG representation of the data."""
|
161
157
|
return self.svg
|
162
158
|
|
163
159
|
def _repr_png_(self) -> Optional[str]:
|
164
|
-
"""
|
165
|
-
Returns the base64 representation of the PNG data.
|
166
|
-
"""
|
160
|
+
"""Returns the base64 representation of the PNG data."""
|
167
161
|
return self.png
|
168
162
|
|
169
163
|
def _repr_jpeg_(self) -> Optional[str]:
|
170
|
-
"""
|
171
|
-
Returns the base64 representation of the JPEG data.
|
172
|
-
"""
|
164
|
+
"""Returns the base64 representation of the JPEG data."""
|
173
165
|
return self.jpeg
|
174
166
|
|
175
167
|
def _repr_pdf_(self) -> Optional[str]:
|
176
|
-
"""
|
177
|
-
Returns the PDF representation of the data.
|
178
|
-
"""
|
168
|
+
"""Returns the PDF representation of the data."""
|
179
169
|
return self.pdf
|
180
170
|
|
181
171
|
def _repr_latex_(self) -> Optional[str]:
|
182
|
-
"""
|
183
|
-
Returns the LaTeX representation of the data.
|
184
|
-
"""
|
172
|
+
"""Returns the LaTeX representation of the data."""
|
185
173
|
return self.latex
|
186
174
|
|
187
175
|
def _repr_json_(self) -> Optional[dict]:
|
188
|
-
"""
|
189
|
-
Returns the JSON representation of the data.
|
190
|
-
"""
|
176
|
+
"""Returns the JSON representation of the data."""
|
191
177
|
return self.json
|
192
178
|
|
193
179
|
def _repr_javascript_(self) -> Optional[str]:
|
194
|
-
"""
|
195
|
-
Returns the JavaScript representation of the data.
|
196
|
-
"""
|
180
|
+
"""Returns the JavaScript representation of the data."""
|
197
181
|
return self.javascript
|
198
182
|
|
199
183
|
def formats(self) -> Iterable[str]:
|
200
|
-
"""
|
201
|
-
Returns all available formats of the result.
|
184
|
+
"""Returns all available formats of the result.
|
202
185
|
|
203
186
|
:return: All available formats of the result in MIME types.
|
204
187
|
"""
|
@@ -239,8 +222,8 @@ class Result:
|
|
239
222
|
|
240
223
|
|
241
224
|
class Logs(BaseModel):
|
242
|
-
"""
|
243
|
-
|
225
|
+
"""Data printed to stdout and stderr during execution, usually by print statements,
|
226
|
+
logs, warnings, subprocesses, etc.
|
244
227
|
"""
|
245
228
|
|
246
229
|
stdout: List[str] = []
|
@@ -257,9 +240,8 @@ class Logs(BaseModel):
|
|
257
240
|
|
258
241
|
|
259
242
|
class Error(BaseModel):
|
260
|
-
"""
|
261
|
-
|
262
|
-
The error contains the name of the error, the value of the error, and the traceback.
|
243
|
+
"""Represents an error that occurred during the execution of a cell. The error
|
244
|
+
contains the name of the error, the value of the error, and the traceback.
|
263
245
|
"""
|
264
246
|
|
265
247
|
name: str
|
@@ -290,9 +272,7 @@ class Error(BaseModel):
|
|
290
272
|
|
291
273
|
|
292
274
|
class Execution(BaseModel):
|
293
|
-
"""
|
294
|
-
Represents the result of a cell execution.
|
295
|
-
"""
|
275
|
+
"""Represents the result of a cell execution."""
|
296
276
|
|
297
277
|
class Config:
|
298
278
|
arbitrary_types_allowed = True
|
@@ -305,8 +285,8 @@ class Execution(BaseModel):
|
|
305
285
|
"Error object if an error occurred, None otherwise."
|
306
286
|
|
307
287
|
def text(self, include_logs: bool = True) -> str:
|
308
|
-
"""
|
309
|
-
|
288
|
+
"""Returns the text representation of this object, i.e. including the main
|
289
|
+
result or the error traceback, optionally along with the logs (stdout, stderr).
|
310
290
|
"""
|
311
291
|
prefix = str(self.logs) if include_logs else ""
|
312
292
|
if self.error:
|
@@ -330,9 +310,9 @@ class Execution(BaseModel):
|
|
330
310
|
return self.error is None
|
331
311
|
|
332
312
|
def get_main_result(self) -> Optional[Result]:
|
333
|
-
"""
|
334
|
-
|
335
|
-
|
313
|
+
"""Get the main result of the execution. An execution may have multiple
|
314
|
+
results, e.g. intermediate outputs. The main result is the last output of the
|
315
|
+
cell execution.
|
336
316
|
"""
|
337
317
|
if not self.success:
|
338
318
|
_LOGGER.info("Result is not available as the execution was not successful.")
|
@@ -345,16 +325,13 @@ class Execution(BaseModel):
|
|
345
325
|
return main_result
|
346
326
|
|
347
327
|
def to_json(self) -> str:
|
348
|
-
"""
|
349
|
-
Returns the JSON representation of the Execution object.
|
350
|
-
"""
|
328
|
+
"""Returns the JSON representation of the Execution object."""
|
351
329
|
return self.model_dump_json(exclude_none=True)
|
352
330
|
|
353
331
|
@field_serializer("results", when_used="json")
|
354
332
|
def serialize_results(results: List[Result]) -> List[Dict[str, Union[str, bool]]]: # type: ignore
|
355
|
-
"""
|
356
|
-
|
357
|
-
This method is used by the Pydantic JSON encoder.
|
333
|
+
"""Serializes the results to JSON. This method is used by the Pydantic JSON
|
334
|
+
encoder.
|
358
335
|
"""
|
359
336
|
serialized = []
|
360
337
|
for result in results:
|
@@ -367,9 +344,7 @@ class Execution(BaseModel):
|
|
367
344
|
|
368
345
|
@staticmethod
|
369
346
|
def from_exception(exec: Exception, traceback_raw: List[str]) -> "Execution":
|
370
|
-
"""
|
371
|
-
Creates an Execution object from an exception.
|
372
|
-
"""
|
347
|
+
"""Creates an Execution object from an exception."""
|
373
348
|
return Execution(
|
374
349
|
error=Error(
|
375
350
|
name=exec.__class__.__name__,
|
@@ -382,9 +357,7 @@ class Execution(BaseModel):
|
|
382
357
|
|
383
358
|
@staticmethod
|
384
359
|
def from_e2b_execution(exec: E2BExecution) -> "Execution": # type: ignore
|
385
|
-
"""
|
386
|
-
Creates an Execution object from an E2BResult object.
|
387
|
-
"""
|
360
|
+
"""Creates an Execution object from an E2BResult object."""
|
388
361
|
return Execution(
|
389
362
|
results=[Result.from_e2b_result(res) for res in exec.results],
|
390
363
|
logs=Logs(stdout=exec.logs.stdout, stderr=exec.logs.stderr),
|
@@ -545,6 +518,8 @@ nbclient version: {nbclient_version}
|
|
545
518
|
nbformat version: {nbformat.__version__}
|
546
519
|
Timeout: {self.timeout}"""
|
547
520
|
)
|
521
|
+
sleep(1)
|
522
|
+
self._new_kernel()
|
548
523
|
|
549
524
|
def _new_kernel(self) -> None:
|
550
525
|
if self.nb_client.kc is None or not run_sync(self.nb_client.kc.is_alive)(): # type: ignore
|
@@ -557,17 +532,19 @@ Timeout: {self.timeout}"""
|
|
557
532
|
run_sync(self.nb_client.km.shutdown_kernel)(now=True)
|
558
533
|
run_sync(self.nb_client.km.cleanup_resources)()
|
559
534
|
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
535
|
+
if self.nb_client.kc is not None:
|
536
|
+
channels = [
|
537
|
+
self.nb_client.kc.stdin_channel,
|
538
|
+
self.nb_client.kc.hb_channel,
|
539
|
+
self.nb_client.kc.control_channel,
|
540
|
+
]
|
565
541
|
|
566
|
-
|
567
|
-
|
568
|
-
|
542
|
+
for ch in channels:
|
543
|
+
if ch.is_alive():
|
544
|
+
ch.stop()
|
545
|
+
self.nb_client.kc.stop_channels()
|
569
546
|
|
570
|
-
|
547
|
+
self.nb_client.kc = None
|
571
548
|
self.nb_client.km = None
|
572
549
|
|
573
550
|
def restart_kernel(self) -> None:
|
@@ -634,9 +611,8 @@ class CodeInterpreterFactory:
|
|
634
611
|
|
635
612
|
|
636
613
|
def _parse_local_code_interpreter_outputs(outputs: List[Dict[str, Any]]) -> Execution:
|
637
|
-
"""
|
638
|
-
|
639
|
-
Output types: https://nbformat.readthedocs.io/en/latest/format_description.html#code-cell-outputs
|
614
|
+
"""Parse notebook cell outputs to Execution object. Output types:
|
615
|
+
https://nbformat.readthedocs.io/en/latest/format_description.html#code-cell-outputs
|
640
616
|
"""
|
641
617
|
execution = Execution()
|
642
618
|
for data in outputs:
|
vision_agent/utils/type_defs.py
CHANGED
@@ -14,7 +14,7 @@ class LandingaiAPIKey(BaseSettings):
|
|
14
14
|
"""
|
15
15
|
|
16
16
|
api_key: str = Field(
|
17
|
-
default="
|
17
|
+
default="land_sk_fnmSzD0ksknSfvhyD8UGu9R4ss3bKfLL1Im5gb6tDQTy2z1Oy5",
|
18
18
|
alias="LANDINGAI_API_KEY",
|
19
19
|
description="The API key of LandingAI.",
|
20
20
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: vision-agent
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.92
|
4
4
|
Summary: Toolset for Vision Agent
|
5
5
|
Author: Landing AI
|
6
6
|
Author-email: dev@landing.ai
|
@@ -57,7 +57,7 @@ code to solve the task for them. Check out our discord for updates and roadmaps!
|
|
57
57
|
|
58
58
|
## Web Application
|
59
59
|
|
60
|
-
Try Vision Agent live on [va.landing.ai](https://va.landing.ai/)
|
60
|
+
Try Vision Agent live on (note this may not be running the most up-to-date version) [va.landing.ai](https://va.landing.ai/)
|
61
61
|
|
62
62
|
## Documentation
|
63
63
|
|
@@ -79,16 +79,44 @@ using Azure OpenAI please see the Azure setup section):
|
|
79
79
|
export OPENAI_API_KEY="your-api-key"
|
80
80
|
```
|
81
81
|
|
82
|
-
### Important Note on API Usage
|
83
|
-
Please be aware that using the API in this project requires you to have API credits (minimum of five US dollars). This is different from the OpenAI subscription used in this chatbot. If you don't have credit, further information can be found [here](https://github.com/landing-ai/vision-agent?tab=readme-ov-file#how-to-get-started-with-openai-api-credits)
|
84
|
-
|
85
82
|
### Vision Agent
|
83
|
+
There are two agents that you can use. Vision Agent is a conversational agent that has
|
84
|
+
access to tools that allow it to write an navigate python code and file systems. It can
|
85
|
+
converse with the user in natural language. VisionAgentCoder is an agent that can write
|
86
|
+
code for vision tasks, such as counting people in an image. However, it cannot converse
|
87
|
+
and can only respond with code. VisionAgent can call VisionAgentCoder to write vision
|
88
|
+
code.
|
89
|
+
|
86
90
|
#### Basic Usage
|
87
|
-
|
91
|
+
To run the streamlit app locally to chat with Vision Agent, you can run the following
|
92
|
+
command:
|
93
|
+
|
94
|
+
```bash
|
95
|
+
pip install -r examples/chat/requirements.txt
|
96
|
+
export WORKSPACE=/path/to/your/workspace
|
97
|
+
export ZMQ_PORT=5555
|
98
|
+
streamlit run examples/chat/app.py
|
99
|
+
```
|
100
|
+
You can find more details about the streamlit app [here](examples/chat/).
|
88
101
|
|
102
|
+
#### Basic Programmatic Usage
|
89
103
|
```python
|
90
104
|
>>> from vision_agent.agent import VisionAgent
|
91
105
|
>>> agent = VisionAgent()
|
106
|
+
>>> resp = agent("Hello")
|
107
|
+
>>> print(resp)
|
108
|
+
[{"role": "user", "content": "Hello"}, {"role": "assistant", "content": "{'thoughts': 'The user has greeted me. I will respond with a greeting and ask how I can assist them.', 'response': 'Hello! How can I assist you today?', 'let_user_respond': True}"}]
|
109
|
+
>>> resp.append({"role": "user", "content": "Can you count the number of people in this image?", "media": ["people.jpg"]})
|
110
|
+
>>> resp = agent(resp)
|
111
|
+
```
|
112
|
+
|
113
|
+
### Vision Agent Coder
|
114
|
+
#### Basic Usage
|
115
|
+
You can interact with the agent as you would with any LLM or LMM model:
|
116
|
+
|
117
|
+
```python
|
118
|
+
>>> from vision_agent.agent import VisionAgentCoder
|
119
|
+
>>> agent = VisionAgentCoder()
|
92
120
|
>>> code = agent("What percentage of the area of the jar is filled with coffee beans?", media="jar.jpg")
|
93
121
|
```
|
94
122
|
|
@@ -129,7 +157,7 @@ To better understand how the model came up with it's answer, you can run it in d
|
|
129
157
|
mode by passing in the verbose argument:
|
130
158
|
|
131
159
|
```python
|
132
|
-
>>> agent =
|
160
|
+
>>> agent = VisionAgentCoder(verbose=2)
|
133
161
|
```
|
134
162
|
|
135
163
|
#### Detailed Usage
|
@@ -219,9 +247,11 @@ def custom_tool(image_path: str) -> str:
|
|
219
247
|
return np.zeros((10, 10))
|
220
248
|
```
|
221
249
|
|
222
|
-
You need to ensure you call `@va.tools.register_tool` with any imports it
|
223
|
-
|
224
|
-
|
250
|
+
You need to ensure you call `@va.tools.register_tool` with any imports it uses. Global
|
251
|
+
variables will not be captured by `register_tool` so you need to include them in the
|
252
|
+
function. Make sure the documentation is in the same format above with description,
|
253
|
+
`Parameters:`, `Returns:`, and `Example\n-------`. You can find an example use case
|
254
|
+
[here](examples/custom_tools/) as this is what the agent uses to pick and use the tool.
|
225
255
|
|
226
256
|
### Azure Setup
|
227
257
|
If you want to use Azure OpenAI models, you need to have two OpenAI model deployments:
|
@@ -248,7 +278,7 @@ You can then run Vision Agent using the Azure OpenAI models:
|
|
248
278
|
|
249
279
|
```python
|
250
280
|
import vision_agent as va
|
251
|
-
agent = va.agent.
|
281
|
+
agent = va.agent.AzureVisionAgentCoder()
|
252
282
|
```
|
253
283
|
|
254
284
|
******************************************************************************************************************************
|
@@ -257,7 +287,7 @@ agent = va.agent.AzureVisionAgent()
|
|
257
287
|
|
258
288
|
#### How to get started with OpenAI API credits
|
259
289
|
|
260
|
-
1. Visit the[OpenAI API platform](https://beta.openai.com/signup/) to sign up for an API key.
|
290
|
+
1. Visit the [OpenAI API platform](https://beta.openai.com/signup/) to sign up for an API key.
|
261
291
|
2. Follow the instructions to purchase and manage your API credits.
|
262
292
|
3. Ensure your API key is correctly configured in your project settings.
|
263
293
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
vision_agent/__init__.py,sha256=EAb4-f9iyuEYkBrX4ag1syM8Syx8118_t0R6_C34M9w,57
|
2
|
+
vision_agent/agent/__init__.py,sha256=qpduQ9YufJQfMmG6jwKC2xmlbtR2qK8_1eQC1sGA9Ks,135
|
3
|
+
vision_agent/agent/agent.py,sha256=Bt8yhjCFXuRdZaHxKEesG40V09nWRt45sZluri1R3AA,575
|
4
|
+
vision_agent/agent/agent_utils.py,sha256=JXdl2xz14LKQAmScY-MIW23AD2WBFCsnI0JS6dAyj3Q,1412
|
5
|
+
vision_agent/agent/vision_agent.py,sha256=i_rNpc7faqHTifp2c9sQE4Js3qYUKuJeiqauTp90OlE,8417
|
6
|
+
vision_agent/agent/vision_agent_coder.py,sha256=Ouq3ws7w5zq8fw550aBrCjerNUrQ0MNvR45dkqTtReE,30321
|
7
|
+
vision_agent/agent/vision_agent_coder_prompts.py,sha256=a3R_vHlT2FW3-DSn4OWgzF9zEAx-uKM4ZaTi9Kn-K54,11116
|
8
|
+
vision_agent/agent/vision_agent_prompts.py,sha256=hjs-m4ZHR7HE1HtOeX_1rOvTQA2FMEAqEkaBbGPBYDo,6072
|
9
|
+
vision_agent/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
vision_agent/fonts/default_font_ch_en.ttf,sha256=1YM0Z3XqLDjSNbF7ihQFSAIUdjF9m1rtHiNC_6QosTE,1594400
|
11
|
+
vision_agent/lmm/__init__.py,sha256=YuUZRsMHdn8cMOv6iBU8yUqlIOLrbZQqZl9KPnofsHQ,103
|
12
|
+
vision_agent/lmm/lmm.py,sha256=KcS6h-8whGFmwt7t4LNlj0hZ4U-rBojYBLKLmrMsF48,15075
|
13
|
+
vision_agent/lmm/types.py,sha256=8TSRoTbXyCKVJiH-wHXI2OiGOMSkYv1vLGYeAXtNpOQ,153
|
14
|
+
vision_agent/tools/__init__.py,sha256=UNiaJAOt1C709gaJ-a9h9BzKnY5JmoEUpgKftsOnyPQ,1882
|
15
|
+
vision_agent/tools/meta_tools.py,sha256=rmxgVzj-vJKeewHbue3qHru4sYsFLxlSZV-YH-eyH5w,13366
|
16
|
+
vision_agent/tools/prompts.py,sha256=V1z4YJLXZuUl_iZ5rY0M5hHc_2tmMEUKr0WocXKGt4E,1430
|
17
|
+
vision_agent/tools/tool_utils.py,sha256=XoB-iae8hHrBQgJd3fV6-UjZAkClysobUaOM17IcHuE,4597
|
18
|
+
vision_agent/tools/tools.py,sha256=HT8stRTUmhwm2VbpB3QQNXnL1KIxka-BDCkU2tLaFN4,42326
|
19
|
+
vision_agent/utils/__init__.py,sha256=CW84HnhqI6XQVuxf2KifkLnSuO7EOhmuL09-gAymAak,219
|
20
|
+
vision_agent/utils/exceptions.py,sha256=isVH-SVL4vHj3q5kK4z7cy5_aOapAqHXWkpibfSNbUs,1659
|
21
|
+
vision_agent/utils/execute.py,sha256=JPjiXyAHsMSPYFDZ9bmiiX2lgiGroxqDhXhsD8BTv5E,23848
|
22
|
+
vision_agent/utils/image_utils.py,sha256=y69wtNla0xHZ1h1x0-vv7nOyKUq69jtjSJBiDCn6EM0,7703
|
23
|
+
vision_agent/utils/sim.py,sha256=1HTaiVaBiKeyXIy21IYGXlPw0TipOyw9FPOJDfyLI94,4409
|
24
|
+
vision_agent/utils/type_defs.py,sha256=oVFJcicB-s_09lqvn61u0A5ncZsTqZArZledXWbrrg0,1384
|
25
|
+
vision_agent/utils/video.py,sha256=rNmU9KEIkZB5-EztZNlUiKYN0mm_55A_2VGUM0QpqLA,8779
|
26
|
+
vision_agent-0.2.92.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
vision_agent-0.2.92.dist-info/METADATA,sha256=HFAMIUcz8BQt6I44NYphv28olQx0mVPBC0q1V4XjRtk,10693
|
28
|
+
vision_agent-0.2.92.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
29
|
+
vision_agent-0.2.92.dist-info/RECORD,,
|
@@ -1,24 +0,0 @@
|
|
1
|
-
vision_agent/__init__.py,sha256=EAb4-f9iyuEYkBrX4ag1syM8Syx8118_t0R6_C34M9w,57
|
2
|
-
vision_agent/agent/__init__.py,sha256=IUwfbPMcT8X_rnXMLmI8gJ4ltsHy_XSs9eLiKURJxeY,81
|
3
|
-
vision_agent/agent/agent.py,sha256=ZK-5lOtd9-eD9aWcXssJpnOyvZuO7_5hAmnb-6sWVe8,569
|
4
|
-
vision_agent/agent/vision_agent.py,sha256=y2bZ1vB4_rfvFF-FgHSnVi3tYD9aZ_g85Dd7HZZdVpk,31351
|
5
|
-
vision_agent/agent/vision_agent_prompts.py,sha256=brBV-SmzyzTG5M9nfV3R5xdYT_BUYOKzxNFmTa2Sp-o,11049
|
6
|
-
vision_agent/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
vision_agent/fonts/default_font_ch_en.ttf,sha256=1YM0Z3XqLDjSNbF7ihQFSAIUdjF9m1rtHiNC_6QosTE,1594400
|
8
|
-
vision_agent/lmm/__init__.py,sha256=j9mQsIXQOYfW6nFd47uTwuBe1ranpEbwW308qLfCWN0,85
|
9
|
-
vision_agent/lmm/lmm.py,sha256=035uONyp6_jD3PVdNdSg2PMHOG1voqnpsn2IyybUENs,15147
|
10
|
-
vision_agent/tools/__init__.py,sha256=k69hvcy2FWjDqVA0klzybKeoToOH_bom5NTVSliA0Og,1838
|
11
|
-
vision_agent/tools/prompts.py,sha256=V1z4YJLXZuUl_iZ5rY0M5hHc_2tmMEUKr0WocXKGt4E,1430
|
12
|
-
vision_agent/tools/tool_utils.py,sha256=ZnqaflVbLZB0GmgJJoQsZZs8hWbODXEPH1_Mq1s4bnc,3222
|
13
|
-
vision_agent/tools/tools.py,sha256=TkZqNYX-ocwdaCdXd6c6tysSa_HX2y6Nrgl4JKni4IQ,43661
|
14
|
-
vision_agent/utils/__init__.py,sha256=CW84HnhqI6XQVuxf2KifkLnSuO7EOhmuL09-gAymAak,219
|
15
|
-
vision_agent/utils/exceptions.py,sha256=isVH-SVL4vHj3q5kK4z7cy5_aOapAqHXWkpibfSNbUs,1659
|
16
|
-
vision_agent/utils/execute.py,sha256=DxuAoKmKAovgKe8IPkwg1B34osoz9_Ouvl1mi8aPXgE,23923
|
17
|
-
vision_agent/utils/image_utils.py,sha256=_cdiS5YrLzqkq_ZgFUO897m5M4_SCIThwUy4lOklfB8,7700
|
18
|
-
vision_agent/utils/sim.py,sha256=1HTaiVaBiKeyXIy21IYGXlPw0TipOyw9FPOJDfyLI94,4409
|
19
|
-
vision_agent/utils/type_defs.py,sha256=QeQRRIlklZMWzxROcCn5ELxP89nYdXGydy1rAiSpZZw,1384
|
20
|
-
vision_agent/utils/video.py,sha256=rNmU9KEIkZB5-EztZNlUiKYN0mm_55A_2VGUM0QpqLA,8779
|
21
|
-
vision_agent-0.2.90.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
22
|
-
vision_agent-0.2.90.dist-info/METADATA,sha256=IGFEwRmmrA9JLXtDpunUhiPa7s0bU1ccGGBVSEph4Ck,9477
|
23
|
-
vision_agent-0.2.90.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
24
|
-
vision_agent-0.2.90.dist-info/RECORD,,
|
File without changes
|
File without changes
|