Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -114,6 +114,41 @@ def generate_prompt(achievement: str, emotion: str, information: str,
|
|
| 114 |
############################################
|
| 115 |
# 呼叫模型 API (OpenAI / Claude)
|
| 116 |
############################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
def call_openai_api(prompt: str, model_name: str) -> str:
|
| 118 |
"""參考新版 usage: from openai import OpenAI -> client.chat.completions.create()"""
|
| 119 |
if not client.api_key:
|
|
@@ -170,7 +205,6 @@ def call_claude_api(prompt: str) -> str:
|
|
| 170 |
except Exception as e:
|
| 171 |
return f"[Claude API 呼叫失敗]: {str(e)}"
|
| 172 |
|
| 173 |
-
|
| 174 |
def get_model_answer(model_choice: str, final_prompt: str, question: str) -> str:
|
| 175 |
"""
|
| 176 |
根據 model_choice 呼叫對應的 API。
|
|
@@ -179,9 +213,9 @@ def get_model_answer(model_choice: str, final_prompt: str, question: str) -> str
|
|
| 179 |
content_to_send = final_prompt + "\n\n" + question
|
| 180 |
|
| 181 |
if model_choice == "ChatGPT 4o":
|
| 182 |
-
return
|
| 183 |
elif model_choice == "ChatGPT o1":
|
| 184 |
-
return
|
| 185 |
elif model_choice == "Claude 3.5 Sonnet":
|
| 186 |
return call_claude_api(content_to_send)
|
| 187 |
else:
|
|
|
|
| 114 |
############################################
|
| 115 |
# 呼叫模型 API (OpenAI / Claude)
|
| 116 |
############################################
|
| 117 |
+
def call_openai_api_4o(prompt: str) -> str:
|
| 118 |
+
"""專門呼叫 ChatGPT 4o 模型"""
|
| 119 |
+
if not client.api_key:
|
| 120 |
+
return "[OpenAI API Key 未設定,無法呼叫 API]"
|
| 121 |
+
|
| 122 |
+
try:
|
| 123 |
+
# 以 ChatCompletion 方式呼叫
|
| 124 |
+
chat_completion = client.chat.completions.create(
|
| 125 |
+
messages=[{"role": "user", "content": prompt}],
|
| 126 |
+
model="gpt-4o",
|
| 127 |
+
temperature=0.7,
|
| 128 |
+
max_completion_tokens=2048,
|
| 129 |
+
)
|
| 130 |
+
return chat_completion.choices[0].message.content
|
| 131 |
+
except Exception as e:
|
| 132 |
+
return f"[OpenAI API 呼叫失敗]: {str(e)}"
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def call_openai_api_o1(prompt: str) -> str:
|
| 136 |
+
"""專門呼叫 ChatGPT o1 模型"""
|
| 137 |
+
if not client.api_key:
|
| 138 |
+
return "[OpenAI API Key 未設定,無法呼叫 API]"
|
| 139 |
+
|
| 140 |
+
try:
|
| 141 |
+
# 以 ChatCompletion 方式呼叫
|
| 142 |
+
chat_completion = client.chat.completions.create(
|
| 143 |
+
messages=[{"role": "user", "content": prompt}],
|
| 144 |
+
model="o1",
|
| 145 |
+
max_completion_tokens=2048,
|
| 146 |
+
)
|
| 147 |
+
return chat_completion.choices[0].message.content
|
| 148 |
+
except Exception as e:
|
| 149 |
+
return f"[OpenAI API 呼叫失敗]: {str(e)}"
|
| 150 |
+
|
| 151 |
+
|
| 152 |
def call_openai_api(prompt: str, model_name: str) -> str:
|
| 153 |
"""參考新版 usage: from openai import OpenAI -> client.chat.completions.create()"""
|
| 154 |
if not client.api_key:
|
|
|
|
| 205 |
except Exception as e:
|
| 206 |
return f"[Claude API 呼叫失敗]: {str(e)}"
|
| 207 |
|
|
|
|
| 208 |
def get_model_answer(model_choice: str, final_prompt: str, question: str) -> str:
|
| 209 |
"""
|
| 210 |
根據 model_choice 呼叫對應的 API。
|
|
|
|
| 213 |
content_to_send = final_prompt + "\n\n" + question
|
| 214 |
|
| 215 |
if model_choice == "ChatGPT 4o":
|
| 216 |
+
return call_openai_api_4o(content_to_send)
|
| 217 |
elif model_choice == "ChatGPT o1":
|
| 218 |
+
return call_openai_api_o1(content_to_send)
|
| 219 |
elif model_choice == "Claude 3.5 Sonnet":
|
| 220 |
return call_claude_api(content_to_send)
|
| 221 |
else:
|