Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1195,7 +1195,8 @@ def create_interface():
|
|
1195 |
datasets_gallery = gr.HTML()
|
1196 |
datasets_status = gr.Markdown("Loading...")
|
1197 |
|
1198 |
-
|
|
|
1199 |
with gr.Tab("π Top 24 Spaces Analysis"):
|
1200 |
with gr.Row(elem_classes="search-sort-container"):
|
1201 |
analysis_refresh_btn = gr.Button(
|
@@ -1203,20 +1204,20 @@ def create_interface():
|
|
1203 |
variant="primary",
|
1204 |
elem_classes="refresh-btn"
|
1205 |
)
|
1206 |
-
|
1207 |
-
|
1208 |
intro_text = gr.Textbox(
|
1209 |
value="μλ
νμΈμ. λ§€μΌ κΈλ‘λ² μ΅μ AI μΈκΈ° νΈλ λ μλΉμ€λ₯Ό μμ보λ 'λ°μΌλ¦¬ AI νΈλ λ©' λ΄μ€μ
λλ€. μ€λμ νκΉ
νμ΄μ€ μΈκΈ° μμ 1μλΆν° 24μκΉμ§, λΆμκ³Ό ν΅μ¬ λ΄μ©μ μ΄ν΄λ³΄κ² μ΅λλ€.",
|
1210 |
label="μΈνΈλ‘ ν
μ€νΈ",
|
1211 |
lines=4
|
1212 |
)
|
1213 |
-
|
1214 |
-
|
1215 |
with gr.Column(elem_id="analysis-container"):
|
1216 |
analysis_boxes = [gr.Textbox(label=f"Space #{i+1}", lines=3) for i in range(24)]
|
1217 |
analysis_status = gr.Markdown()
|
1218 |
-
|
1219 |
-
|
1220 |
with gr.Row():
|
1221 |
generate_btn = gr.Button(
|
1222 |
"π¬ μμ μμ±",
|
@@ -1225,18 +1226,6 @@ def create_interface():
|
|
1225 |
)
|
1226 |
video_output = gr.Video(label="μμ±λ μμ")
|
1227 |
|
1228 |
-
def on_analyze(progress=gr.Progress()):
|
1229 |
-
"""λΆμ μ€ν λ° ν
μ€νΈλ°μ€ μ
λ°μ΄νΈ"""
|
1230 |
-
texts = create_editable_space_analysis(progress)
|
1231 |
-
# μ νν 24κ°μ κ°μ λ°ν
|
1232 |
-
if len(texts) < 24:
|
1233 |
-
texts.extend(["λΆμ μ€λΉμ€..." for _ in range(24 - len(texts))])
|
1234 |
-
return texts[:24] # μ νν 24κ° λ°ν
|
1235 |
-
|
1236 |
-
def on_generate_video(intro, *texts, progress=gr.Progress()):
|
1237 |
-
all_texts = [intro] + list(texts)
|
1238 |
-
return generate_video(all_texts, progress)
|
1239 |
-
|
1240 |
|
1241 |
|
1242 |
# Event handlers
|
@@ -1296,7 +1285,7 @@ def create_interface():
|
|
1296 |
outputs=[datasets_gallery, datasets_status]
|
1297 |
)
|
1298 |
|
1299 |
-
|
1300 |
analysis_refresh_btn.click(
|
1301 |
fn=on_analyze,
|
1302 |
outputs=analysis_boxes
|
@@ -1308,8 +1297,6 @@ def create_interface():
|
|
1308 |
outputs=video_output
|
1309 |
)
|
1310 |
|
1311 |
-
|
1312 |
-
|
1313 |
# μ΄κΈ° λ°μ΄ν° λ‘λ
|
1314 |
interface.load(
|
1315 |
fn=get_trending_spaces,
|
@@ -1333,6 +1320,65 @@ def create_interface():
|
|
1333 |
|
1334 |
return interface
|
1335 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1336 |
if __name__ == "__main__":
|
1337 |
try:
|
1338 |
CACHE_DIR.mkdir(exist_ok=True)
|
|
|
1195 |
datasets_gallery = gr.HTML()
|
1196 |
datasets_status = gr.Markdown("Loading...")
|
1197 |
|
1198 |
+
|
1199 |
+
# λΆμ ν μμ
|
1200 |
with gr.Tab("π Top 24 Spaces Analysis"):
|
1201 |
with gr.Row(elem_classes="search-sort-container"):
|
1202 |
analysis_refresh_btn = gr.Button(
|
|
|
1204 |
variant="primary",
|
1205 |
elem_classes="refresh-btn"
|
1206 |
)
|
1207 |
+
|
1208 |
+
# νΈμ§ κ°λ₯ν μΈνΈλ‘ ν
μ€νΈ
|
1209 |
intro_text = gr.Textbox(
|
1210 |
value="μλ
νμΈμ. λ§€μΌ κΈλ‘λ² μ΅μ AI μΈκΈ° νΈλ λ μλΉμ€λ₯Ό μμ보λ 'λ°μΌλ¦¬ AI νΈλ λ©' λ΄μ€μ
λλ€. μ€λμ νκΉ
νμ΄μ€ μΈκΈ° μμ 1μλΆν° 24μκΉμ§, λΆμκ³Ό ν΅μ¬ λ΄μ©μ μ΄ν΄λ³΄κ² μ΅λλ€.",
|
1211 |
label="μΈνΈλ‘ ν
μ€νΈ",
|
1212 |
lines=4
|
1213 |
)
|
1214 |
+
|
1215 |
+
# 24κ°μ νΈμ§ κ°λ₯ν ν
μ€νΈ λ°μ€λ₯Ό λ΄μ 컨ν
μ΄λ
|
1216 |
with gr.Column(elem_id="analysis-container"):
|
1217 |
analysis_boxes = [gr.Textbox(label=f"Space #{i+1}", lines=3) for i in range(24)]
|
1218 |
analysis_status = gr.Markdown()
|
1219 |
+
|
1220 |
+
# λΉλμ€ μμ± μΉμ
|
1221 |
with gr.Row():
|
1222 |
generate_btn = gr.Button(
|
1223 |
"π¬ μμ μμ±",
|
|
|
1226 |
)
|
1227 |
video_output = gr.Video(label="μμ±λ μμ")
|
1228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1229 |
|
1230 |
|
1231 |
# Event handlers
|
|
|
1285 |
outputs=[datasets_gallery, datasets_status]
|
1286 |
)
|
1287 |
|
1288 |
+
# λΆμ ν μ΄λ²€νΈ νΈλ€λ¬
|
1289 |
analysis_refresh_btn.click(
|
1290 |
fn=on_analyze,
|
1291 |
outputs=analysis_boxes
|
|
|
1297 |
outputs=video_output
|
1298 |
)
|
1299 |
|
|
|
|
|
1300 |
# μ΄κΈ° λ°μ΄ν° λ‘λ
|
1301 |
interface.load(
|
1302 |
fn=get_trending_spaces,
|
|
|
1320 |
|
1321 |
return interface
|
1322 |
|
1323 |
+
# λΆμ λ° λΉλμ€ μμ± ν¨μλ€
|
1324 |
+
def on_analyze(progress=gr.Progress()):
|
1325 |
+
"""λΆμ μ€ν λ° ν
μ€νΈλ°μ€ μ
λ°μ΄νΈ"""
|
1326 |
+
try:
|
1327 |
+
url = "https://huggingface.co/api/spaces"
|
1328 |
+
response = requests.get(url, params={'full': 'true', 'limit': 24})
|
1329 |
+
response.raise_for_status()
|
1330 |
+
spaces = response.json()[:24]
|
1331 |
+
|
1332 |
+
analysis_texts = []
|
1333 |
+
|
1334 |
+
for idx, space in enumerate(spaces):
|
1335 |
+
progress((idx + 1) / 24, desc=f"λΆμ μ€... {idx+1}/24")
|
1336 |
+
try:
|
1337 |
+
source = get_space_source(space['id'])
|
1338 |
+
source_code = source["app.py"] or source["index.html"]
|
1339 |
+
project_name = space['id'].split('/')[-1]
|
1340 |
+
|
1341 |
+
prompt = f"""
|
1342 |
+
λ€μ HuggingFace μ€νμ΄μ€λ₯Ό λΆμνμ¬ λ΄μ€ 리ν¬νΈ νμμΌλ‘ μ€λͺ
ν΄μ£ΌμΈμ:
|
1343 |
+
μμμ λ°λμ "μ€λμ μΈκΈ°μμ {idx + 1}μμΈ {project_name}μ
λλ€."λ‘ μμνκ³ ,
|
1344 |
+
μ΄μ΄μ μ£Όμ κΈ°λ₯, νΉμ§, νμ©λ°©μμ μμ°μ€λ½κ² μ€λͺ
ν΄μ£ΌμΈμ.
|
1345 |
+
|
1346 |
+
μμ€μ½λ:
|
1347 |
+
```
|
1348 |
+
{source_code[:1500]}
|
1349 |
+
```
|
1350 |
+
"""
|
1351 |
+
|
1352 |
+
messages = [
|
1353 |
+
{"role": "system", "content": "AI κΈ°μ μ λ¬Έ λ΄μ€ 리ν¬ν°μ
λλ€."},
|
1354 |
+
{"role": "user", "content": prompt}
|
1355 |
+
]
|
1356 |
+
|
1357 |
+
response = hf_client.chat_completion(
|
1358 |
+
messages,
|
1359 |
+
max_tokens=200,
|
1360 |
+
temperature=0.7
|
1361 |
+
)
|
1362 |
+
|
1363 |
+
analysis_texts.append(response.choices[0].message.content.strip())
|
1364 |
+
|
1365 |
+
except Exception as e:
|
1366 |
+
analysis_texts.append(f"μ€λμ μΈκΈ°μμ {idx + 1}μμΈ {project_name}μ
λλ€.")
|
1367 |
+
|
1368 |
+
# μ νν 24κ°μ κ°μ λ°ννλλ‘ λ³΄μ₯
|
1369 |
+
if len(analysis_texts) < 24:
|
1370 |
+
analysis_texts.extend([f"μμ {i+1}μ λΆμμ μ€λΉμ€μ
λλ€." for i in range(len(analysis_texts), 24)])
|
1371 |
+
|
1372 |
+
return analysis_texts[:24]
|
1373 |
+
|
1374 |
+
except Exception as e:
|
1375 |
+
return [f"μμ {i+1}μ λΆμμ μ€λΉμ€μ
λλ€." for i in range(24)]
|
1376 |
+
|
1377 |
+
def on_generate_video(intro, *texts, progress=gr.Progress()):
|
1378 |
+
"""μμ μμ±"""
|
1379 |
+
all_texts = [intro] + list(texts)
|
1380 |
+
return generate_video(all_texts, progress)
|
1381 |
+
|
1382 |
if __name__ == "__main__":
|
1383 |
try:
|
1384 |
CACHE_DIR.mkdir(exist_ok=True)
|