import requests import json import gradio as gr def calculate1(course_input, course_profile, course_hour): url = "https://ai-knowledge-navigator.onrender.com/process" headers = { "Content-Type": "application/json" } data = { "title": course_input, "content": course_profile, "hour": course_hour } try: response = requests.post(url, json=data, headers=headers, timeout=50) if response.status_code == 200: try: response_json = response.json() # 解析回傳結果 success = response_json.get("success", False) title = response_json.get("title", "未知課程") competencies = response_json.get("competencies", ["未能成功匹配"]) if success: return f"課程 '{title}' 職能匹配成功!", ", ".join(competencies) else: return "匹配失敗,請稍後再試", "無職能項目" except json.JSONDecodeError: return "錯誤: 伺服器回應非 JSON 格式", "無職能項目" else: return f"錯誤: 伺服器返回 HTTP {response.status_code}", "無職能項目" except requests.exceptions.Timeout: return "錯誤: 伺服器回應超時", "無職能項目" except requests.exceptions.RequestException as e: return f"請求失敗: {str(e)}", "無職能項目" def setup_gradio_interface(): with gr.Blocks() as demo: with gr.Row(): course_input = gr.Textbox(label="課程名稱", placeholder="請輸入課程名稱") course_hour = gr.Textbox(label="課程時數", placeholder="請輸入課程時數") with gr.Row(): course_profile = gr.Textbox(label="課程簡介", placeholder="請輸入課程簡介") with gr.Row(): submit_button = gr.Button("計算職能項目") with gr.Row(): txt_response = gr.Textbox(label="計算狀態", placeholder="計算結果") course_competencies = gr.Textbox(label="職能項目", placeholder="職能項目") # 修正 inputs 和 outputs submit_button.click( calculate1, inputs=[course_input, course_profile, course_hour], outputs=[txt_response, course_competencies] ) return demo try: import gradio as gr except ImportError: import sys import gradio as gr # Run the interface if __name__ == "__main__": demo = setup_gradio_interface() #port = int(os.environ.get("PORT", 7860)) demo.launch() #demo.launch(server_name="0.0.0.0", server_port=port)