EduTechTeam's picture
Update app.py
8275bff verified
raw
history blame
3.07 kB
import requests
import json
import gradio as gr
def calculate(course_input, course_profile, course_hour):
url = "https://rd-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", "未知課程")
top_competencies = response_json.get("top_competencies", [])
competencies = response_json.get("competencies", [])
if success:
competencies_list = [f"{item['item']} ({item['score']})" for item in competencies]
return (f"課程 '{title}' 職能匹配成功!", top_competencies, "\n".join(competencies_list))
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="職能項目")
with gr.Row():
json_competencies = gr.Textbox(label="JSON內容", placeholder="職能項目")
# 修正 inputs 和 outputs
submit_button.click(
calculate,
inputs=[course_input, course_profile, course_hour],
outputs=[txt_response, course_competencies, json_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)