Hiroaki Ogasawara commited on
Commit
22ef21f
·
1 Parent(s): 9ec8a57

chore: replace with requests

Browse files
Files changed (6) hide show
  1. .vscode/launch.json +13 -0
  2. app.py +2 -1
  3. pyproject.toml +1 -1
  4. requirements.txt +1 -2
  5. utils.py +30 -15
  6. uv.lock +2 -241
.vscode/launch.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Python Debugger: Current File",
6
+ "type": "debugpy",
7
+ "request": "launch",
8
+ "program": "${file}",
9
+ "console": "integratedTerminal",
10
+ "justMyCode": false
11
+ }
12
+ ]
13
+ }
app.py CHANGED
@@ -17,7 +17,7 @@ def process_jsonl_file(jsonl_file_path: str, api_key: str):
17
  json_data = [json.loads(line) for line in content]
18
 
19
  if api_key is not None and api_key != "":
20
- json_data = evaluate(json_data)
21
 
22
  html_content = report(tasks=json_data)
23
 
@@ -41,6 +41,7 @@ with gr.Blocks() as demo:
41
 
42
  jsonl_input = gr.File(label="JSONLファイルをアップロード")
43
  api_key_input = gr.Textbox(label="APIキーを入力", type="password")
 
44
  process_button = gr.Button("実行")
45
 
46
  output_file = gr.File(label="セルフ評価レポート")
 
17
  json_data = [json.loads(line) for line in content]
18
 
19
  if api_key is not None and api_key != "":
20
+ json_data = evaluate(json_data, api_key)
21
 
22
  html_content = report(tasks=json_data)
23
 
 
41
 
42
  jsonl_input = gr.File(label="JSONLファイルをアップロード")
43
  api_key_input = gr.Textbox(label="APIキーを入力", type="password")
44
+ gr.Markdown("GeminiのAPIキーの発行は[こちら](https://aistudio.google.com/app/apikey)")
45
  process_button = gr.Button("実行")
46
 
47
  output_file = gr.File(label="セルフ評価レポート")
pyproject.toml CHANGED
@@ -5,6 +5,6 @@ description = "Add your description here"
5
  readme = "README.md"
6
  requires-python = ">=3.13"
7
  dependencies = [
8
- "google-generativeai>=0.8.3",
9
  "gradio>=5.7.1",
 
10
  ]
 
5
  readme = "README.md"
6
  requires-python = ">=3.13"
7
  dependencies = [
 
8
  "gradio>=5.7.1",
9
+ "requests>=2.32.3",
10
  ]
requirements.txt CHANGED
@@ -1,3 +1,2 @@
1
  gradio>=5.7.1
2
- google-generativeai>=0.8.3
3
- huggingface_hub==0.25.2
 
1
  gradio>=5.7.1
2
+ requests>=2.32.3
 
utils.py CHANGED
@@ -1,7 +1,6 @@
1
  import json
2
 
3
- import google.generativeai as genai
4
-
5
 
6
  PREREQUISITE_PROMPT = """\
7
  あなたは採点者です。
@@ -39,10 +38,10 @@ def evaluation_prompt(
39
  """
40
 
41
 
42
- def evaluate(results: list[dict], api_key=str, batch_size: int = 10) -> list[dict]:
43
- genai.configure(api_key=api_key)
44
-
45
- model = genai.GenerativeModel("gemini-1.5-pro-latest")
46
 
47
  evaluations = []
48
  for i in range(0, len(results), batch_size):
@@ -58,18 +57,34 @@ def evaluate(results: list[dict], api_key=str, batch_size: int = 10) -> list[dic
58
  for result in batch_results
59
  ]
60
 
61
- response = model.generate_content(
62
- [PREREQUISITE_PROMPT] + prompts,
63
- generation_config=genai.GenerationConfig(
64
- response_mime_type="application/json", response_schema=list[int]
65
- ),
66
- )
67
- scores = json.loads(response.parts[0].text)
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
  for result, score in zip(batch_results, scores):
70
  evaluations.append(
71
  {
72
- **result,
 
 
 
73
  "score": score,
74
  }
75
  )
@@ -137,7 +152,7 @@ def report(tasks: list[dict]) -> str:
137
  <div class="container" id="container"></div>
138
  <script>
139
  const messages = """
140
- + str(tasks)
141
  + """;
142
 
143
  // taskId: number
 
1
  import json
