alexrs-cohere commited on
Commit
018b8c8
·
0 Parent(s):

Command A Vision

Browse files
.gitattributes ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.jpeg filter=lfs diff=lfs merge=lfs -text
37
+ *.whl filter=lfs diff=lfs merge=lfs -text
38
+ *.wav filter=lfs diff=lfs merge=lfs -text
39
+ *.jpg filter=lfs diff=lfs merge=lfs -text
40
+ *.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ *.png filter=lfs diff=lfs merge=lfs -text
.pre-commit-config.yaml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: check-executables-have-shebangs
6
+ - id: check-json
7
+ - id: check-merge-conflict
8
+ - id: check-shebang-scripts-are-executable
9
+ - id: check-toml
10
+ - id: check-yaml
11
+ - id: end-of-file-fixer
12
+ - id: mixed-line-ending
13
+ args: ["--fix=lf"]
14
+ - id: requirements-txt-fixer
15
+ - id: trailing-whitespace
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.12.0
18
+ hooks:
19
+ - id: ruff-check
20
+ args: ["--fix"]
21
+ - id: ruff-format
22
+ - repo: https://github.com/pre-commit/mirrors-mypy
23
+ rev: v1.16.1
24
+ hooks:
25
+ - id: mypy
26
+ args: ["--ignore-missing-imports"]
27
+ additional_dependencies:
28
+ [
29
+ "types-python-slugify",
30
+ "types-pytz",
31
+ "types-PyYAML",
32
+ "types-requests",
33
+ ]
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.10
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Command A Vision
3
+ emoji: ⚡
4
+ colorFrom: red
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 5.34.2
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import base64
3
+ from collections.abc import Iterator
4
+
5
+ import gradio as gr
6
+ from cohere import ClientV2
7
+
8
+ model_id = "command-a-vision-07-2025"
9
+
10
+ # Initialize Cohere client
11
+ api_key = os.getenv("COHERE_API_KEY")
12
+ if not api_key:
13
+ raise ValueError("COHERE_API_KEY environment variable is required")
14
+ client = ClientV2(api_key=api_key, client_name="hf-command-a-vision-07-2025")
15
+
16
+ IMAGE_FILE_TYPES = (".jpg", ".jpeg", ".png", ".webp")
17
+
18
+ def count_files_in_new_message(paths: list[str]) -> int:
19
+ image_count = 0
20
+ for path in paths:
21
+ if path.endswith(IMAGE_FILE_TYPES):
22
+ image_count += 1
23
+ return image_count
24
+
25
+
26
+ def validate_media_constraints(message: dict) -> bool:
27
+ image_count = count_files_in_new_message(message["files"])
28
+ if image_count > 10:
29
+ gr.Warning("Maximum 10 images are supported.")
30
+ return False
31
+ return True
32
+
33
+
34
+ def encode_image_to_base64(image_path: str) -> str:
35
+ """Encode an image file to base64 data URL format."""
36
+ with open(image_path, "rb") as image_file:
37
+ encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
38
+ # Determine file extension for MIME type
39
+ if image_path.lower().endswith('.png'):
40
+ mime_type = "image/png"
41
+ elif image_path.lower().endswith('.jpg') or image_path.lower().endswith('.jpeg'):
42
+ mime_type = "image/jpeg"
43
+ elif image_path.lower().endswith('.webp'):
44
+ mime_type = "image/webp"
45
+ else:
46
+ mime_type = "image/jpeg" # default
47
+ return f"data:{mime_type};base64,{encoded_string}"
48
+
49
+
50
+ def generate(message: dict, history: list[dict], max_new_tokens: int = 512) -> Iterator[str]:
51
+ if not validate_media_constraints(message):
52
+ yield ""
53
+ return
54
+
55
+ # Build messages for Cohere API
56
+ messages = []
57
+
58
+ # Add conversation history
59
+ for item in history:
60
+ if item["role"] == "assistant":
61
+ messages.append({"role": "assistant", "content": item["content"]})
62
+ else:
63
+ content = item["content"]
64
+ if isinstance(content, str):
65
+ messages.append({"role": "user", "content": [{"type": "text", "text": content}]})
66
+ else:
67
+ filepath = content[0]
68
+ # For file-only messages, don't include empty text
69
+ messages.append({
70
+ "role": "user",
71
+ "content": [
72
+ {"type": "image_url", "image_url": {"url": encode_image_to_base64(filepath)}}
73
+ ]
74
+ })
75
+
76
+ # Add current message
77
+ current_content = []
78
+ if message["text"]:
79
+ current_content.append({"type": "text", "text": message["text"]})
80
+
81
+ for file_path in message["files"]:
82
+ current_content.append({
83
+ "type": "image_url",
84
+ "image_url": {"url": encode_image_to_base64(file_path)}
85
+ })
86
+
87
+ # Only add the message if there's content
88
+ if current_content:
89
+ messages.append({"role": "user", "content": current_content})
90
+
91
+ try:
92
+ # Call Cohere API using the correct event type and delta access
93
+ response = client.chat_stream(
94
+ model=model_id,
95
+ messages=messages,
96
+ temperature=0.3,
97
+ max_tokens=max_new_tokens,
98
+ )
99
+
100
+ output = ""
101
+ for event in response:
102
+ if getattr(event, "type", None) == "content-delta":
103
+ # event.delta.message.content.text is the streamed text
104
+ text = getattr(event.delta.message.content, "text", "")
105
+ output += text
106
+ yield output
107
+
108
+ except Exception as e:
109
+ gr.Warning(f"Error calling Cohere API: {str(e)}")
110
+ yield ""
111
+
112
+
113
+ examples = [
114
+ [
115
+ {
116
+ "text": "Write a COBOL function to reverse a string",
117
+ "files": [],
118
+ }
119
+ ],
120
+ [
121
+ {
122
+ "text": "Como sair de um helicóptero que caiu na água?",
123
+ "files": [],
124
+ }
125
+ ],
126
+ [
127
+ {
128
+ "text": "What is the total amount of the invoice with and without tax?",
129
+ "files": ["assets/invoice-1.jpg"],
130
+ }
131
+ ],
132
+ [
133
+ {
134
+ "text": "¿Contra qué modelo gana más Aya Vision 8B?",
135
+ "files": ["assets/aya-vision-win-rates.png"],
136
+ }
137
+ ],
138
+ [
139
+ {
140
+ "text": "Erläutern Sie die Ergebnisse in der Tabelle",
141
+ "files": ["assets/command-a-longbech-v2.png"],
142
+ }
143
+ ],
144
+ [
145
+ {
146
+ "text": "Explain la théorie de la relativité en français",
147
+ "files": [],
148
+ }
149
+ ],
150
+
151
+
152
+ ]
153
+
154
+ demo = gr.ChatInterface(
155
+ fn=generate,
156
+ type="messages",
157
+ textbox=gr.MultimodalTextbox(
158
+ file_types=list(IMAGE_FILE_TYPES),
159
+ file_count="multiple",
160
+ autofocus=True,
161
+ ),
162
+ multimodal=True,
163
+ additional_inputs=[
164
+ gr.Slider(label="Max New Tokens", minimum=100, maximum=2000, step=10, value=700),
165
+ ],
166
+ stop_btn=False,
167
+ title="Command A Vision",
168
+ examples=examples,
169
+ run_examples_on_click=False,
170
+ cache_examples=False,
171
+ css_paths="style.css",
172
+ delete_cache=(1800, 1800),
173
+ )
174
+
175
+ if __name__ == "__main__":
176
+ demo.launch()
assets/aya-vision-win-rates.png ADDED

