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("""
Banner
""") gr.HTML("

On-Demand Spatial-Temporal Understanding at Arbitrary Resolution

") # 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(""" """) # Bagian bawah: footer gr.Markdown("") # Meluncurkan aplikasi if __name__ == "__main__": app.launch(show_error=True) # Mengaktifkan pelaporan error secara rinci