2
 
3
+ import requests
 
4
 
5
  PREREQUISITE_PROMPT = """\
6
  あなたは採点者です。
 
38
  """
39
 
40
 
41
+ # GradioからのGemini SDKを用いた通信がいつまでも終わらないため、REST APIを利用する
42
+ def evaluate(results: list[dict], api_key: str, batch_size: int = 10) -> list[dict]:
43
+ url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={api_key}"
44
+ headers = {"Content-Type": "application/json"}
45
 
46
  evaluations = []
47
  for i in range(0, len(results), batch_size):
 
57
  for result in batch_results
58
  ]
59
 
60
+ data = {
61
+ "contents": [{"parts": [{"text": "\n".join(prompts)}]}],
62
+ "generationConfig": {
63
+ "response_mime_type": "application/json",
64
+ "response_schema": {"type": "ARRAY", "items": {"type": "NUMBER"}},
65
+ },
66
+ }
67
+
68
+ response = requests.post(url, headers=headers, data=json.dumps(data))
69
+
70
+ if response.status_code == 200:
71
+ response_data = response.json()
72
+ # Parse the response_data to extract the scores
73
+ scores = json.loads(
74
+ response_data["candidates"][0]["content"]["parts"][0]["text"]
75
+ )
76
+ else:
77
+ raise Exception(
78
+ f"API request failed with status code {response.status_code}: {response.text}"
79
+ )
80
 
81
  for result, score in zip(batch_results, scores):
82
  evaluations.append(
83
  {
84
+ "input": result["input"],
85
+ "output": result["output"],
86
+ "eval_aspect": result.get("eval_aspect"),
87
+ "target": result.get("target"),
88
  "score": score,
89
  }
90
  )
 
152
  <div class="container" id="container"></div>
153
  <script>
154
  const messages = """
155
+ + json.dumps(tasks)
156
  + """;
157
 
158
  // taskId: number
uv.lock CHANGED
@@ -72,15 +72,6 @@ wheels = [
72
  { url = "https://files.pythonhosted.org/packages/5d/35/be73b6015511aa0173ec595fc579133b797ad532996f2998fd6b8d1bbe6b/audioop_lts-0.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:78bfb3703388c780edf900be66e07de5a3d4105ca8e8720c5c4d67927e0b15d0", size = 23918 },
73
  ]
74
 
75
- [[package]]
76
- name = "cachetools"
77
- version = "5.5.0"
78
- source = { registry = "https://pypi.org/simple" }
79
- sdist = { url = "https://files.pythonhosted.org/packages/c3/38/a0f315319737ecf45b4319a8cd1f3a908e29d9277b46942263292115eee7/cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a", size = 27661 }
80
- wheels = [
81
- { url = "https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292", size = 9524 },
82
- ]
83
-
84
  [[package]]
85
  name = "certifi"
86
  version = "2024.8.30"
@@ -176,116 +167,6 @@ wheels = [
176
  { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 },
177
  ]
178
 