Git LFS Details

  • SHA256: b028457a3e28e5025934ca83a60f31c854fc9ae3511d7159b1f5078b4cd3068a
  • Pointer size: 131 Bytes
  • Size of remote file: 221 kB
assets/aya-vision.png ADDED

Git LFS Details

  • SHA256: 7b33cc0f5d1450c9b699c538d8edf3493c339f6324a26f6ce3895fa8ec6c00d8
  • Pointer size: 131 Bytes
  • Size of remote file: 296 kB
assets/command-a-longbech-v2.png ADDED

Git LFS Details

  • SHA256: 8edb84d67ea0f62c29be5b9adff079550486a6dad330d717314b5dfede457f11
  • Pointer size: 130 Bytes
  • Size of remote file: 76.1 kB
assets/invoice-1.jpg ADDED

Git LFS Details

  • SHA256: 6c173ec50fde1d0aefd552a348268cb49fdc3d87b414d6a5e5dd5e5d58d304e5
  • Pointer size: 131 Bytes
  • Size of remote file: 418 kB
pyproject.toml ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "command-a-vision-07-2025"
3
+ version = "0.1.0"
4
+ description = ""
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ dependencies = [
8
+ "accelerate>=1.8.1",
9
+ "av>=14.4.0",
10
+ "cohere>=5.16.1",
11
+ "gradio>=5.34.2",
12
+ "hf-transfer>=0.1.9",
13
+ "librosa>=0.11.0",
14
+ "spaces>=0.37.1",
15
+ "timm>=1.0.16",
16
+ "torch==2.5.1",
17
+ "torchvision>=0.20.1",
18
+ "transformers>=4.53.0",
19
+ ]
20
+
21
+ [tool.ruff]
22
+ line-length = 119
23
+
24
+ [tool.ruff.lint]
25
+ select = ["ALL"]
26
+ ignore = [
27
+ "COM812", # missing-trailing-comma
28
+ "D203", # one-blank-line-before-class
29
+ "D213", # multi-line-summary-second-line
30
+ "E501", # line-too-long
31
+ "SIM117", # multiple-with-statements
32
+ #
33
+ "D100", # undocumented-public-module
34
+ "D101", # undocumented-public-class
35
+ "D102", # undocumented-public-method
36
+ "D103", # undocumented-public-function
37
+ "D104", # undocumented-public-package
38
+ "D105", # undocumented-magic-method
39
+ "D107", # undocumented-public-init
40
+ "EM101", # raw-string-in-exception
41
+ "FBT001", # boolean-type-hint-positional-argument
42
+ "FBT002", # boolean-default-value-positional-argument
43
+ "PD901", # pandas-df-variable-name
44
+ "PGH003", # blanket-type-ignore
45
+ "PLR0913", # too-many-arguments
46
+ "PLR0915", # too-many-statements
47
+ "TRY003", # raise-vanilla-args
48
+ ]
49
+ unfixable = [
50
+ "F401", # unused-import
51
+ ]
52
+
53
+ [tool.ruff.lint.pydocstyle]
54
+ convention = "google"
55
+
56
+ [tool.ruff.lint.per-file-ignores]
57
+ "*.ipynb" = ["T201", "T203"]
58
+
59
+ [tool.ruff.format]
60
+ docstring-code-format = true
requirements.txt ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile pyproject.toml -o requirements.txt
3
+ accelerate==1.8.1
4
+ # via command-a-vision-07-2025 (pyproject.toml)
5
+ aiofiles==24.1.0
6
+ # via gradio
7
+ annotated-types==0.7.0
8
+ # via pydantic
9
+ anyio==4.9.0
10
+ # via
11
+ # gradio
12
+ # httpx
13
+ # starlette
14
+ audioread==3.0.1
15
+ # via librosa
16
+ av==14.4.0
17
+ # via command-a-vision-07-2025 (pyproject.toml)
18
+ certifi==2025.6.15
19
+ # via
20
+ # httpcore
21
+ # httpx
22
+ # requests
23
+ cffi==1.17.1
24
+ # via soundfile
25
+ charset-normalizer==3.4.2
26
+ # via requests
27
+ click==8.2.1
28
+ # via
29
+ # typer
30
+ # uvicorn
31
+ decorator==5.2.1
32
+ # via librosa
33
+ exceptiongroup==1.3.0
34
+ # via anyio
35
+ fastapi==0.115.13
36
+ # via gradio
37
+ ffmpy==0.6.0
38
+ # via gradio
39
+ filelock==3.18.0
40
+ # via
41
+ # huggingface-hub
42
+ # torch
43
+ # transformers
44
+ # triton
45
+ fsspec==2025.5.1
46
+ # via
47
+ # gradio-client
48
+ # huggingface-hub
49
+ # torch
50
+ gradio==5.34.2
51
+ # via
52
+ # command-a-vision-07-2025 (pyproject.toml)
53
+ # spaces
54
+ gradio-client==1.10.3
55
+ # via gradio
56
+ groovy==0.1.2
57
+ # via gradio
58
+ h11==0.16.0
59
+ # via
60
+ # httpcore
61
+ # uvicorn
62
+ hf-transfer==0.1.9
63
+ # via command-a-vision-07-2025 (pyproject.toml)
64
+ hf-xet==1.1.5
65
+ # via huggingface-hub
66
+ httpcore==1.0.9
67
+ # via httpx
68
+ httpx==0.28.1
69
+ # via
70
+ # gradio
71
+ # gradio-client
72
+ # safehttpx
73
+ # spaces
74
+ huggingface-hub==0.33.0
75
+ # via
76
+ # accelerate
77
+ # gradio
78
+ # gradio-client
79
+ # timm
80
+ # tokenizers
81
+ # transformers
82
+ idna==3.10
83
+ # via
84
+ # anyio
85
+ # httpx
86
+ # requests
87
+ jinja2==3.1.6
88
+ # via
89
+ # gradio
90
+ # torch
91
+ joblib==1.5.1
92
+ # via
93
+ # librosa
94
+ # scikit-learn
95
+ lazy-loader==0.4
96
+ # via librosa
97
+ librosa==0.11.0
98
+ # via command-a-vision-07-2025 (pyproject.toml)
99
+ llvmlite==0.44.0
100
+ # via numba
101
+ markdown-it-py==3.0.0
102
+ # via rich
103
+ markupsafe==3.0.2
104
+ # via
105
+ # gradio
106
+ # jinja2
107
+ mdurl==0.1.2
108
+ # via markdown-it-py
109
+ mpmath==1.3.0
110
+ # via sympy
111
+ msgpack==1.1.1
112
+ # via librosa
113
+ networkx==3.4.2
114
+ # via torch
115
+ numba==0.61.2
116
+ # via librosa
117
+ numpy==2.2.6
118
+ # via
119
+ # accelerate
120
+ # gradio
121
+ # librosa
122
+ # numba
123
+ # pandas
124
+ # scikit-learn
125
+ # scipy
126
+ # soundfile
127
+ # soxr
128
+ # torchvision
129
+ # transformers
130
+ nvidia-cublas-cu12==12.4.5.8
131
+ # via
132
+ # nvidia-cudnn-cu12
133
+ # nvidia-cusolver-cu12
134
+ # torch
135
+ nvidia-cuda-cupti-cu12==12.4.127
136
+ # via torch
137
+ nvidia-cuda-nvrtc-cu12==12.4.127
138
+ # via torch
139
+ nvidia-cuda-runtime-cu12==12.4.127
140
+ # via torch
141
+ nvidia-cudnn-cu12==9.1.0.70
142
+ # via torch
143
+ nvidia-cufft-cu12==11.2.1.3
144
+ # via torch
145
+ nvidia-curand-cu12==10.3.5.147
146
+ # via torch
147
+ nvidia-cusolver-cu12==11.6.1.9
148
+ # via torch
149
+ nvidia-cusparse-cu12==12.3.1.170
150
+ # via
151
+ # nvidia-cusolver-cu12
152
+ # torch
153
+ nvidia-nccl-cu12==2.21.5
154
+ # via torch
155
+ nvidia-nvjitlink-cu12==12.4.127
156
+ # via
157
+ # nvidia-cusolver-cu12
158
+ # nvidia-cusparse-cu12
159
+ # torch
160
+ nvidia-nvtx-cu12==12.4.127
161
+ # via torch
162
+ orjson==3.10.18
163
+ # via gradio
164
+ packaging==25.0
165
+ # via
166
+ # accelerate
167
+ # gradio
168
+ # gradio-client
169
+ # huggingface-hub
170
+ # lazy-loader
171
+ # pooch
172
+ # spaces
173
+ # transformers
174
+ pandas==2.3.0
175
+ # via gradio
176
+ pillow==11.2.1
177
+ # via
178
+ # gradio
179
+ # torchvision
180
+ platformdirs==4.3.8
181
+ # via pooch
182
+ pooch==1.8.2
183
+ # via librosa
184
+ psutil==5.9.8
185
+ # via
186
+ # accelerate
187
+ # spaces
188
+ pycparser==2.22
189
+ # via cffi
190
+ pydantic==2.11.7
191
+ # via
192
+ # fastapi
193
+ # gradio
194
+ # spaces
195
+ pydantic-core==2.33.2
196
+ # via pydantic
197
+ pydub==0.25.1
198
+ # via gradio
199
+ pygments==2.19.2
200
+ # via rich
201
+ python-dateutil==2.9.0.post0
202
+ # via pandas
203
+ python-multipart==0.0.20
204
+ # via gradio
205
+ pytz==2025.2
206
+ # via pandas
207
+ pyyaml==6.0.2
208
+ # via
209
+ # accelerate
210
+ # gradio
211
+ # huggingface-hub
212
+ # timm
213
+ # transformers
214
+ regex==2024.11.6
215
+ # via transformers
216
+ requests==2.32.4
217
+ # via
218
+ # huggingface-hub
219
+ # pooch
220
+ # spaces
221
+ # transformers
222
+ rich==14.0.0
223
+ # via typer
224
+ ruff==0.12.0
225
+ # via gradio
226
+ safehttpx==0.1.6
227
+ # via gradio
228
+ safetensors==0.5.3
229
+ # via
230
+ # accelerate
231
+ # timm
232
+ # transformers
233
+ scikit-learn==1.7.0
234
+ # via librosa
235
+ scipy==1.15.3
236
+ # via
237
+ # librosa
238
+ # scikit-learn
239
+ semantic-version==2.10.0
240
+ # via gradio
241
+ shellingham==1.5.4
242
+ # via typer
243
+ six==1.17.0
244
+ # via python-dateutil
245
+ sniffio==1.3.1
246
+ # via anyio
247
+ soundfile==0.13.1
248
+ # via librosa
249
+ soxr==0.5.0.post1
250
+ # via librosa
251
+ spaces==0.37.1
252
+ # via command-a-vision-07-2025 (pyproject.toml)
253
+ starlette==0.46.2
254
+ # via
255
+ # fastapi
256
+ # gradio
257
+ sympy==1.13.1
258
+ # via torch
259
+ threadpoolctl==3.6.0
260
+ # via scikit-learn
261
+ timm==1.0.16
262
+ # via command-a-vision-07-2025 (pyproject.toml)
263
+ tokenizers==0.21.2
264
+ # via transformers
265
+ tomlkit==0.13.3
266
+ # via gradio
267
+ torch==2.5.1
268
+ # via
269
+ # command-a-vision-07-2025 (pyproject.toml)
270
+ # accelerate
271
+ # timm
272
+ # torchvision
273
+ torchvision==0.20.1
274
+ # via
275
+ # command-a-vision-07-2025 (pyproject.toml)
276
+ # timm
277
+ tqdm==4.67.1
278
+ # via
279
+ # huggingface-hub
280
+ # transformers
281
+ transformers==4.53.0
282
+ # via command-a-vision-07-2025 (pyproject.toml)
283
+ triton==3.1.0
284
+ # via torch
285
+ typer==0.16.0
286
+ # via gradio
287
+ typing-extensions==4.14.0
288
+ # via
289
+ # anyio
290
+ # exceptiongroup
291
+ # fastapi
292
+ # gradio
293
+ # gradio-client
294
+ # huggingface-hub
295
+ # librosa
296
+ # pydantic
297
+ # pydantic-core
298
+ # rich
299
+ # spaces
300
+ # torch
301
+ # typer
302
+ # typing-inspection
303
+ # uvicorn
304
+ typing-inspection==0.4.1
305
+ # via pydantic
306
+ tzdata==2025.2
307
+ # via pandas
308
+ urllib3==2.5.0
309
+ # via requests
310
+ uvicorn==0.34.3
311
+ # via gradio
312
+ websockets==15.0.1
313
+ # via gradio-client
314
+ cohere==5.16.1
style.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ h1 {
2
+ text-align: center;
3
+ display: block;
4
+ }
uv.lock ADDED
The diff for this file is too large to render. See raw diff