Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gradio_client import Client, handle_file | |
from deep_translator import GoogleTranslator # Import GoogleTranslator dari deep_translator | |
from themes import IndonesiaTheme_2 # Pastikan tema ini telah dibuat atau diimpor dengan benar | |
# Inisialisasi client untuk API Oryx | |
client = Client("THUdyh/Oryx") | |
# Fungsi untuk memanggil API /predict dan menerjemahkan hasilnya | |
def oryx_inference(multimodal): | |
try: | |
# Jika terdapat file yang diunggah, siapkan dengan handle_file() | |
files = [handle_file(file) for file in multimodal["files"]] | |
# Panggilan ke API /predict dengan parameter multimodal | |
result = client.predict( | |
multimodal={"text": multimodal["text"], "files": files}, | |
api_name="/predict" | |
) | |
# Menerjemahkan hasil ke dalam bahasa Indonesia menggunakan deep_translator | |
translated_result = GoogleTranslator(source='auto', target='id').translate(result) | |
return translated_result | |
except Exception as e: | |
return f"Terjadi kesalahan: {str(e)}" | |
# CSS untuk styling antarmuka | |
css = """ | |
#col-left, #col-mid { | |
margin: 0 auto; | |
max-width: 400px; | |
padding: 15px; | |
border-radius: 10px; | |
background-color: #FFFFFF; /* Use a white background for clean look */ | |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Softer shadow */ | |
} | |
#col-right { | |
margin: 0 auto; | |
max-width: 400px; | |
padding: 15px; | |
border-radius: 10px; | |
background: linear-gradient(180deg, #C5CAE9, #E8EAF6); /* Subtle gradient */ | |
color: #37474F; /* Dark gray text for better contrast */ | |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
} | |
#col-bott { | |
margin: 0 auto; | |
padding: 15px; | |
border-radius: 10px; | |
background-color: #FFFFFF; /* Same as other columns for consistency */ | |
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
} | |
#banner { | |
width: 100%; | |
text-align: center; | |
margin-bottom: 20px; | |
} | |
#run-button { | |
background-color: #00796B; /* Teal color for buttons */ | |
color: white; | |
font-weight: bold; | |
padding: 20px; | |
border-radius: 10px; | |
cursor: pointer; | |
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); /* Subtle shadow for modern touch */ | |
} | |
#footer { | |
text-align: center; | |
margin-top: 20px; | |
color: #607D8B; /* Slightly darker text color */ | |
} | |
#markdown-silver { | |
color: #B0BEC5; /* Lighter gray for markdown text */ | |
} | |
""" | |
# Interface Gradio menggunakan gr.Blocks | |
with gr.Blocks(css=css, theme=IndonesiaTheme_2()) as app: | |
# Tambahkan banner | |
gr.HTML(""" | |
<div style='text-align: center;'> | |
<img src='https://i.ibb.co.com/rmXq4Jn/banner03.jpg' alt='Banner' style='width: 100%; height: auto;'/> | |
</div> | |
""") | |
gr.HTML("<h2 style='text-align: center;'>On-Demand Spatial-Temporal Understanding at Arbitrary Resolution</h2>") | |
# Kolom untuk Input Multimodal dan Tombol Submit | |
with gr.Row(): | |
with gr.Column(elem_id="col-left"): | |
# Input teks dan file | |
multimodal_input = gr.MultimodalTextbox( | |
file_types=[".mp4", "image"], | |
placeholder="Masukkan pesan atau unggah file..." | |
) | |
# Tombol untuk memulai inferensi | |
submit_button = gr.Button("Proses", elem_id="run-button") | |
# Output area untuk hasil terjemahan | |
output_text = gr.Textbox(label="Hasil Prediksi AI") | |
# Menghubungkan tombol submit ke fungsi inferensi | |
submit_button.click( | |
fn=oryx_inference, | |
inputs=multimodal_input, | |
outputs=output_text | |
) | |
# Footer atau Artikel tambahan | |
gr.Markdown(""" | |
<footer id='footer'> | |
### Citation | |
``` | |
@article{liu2024oryx, | |
title={Oryx MLLM: On-Demand Spatial-Temporal Understanding at Arbitrary Resolution}, | |
author={Liu, Zuyan dan lain-lain}, | |
journal={arXiv preprint arXiv:2409.12961}, | |
year={2024} | |
} | |
``` | |
</footer> | |
""") | |
# Bagian bawah: footer | |
gr.Markdown("<footer id='footer'>Integrasi Oryx API dengan Gradio ยฉ 2024 | ๐ฎ๐ฉ Untuk Indonesia Jaya!</footer>") | |
# Meluncurkan aplikasi | |
if __name__ == "__main__": | |
app.launch(show_error=True) # Mengaktifkan pelaporan error secara rinci | |