179
- [[package]]
180
- name = "google-ai-generativelanguage"
181
- version = "0.6.10"
182
- source = { registry = "https://pypi.org/simple" }
183
- dependencies = [
184
- { name = "google-api-core", extra = ["grpc"] },
185
- { name = "google-auth" },
186
- { name = "proto-plus" },
187
- { name = "protobuf" },
188
- ]
189
- sdist = { url = "https://files.pythonhosted.org/packages/a5/71/46543c398629bb883b769041fc10278d4d63aaa2c34744dede1b84ec0207/google_ai_generativelanguage-0.6.10.tar.gz", hash = "sha256:6fa642c964d8728006fe7e8771026fc0b599ae0ebeaf83caf550941e8e693455", size = 795200 }
190
- wheels = [
191
- { url = "https://files.pythonhosted.org/packages/af/6d/db99a295f9caf027bbdd90c41e6ea650a7468392a0e8713719e7abc5f647/google_ai_generativelanguage-0.6.10-py3-none-any.whl", hash = "sha256:854a2bf833d18be05ad5ef13c755567b66a4f4a870f099b62c61fe11bddabcf4", size = 760045 },
192
- ]
193
-
194
- [[package]]
195
- name = "google-api-core"
196
- version = "2.23.0"
197
- source = { registry = "https://pypi.org/simple" }
198
- dependencies = [
199
- { name = "google-auth" },
200
- { name = "googleapis-common-protos" },
201
- { name = "proto-plus" },
202
- { name = "protobuf" },
203
- { name = "requests" },
204
- ]
205
- sdist = { url = "https://files.pythonhosted.org/packages/fa/6b/b98553c2061c4e2186f5bbfb1aa1a6ef13fc0775c096d18595d3c99ba023/google_api_core-2.23.0.tar.gz", hash = "sha256:2ceb087315e6af43f256704b871d99326b1f12a9d6ce99beaedec99ba26a0ace", size = 160094 }
206
- wheels = [
207
- { url = "https://files.pythonhosted.org/packages/17/a4/c26886d57d90032c5f74c2e80aefdc38ec58551fc46bd4ce79fb2c9389fa/google_api_core-2.23.0-py3-none-any.whl", hash = "sha256:c20100d4c4c41070cf365f1d8ddf5365915291b5eb11b83829fbd1c999b5122f", size = 156554 },
208
- ]
209
-
210
- [package.optional-dependencies]
211
- grpc = [
212
- { name = "grpcio" },
213
- { name = "grpcio-status" },
214
- ]
215
-
216
- [[package]]
217
- name = "google-api-python-client"
218
- version = "2.154.0"
219
- source = { registry = "https://pypi.org/simple" }
220
- dependencies = [
221
- { name = "google-api-core" },
222
- { name = "google-auth" },
223
- { name = "google-auth-httplib2" },
224
- { name = "httplib2" },
225
- { name = "uritemplate" },
226
- ]
227
- sdist = { url = "https://files.pythonhosted.org/packages/b8/fa/861931cf33f3d91d0d17001af3249cfc2af2b5a1b8472604420c025f3339/google_api_python_client-2.154.0.tar.gz", hash = "sha256:1b420062e03bfcaa1c79e2e00a612d29a6a934151ceb3d272fe150a656dc8f17", size = 12070143 }
228
- wheels = [
229
- { url = "https://files.pythonhosted.org/packages/56/3f/adf5f6b963307765209fc27943516c7c605d250234b01899d524b8f01fe3/google_api_python_client-2.154.0-py2.py3-none-any.whl", hash = "sha256:a521bbbb2ec0ba9d6f307cdd64ed6e21eeac372d1bd7493a4ab5022941f784ad", size = 12573774 },
230
- ]
231
-
232
- [[package]]
233
- name = "google-auth"
234
- version = "2.36.0"
235
- source = { registry = "https://pypi.org/simple" }
236
- dependencies = [
237
- { name = "cachetools" },
238
- { name = "pyasn1-modules" },
239
- { name = "rsa" },
240
- ]
241
- sdist = { url = "https://files.pythonhosted.org/packages/6a/71/4c5387d8a3e46e3526a8190ae396659484377a73b33030614dd3b28e7ded/google_auth-2.36.0.tar.gz", hash = "sha256:545e9618f2df0bcbb7dcbc45a546485b1212624716975a1ea5ae8149ce769ab1", size = 268336 }
242
- wheels = [
243
- { url = "https://files.pythonhosted.org/packages/2d/9a/3d5087d27865c2f0431b942b5c4500b7d1b744dd3262fdc973a4c39d099e/google_auth-2.36.0-py2.py3-none-any.whl", hash = "sha256:51a15d47028b66fd36e5c64a82d2d57480075bccc7da37cde257fc94177a61fb", size = 209519 },
244
- ]
245
-
246
- [[package]]
247
- name = "google-auth-httplib2"
248
- version = "0.2.0"
249
- source = { registry = "https://pypi.org/simple" }
250
- dependencies = [
251
- { name = "google-auth" },
252
- { name = "httplib2" },
253
- ]
254
- sdist = { url = "https://files.pythonhosted.org/packages/56/be/217a598a818567b28e859ff087f347475c807a5649296fb5a817c58dacef/google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05", size = 10842 }
255
- wheels = [
256
- { url = "https://files.pythonhosted.org/packages/be/8a/fe34d2f3f9470a27b01c9e76226965863f153d5fbe276f83608562e49c04/google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d", size = 9253 },
257
- ]
258
-
259
- [[package]]
260
- name = "google-generativeai"
261
- version = "0.8.3"
262
- source = { registry = "https://pypi.org/simple" }
263
- dependencies = [
264
- { name = "google-ai-generativelanguage" },
265
- { name = "google-api-core" },
266
- { name = "google-api-python-client" },
267
- { name = "google-auth" },
268
- { name = "protobuf" },
269
- { name = "pydantic" },
270
- { name = "tqdm" },
271
- { name = "typing-extensions" },
272
- ]
273
- wheels = [
274
- { url = "https://files.pythonhosted.org/packages/e9/2f/b5c1d62e94409ed98d5425e83b8e6d3dd475b611be272f561b1a545d273a/google_generativeai-0.8.3-py3-none-any.whl", hash = "sha256:1108ff89d5b8e59f51e63d1a8bf84701cd84656e17ca28d73aeed745e736d9b7", size = 160822 },
275
- ]
276
-
277
- [[package]]
278
- name = "googleapis-common-protos"
279
- version = "1.66.0"
280
- source = { registry = "https://pypi.org/simple" }
281
- dependencies = [
282
- { name = "protobuf" },
283
- ]
284
- sdist = { url = "https://files.pythonhosted.org/packages/ff/a7/8e9cccdb1c49870de6faea2a2764fa23f627dd290633103540209f03524c/googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c", size = 114376 }
285
- wheels = [
286
- { url = "https://files.pythonhosted.org/packages/a0/0f/c0713fb2b3d28af4b2fded3291df1c4d4f79a00d15c2374a9e010870016c/googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed", size = 221682 },
287
- ]
288
-
289
  [[package]]
