Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -55,13 +55,10 @@ def render_score_card(total, raw):
|
|
| 55 |
return "\n".join(parts)
|
| 56 |
|
| 57 |
# === 呼叫 Gemini API ===
|
| 58 |
-
def
|
| 59 |
-
if not
|
| 60 |
-
return "【設定錯誤】找不到
|
| 61 |
-
|
| 62 |
-
headers = {"Content-Type": "application/json"}
|
| 63 |
-
# ⚠️ 保留你的完整 prompt,不修改
|
| 64 |
-
prompt = f"""你是臨床教師,學生主要用什麼語言回答你就用什麼語言給分打回饋。根據以下七大題項和等第制,請對實習醫學生的一分鐘總結進行評分與評論。學生主要用什麼語言回答你就用什麼語言給分打回饋。
|
| 65 |
評分規準:
|
| 66 |
• 優異(A):90-100分
|
| 67 |
o 評語: 內容精確、邏輯嚴謹,能對病程變化做出全面且深入的分析。能將各項資訊融會貫通,並在鑑別診斷中展現清晰的臨床思維。
|
|
@@ -136,16 +133,33 @@ ________________________________________
|
|
| 136 |
{summary}
|
| 137 |
學生主要用什麼語言回答你就用什麼語言給分打回饋。
|
| 138 |
"""
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
return resp.json()["candidates"][0]["content"]["parts"][0]["text"]
|
| 144 |
-
except Exception as e:
|
| 145 |
-
return f"【解析回應失敗】{e}|原始:{resp.text[:300]}"
|
| 146 |
-
else:
|
| 147 |
-
return f"【API 錯誤 {resp.status_code}】{resp.text[:300]}"
|
| 148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
# === 紀錄到 Google Sheet ===
|
| 150 |
def log_to_sheet(level, name, p1, p2, p3, p4, p5, p6, p7, raw, total):
|
| 151 |
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
| 55 |
return "\n".join(parts)
|
| 56 |
|
| 57 |
# === 呼叫 Gemini API ===
|
| 58 |
+
def call_openai_gpt(summary):
|
| 59 |
+
if not api_key:
|
| 60 |
+
return "【設定錯誤】找不到 OPENAI_API_KEY,請在環境變數中設定。"
|
| 61 |
+
system_prompt = f"""你是臨床教師,學生主要用什麼語言回答你就用什麼語言給分打回饋。根據以下七大題項和等第制,請對實習醫學生的一分鐘總結進行評分與評論。學生主要用什麼語言回答你就用什麼語言給分打回饋。
|
|
|
|
|
|
|
|
|
|
| 62 |
評分規準:
|
| 63 |
• 優異(A):90-100分
|
| 64 |
o 評語: 內容精確、邏輯嚴謹,能對病程變化做出全面且深入的分析。能將各項資訊融會貫通,並在鑑別診斷中展現清晰的臨床思維。
|
|
|
|
| 133 |
{summary}
|
| 134 |
學生主要用什麼語言回答你就用什麼語言給分打回饋。
|
| 135 |
"""
|
| 136 |
+
response = client.responses.create(
|
| 137 |
+
model=MODEL_NAME,
|
| 138 |
+
input=prompt,
|
| 139 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
|
| 141 |
+
user_message = f"""學生的一分鐘總結如下:
|
| 142 |
+
{summary}
|
| 143 |
+
請依照上述臨床教師的角色進行評分。學生主要用什麼語言回答你就用什麼語言給分打回饋。"""
|
| 144 |
+
|
| 145 |
+
try:
|
| 146 |
+
response = client.chat.completions.create(
|
| 147 |
+
model=MODEL_NAME,
|
| 148 |
+
messages=[
|
| 149 |
+
{"role": "system", "content": system_prompt},
|
| 150 |
+
{"role": "user", "content": user_message}
|
| 151 |
+
],
|
| 152 |
+
temperature=0.7, # 保持適當的創造力與評分靈活性
|
| 153 |
+
store=True
|
| 154 |
+
)
|
| 155 |
+
return response.choices[0].message.content
|
| 156 |
+
|
| 157 |
+
except Exception as e:
|
| 158 |
+
error_msg = str(e)
|
| 159 |
+
if "model" in error_msg:
|
| 160 |
+
return f"【模型錯誤】無法使用 {MODEL_NAME},請檢查權限或改用 gpt-4o-mini。\n詳細錯誤: {error_msg}"
|
| 161 |
+
return f"【OpenAI API 錯誤】{error_msg}"
|
| 162 |
+
|
| 163 |
# === 紀錄到 Google Sheet ===
|
| 164 |
def log_to_sheet(level, name, p1, p2, p3, p4, p5, p6, p7, raw, total):
|
| 165 |
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|