290
  name = "gradio"
291
  version = "5.7.1"
@@ -341,37 +222,6 @@ wheels = [
341
  { url = "https://files.pythonhosted.org/packages/02/dd/d064b3069032eb17fc682085e1152996fc8dcde2acc0d92ef0c790573091/gradio_client-1.5.0-py3-none-any.whl", hash = "sha256:4412edd555461771425355a8791ec4c437913dee515cb415444cb9a87d00bd9c", size = 320150 },
342
  ]
343
 
344
- [[package]]
345
- name = "grpcio"
346
- version = "1.68.0"
347
- source = { registry = "https://pypi.org/simple" }
348
- sdist = { url = "https://files.pythonhosted.org/packages/d5/da/132615afbfc722df4bba963844843a205aa298fd5f9a03fa2995e8dddf11/grpcio-1.68.0.tar.gz", hash = "sha256:7e7483d39b4a4fddb9906671e9ea21aaad4f031cdfc349fec76bdfa1e404543a", size = 12682655 }
349
- wheels = [
350
- { url = "https://files.pythonhosted.org/packages/fb/2d/d9cbdb75dc99141705f08474e97b181034c2e53a345d94b58e3c55f4dd92/grpcio-1.68.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:fc05759ffbd7875e0ff2bd877be1438dfe97c9312bbc558c8284a9afa1d0f40e", size = 5149697 },
351
- { url = "https://files.pythonhosted.org/packages/6f/37/a848871a5adba8cd571fa89e8aabc40ca0c475bd78b2e645e1649b20e095/grpcio-1.68.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:15fa1fe25d365a13bc6d52fcac0e3ee1f9baebdde2c9b3b2425f8a4979fccea1", size = 11084394 },
352
- { url = "https://files.pythonhosted.org/packages/1f/52/b09374aab9c9c2f66627ce7de39eef41d73670aa0f75286d91dcc22a2dd8/grpcio-1.68.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:32a9cb4686eb2e89d97022ecb9e1606d132f85c444354c17a7dbde4a455e4a3b", size = 5645417 },
353
- { url = "https://files.pythonhosted.org/packages/01/78/ec5ad7c44d7adaf0b932fd41ce8c59a95177a8c79c947c77204600b652db/grpcio-1.68.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dba037ff8d284c8e7ea9a510c8ae0f5b016004f13c3648f72411c464b67ff2fb", size = 6291062 },
354
- { url = "https://files.pythonhosted.org/packages/f7/7f/7f5a1a8dc63a42b78ca930d195eb0c97aa7a09e8553bb3a07b7cf37f6bc1/grpcio-1.68.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0efbbd849867e0e569af09e165363ade75cf84f5229b2698d53cf22c7a4f9e21", size = 5906505 },
355
- { url = "https://files.pythonhosted.org/packages/41/7b/0b048b8ad1a09fab5f4567fba2a569fb9106c4c1bb473c009c25659542cb/grpcio-1.68.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:4e300e6978df0b65cc2d100c54e097c10dfc7018b9bd890bbbf08022d47f766d", size = 6635069 },
356
- { url = "https://files.pythonhosted.org/packages/5e/c5/9f0ebc9cfba8309a15a9786c953ce99eaf4e1ca2df402b3c5ecf42493bd4/grpcio-1.68.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6f9c7ad1a23e1047f827385f4713b5b8c6c7d325705be1dd3e31fb00dcb2f665", size = 6200683 },
357
- { url = "https://files.pythonhosted.org/packages/ce/e1/d3eba05299d5acdae6c11d056308b885f1d1be0b328baa8233d5d139ec1d/grpcio-1.68.0-cp313-cp313-win32.whl", hash = "sha256:3ac7f10850fd0487fcce169c3c55509101c3bde2a3b454869639df2176b60a03", size = 3637301 },
358
- { url = "https://files.pythonhosted.org/packages/3c/c1/decb2b368a54c00a6ee815c3f610903f36432e3cb591d43369319826b05e/grpcio-1.68.0-cp313-cp313-win_amd64.whl", hash = "sha256:afbf45a62ba85a720491bfe9b2642f8761ff348006f5ef67e4622621f116b04a", size = 4390939 },
359
- ]
360
-
361
- [[package]]
362
- name = "grpcio-status"
363
- version = "1.68.0"
364
- source = { registry = "https://pypi.org/simple" }
365
- dependencies = [
366
- { name = "googleapis-common-protos" },
367
- { name = "grpcio" },
368
- { name = "protobuf" },
369
- ]
370
- sdist = { url = "https://files.pythonhosted.org/packages/70/95/500b24fc02a98ea16097e978958dd7ab9e16db9316a3f0bdc88d5ff239df/grpcio_status-1.68.0.tar.gz", hash = "sha256:8369823de22ab6a2cddb3804669c149ae7a71819e127c2dca7c2322028d52bea", size = 13666 }
371
- wheels = [
372
- { url = "https://files.pythonhosted.org/packages/40/ba/dc535631a9dffa421b327ebfc961911af54c396aa5324efd122a94f72464/grpcio_status-1.68.0-py3-none-any.whl", hash = "sha256:0a71b15d989f02df803b4ba85c5bf1f43aeaa58ac021e5f9974b8cadc41f784d", size = 14427 },
373
- ]
374
-
375
  [[package]]
376
  name = "h11"
377
  version = "0.14.0"
@@ -394,18 +244,6 @@ wheels = [
394
  { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 },
395
  ]
396
 
397
- [[package]]
398
- name = "httplib2"
399
- version = "0.22.0"
400
- source = { registry = "https://pypi.org/simple" }
401
- dependencies = [
402
- { name = "pyparsing" },
403
- ]
404
- sdist = { url = "https://files.pythonhosted.org/packages/3d/ad/2371116b22d616c194aa25ec410c9c6c37f23599dcd590502b74db197584/httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81", size = 351116 }
405
- wheels = [
406
- { url = "https://files.pythonhosted.org/packages/a8/6c/d2fbdaaa5959339d53ba38e94c123e4e84b8fbc4b84beb0e70d7c1608486/httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc", size = 96854 },
407
- ]
408
-
409
  [[package]]
410
  name = "httpx"
411
  version = "0.28.0"
@@ -465,14 +303,14 @@ name = "llm-exercise-report"
465
  version = "0.1.0"
466
  source = { virtual = "." }
467
  dependencies = [
468
- { name = "google-generativeai" },
469
  { name = "gradio" },
 
470
  ]
471
 
472
  [package.metadata]
473
  requires-dist = [
474
- { name = "google-generativeai", specifier = ">=0.8.3" },
475
  { name = "gradio", specifier = ">=5.7.1" },
 
476
  ]
477
 
478
  [[package]]
@@ -610,53 +448,6 @@ wheels = [
610
  { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 },
611
  ]
612
 
613
- [[package]]
614
- name = "proto-plus"
615
- version = "1.25.0"
616
- source = { registry = "https://pypi.org/simple" }
617
- dependencies = [
618
- { name = "protobuf" },
619
- ]
620
- sdist = { url = "https://files.pythonhosted.org/packages/7e/05/74417b2061e1bf1b82776037cad97094228fa1c1b6e82d08a78d3fb6ddb6/proto_plus-1.25.0.tar.gz", hash = "sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91", size = 56124 }
621
- wheels = [
622
- { url = "https://files.pythonhosted.org/packages/dd/25/0b7cc838ae3d76d46539020ec39fc92bfc9acc29367e58fe912702c2a79e/proto_plus-1.25.0-py3-none-any.whl", hash = "sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961", size = 50126 },
623
- ]
624
-
625
- [[package]]
626
- name = "protobuf"
627
- version = "5.29.0"
628
- source = { registry = "https://pypi.org/simple" }
629
- sdist = { url = "https://files.pythonhosted.org/packages/6a/bb/8e59a30b83102a37d24f907f417febb58e5f544d4f124dd1edcd12e078bf/protobuf-5.29.0.tar.gz", hash = "sha256:445a0c02483869ed8513a585d80020d012c6dc60075f96fa0563a724987b1001", size = 424944 }
630
- wheels = [
631
- { url = "https://files.pythonhosted.org/packages/31/cc/98140acbcc3e3a58c679d50dd4f04c3687bdd19690f388c65bb1ae4c1e5e/protobuf-5.29.0-cp310-abi3-win32.whl", hash = "sha256:ea7fb379b257911c8c020688d455e8f74efd2f734b72dc1ea4b4d7e9fd1326f2", size = 422709 },
632
- { url = "https://files.pythonhosted.org/packages/c9/91/38fb97b0cbe96109fa257536ad49dffdac3c8f86b46d9c85dc9e949b5291/protobuf-5.29.0-cp310-abi3-win_amd64.whl", hash = "sha256:34a90cf30c908f47f40ebea7811f743d360e202b6f10d40c02529ebd84afc069", size = 434510 },
633
- { url = "https://files.pythonhosted.org/packages/da/97/faeca508d61b231372cdc3006084fd97f21f3c8c726a2de5f2ebb8e4ab78/protobuf-5.29.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c931c61d0cc143a2e756b1e7f8197a508de5365efd40f83c907a9febf36e6b43", size = 417827 },
634
- { url = "https://files.pythonhosted.org/packages/eb/d6/c6a45a285374ab14499a9ef5a69e4e7b4911e641465681c1d602518d6ab2/protobuf-5.29.0-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:85286a47caf63b34fa92fdc1fd98b649a8895db595cfa746c5286eeae890a0b1", size = 319576 },
635
- { url = "https://files.pythonhosted.org/packages/ee/2e/cc46181ddce0940647d21a8341bf2eddad247a5d030e8c30c7a342793978/protobuf-5.29.0-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:0d10091d6d03537c3f902279fcf11e95372bdd36a79556311da0487455791b20", size = 319672 },
636
- { url = "https://files.pythonhosted.org/packages/7c/6c/dd1f0e8372ec2a8006102871d8da1466b116f3328db96972e19bf24f09ca/protobuf-5.29.0-py3-none-any.whl", hash = "sha256:88c4af76a73183e21061881360240c0cdd3c39d263b4e8fb570aaf83348d608f", size = 172553 },
637
- ]
638
-
639
- [[package]]
640
- name = "pyasn1"
641
- version = "0.6.1"
642
- source = { registry = "https://pypi.org/simple" }
643
- sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322 }
644
- wheels = [
645
- { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135 },
646
- ]
647
-
648
- [[package]]
649
- name = "pyasn1-modules"
650
- version = "0.4.1"
651
- source = { registry = "https://pypi.org/simple" }
652
- dependencies = [
653
- { name = "pyasn1" },
654
- ]
655
- sdist = { url = "https://files.pythonhosted.org/packages/1d/67/6afbf0d507f73c32d21084a79946bfcfca5fbc62a72057e9c23797a737c9/pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c", size = 310028 }
656
- wheels = [
657
- { url = "https://files.pythonhosted.org/packages/77/89/bc88a6711935ba795a679ea6ebee07e128050d6382eaa35a0a47c8032bdc/pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd", size = 181537 },
658
- ]
659
-
660
  [[package]]
661
  name = "pydantic"
662
  version = "2.10.2"
@@ -714,15 +505,6 @@ wheels = [
714
  { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 },
715
  ]
716
 
717
- [[package]]
718
- name = "pyparsing"
719
- version = "3.2.0"
720
- source = { registry = "https://pypi.org/simple" }
721
- sdist = { url = "https://files.pythonhosted.org/packages/8c/d5/e5aeee5387091148a19e1145f63606619cb5f20b83fccb63efae6474e7b2/pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c", size = 920984 }
722
- wheels = [
723
- { url = "https://files.pythonhosted.org/packages/be/ec/2eb3cd785efd67806c46c13a17339708ddc346cbb684eade7a6e6f79536a/pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84", size = 106921 },
724
- ]
725
-
726
  [[package]]
727
  name = "python-dateutil"
728
  version = "2.9.0.post0"
@@ -798,18 +580,6 @@ wheels = [
798
  { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 },
799
  ]
800
 
801
- [[package]]
802
- name = "rsa"
803
- version = "4.9"
804
- source = { registry = "https://pypi.org/simple" }
805
- dependencies = [
806
- { name = "pyasn1" },
807
- ]
808
- sdist = { url = "https://files.pythonhosted.org/packages/aa/65/7d973b89c4d2351d7fb232c2e452547ddfa243e93131e7cfa766da627b52/rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21", size = 29711 }
809
- wheels = [
810
- { url = "https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", size = 34315 },
811
- ]
812
-
813
  [[package]]
814
  name = "ruff"
815
  version = "0.8.1"
@@ -949,15 +719,6 @@ wheels = [
949
  { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 },
950
  ]
951
 
952
- [[package]]
953
- name = "uritemplate"
954
- version = "4.1.1"
955
- source = { registry = "https://pypi.org/simple" }
956
- sdist = { url = "https://files.pythonhosted.org/packages/d2/5a/4742fdba39cd02a56226815abfa72fe0aa81c33bed16ed045647d6000eba/uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", size = 273898 }
957
- wheels = [
958
- { url = "https://files.pythonhosted.org/packages/81/c0/7461b49cd25aeece13766f02ee576d1db528f1c37ce69aee300e075b485b/uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e", size = 10356 },
959
- ]
960
-
961
  [[package]]
962
  name = "urllib3"
963
  version = "2.2.3"
 
72
  { url = "https://files.pythonhosted.org/packages/5d/35/be73b6015511aa0173ec595fc579133b797ad532996f2998fd6b8d1bbe6b/audioop_lts-0.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:78bfb3703388c780edf900be66e07de5a3d4105ca8e8720c5c4d67927e0b15d0", size = 23918 },
73
  ]
74
 
 
 
 
 
 
 
 
 
 
75
  [[package]]
76
  name = "certifi"
77
  version = "2024.8.30"
 
167
  { url = "https://files.pythonhosted.org/packages/c6/b2/454d6e7f0158951d8a78c2e1eb4f69ae81beb8dca5fee9809c6c99e9d0d0/fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871", size = 179641 },
168
  ]
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  [[package]]
171
  name = "gradio"
172
  version = "5.7.1"
 
222
  { url = "https://files.pythonhosted.org/packages/02/dd/d064b3069032eb17fc682085e1152996fc8dcde2acc0d92ef0c790573091/gradio_client-1.5.0-py3-none-any.whl", hash = "sha256:4412edd555461771425355a8791ec4c437913dee515cb415444cb9a87d00bd9c", size = 320150 },
223
  ]
224
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  [[package]]
226
  name = "h11"
227
  version = "0.14.0"
 
244
  { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 },
245
  ]
246
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  [[package]]
248
  name = "httpx"
249
  version = "0.28.0"
 
303
  version = "0.1.0"
304
  source = { virtual = "." }
305
  dependencies = [
 
306
  { name = "gradio" },
307
+ { name = "requests" },
308
  ]
309
 
310
  [package.metadata]
311
  requires-dist = [
 
312
  { name = "gradio", specifier = ">=5.7.1" },
313
+ { name = "requests", specifier = ">=2.32.3" },
314
  ]
315
 
316
  [[package]]
 
448
  { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 },
449
  ]
450
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  [[package]]
452
  name = "pydantic"
453
  version = "2.10.2"
 
505
  { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 },
506
  ]
507
 
 
 
 
 
 
 
 
 
 
508
  [[package]]
509
  name = "python-dateutil"
510
  version = "2.9.0.post0"
 
580
  { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 },
581
  ]
582
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  [[package]]
584
  name = "ruff"
585
  version = "0.8.1"
 
719
  { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 },
720
  ]
721
 
 
 
 
 
 
 
 
 
 
722
  [[package]]
723
  name = "urllib3"
724
  version = "2.2.3"