Spaces:
Sleeping
Sleeping
def generate_key_moments_keywords(transcript):
Browse files
app.py
CHANGED
|
@@ -1069,12 +1069,6 @@ def get_key_moments(video_id, formatted_simple_transcript, formatted_transcript,
|
|
| 1069 |
is_key_moments_exists = GCS_SERVICE.check_file_exists(bucket_name, blob_name)
|
| 1070 |
if not is_key_moments_exists:
|
| 1071 |
key_moments = generate_key_moments(formatted_simple_transcript, formatted_transcript)
|
| 1072 |
-
# 檢查 key_moments 是否有 keywords
|
| 1073 |
-
for key_moment in key_moments:
|
| 1074 |
-
if "keywords" not in key_moment:
|
| 1075 |
-
transcript = key_moment["transcript"]
|
| 1076 |
-
key_moment["keywords"] = generate_key_moments_keywords(transcript)
|
| 1077 |
-
|
| 1078 |
key_moments_json = {"key_moments": key_moments}
|
| 1079 |
key_moments_text = json.dumps(key_moments_json, ensure_ascii=False, indent=2)
|
| 1080 |
upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, key_moments_text)
|
|
@@ -1084,6 +1078,21 @@ def get_key_moments(video_id, formatted_simple_transcript, formatted_transcript,
|
|
| 1084 |
print("key_moments已存在于GCS中")
|
| 1085 |
key_moments_text = download_blob_to_string(gcs_client, bucket_name, blob_name)
|
| 1086 |
key_moments_json = json.loads(key_moments_text)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1087 |
|
| 1088 |
elif source == "drive":
|
| 1089 |
print("===get_key_moments on drive===")
|
|
@@ -1168,19 +1177,23 @@ def generate_key_moments(formatted_simple_transcript, formatted_transcript):
|
|
| 1168 |
return key_moments
|
| 1169 |
|
| 1170 |
def generate_key_moments_keywords(transcript):
|
| 1171 |
-
|
|
|
|
| 1172 |
保留專家名字、專業術語、年份、數字、期刊名稱、地名、數學公式、數學表示式、物理化學符號,
|
| 1173 |
不用給上下文,直接給出關鍵字,使用 zh-TW,用逗號分隔, example: 關鍵字1, 關鍵字2
|
| 1174 |
transcript:{transcript}
|
| 1175 |
"""
|
| 1176 |
-
|
| 1177 |
-
|
| 1178 |
-
|
| 1179 |
-
|
| 1180 |
-
|
| 1181 |
-
|
| 1182 |
-
|
| 1183 |
-
|
|
|
|
|
|
|
|
|
|
| 1184 |
keywords = response.choices[0].message.content.strip().split(", ")
|
| 1185 |
|
| 1186 |
return keywords
|
|
|
|
| 1069 |
is_key_moments_exists = GCS_SERVICE.check_file_exists(bucket_name, blob_name)
|
| 1070 |
if not is_key_moments_exists:
|
| 1071 |
key_moments = generate_key_moments(formatted_simple_transcript, formatted_transcript)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1072 |
key_moments_json = {"key_moments": key_moments}
|
| 1073 |
key_moments_text = json.dumps(key_moments_json, ensure_ascii=False, indent=2)
|
| 1074 |
upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, key_moments_text)
|
|
|
|
| 1078 |
print("key_moments已存在于GCS中")
|
| 1079 |
key_moments_text = download_blob_to_string(gcs_client, bucket_name, blob_name)
|
| 1080 |
key_moments_json = json.loads(key_moments_text)
|
| 1081 |
+
# 檢查 key_moments 是否有 keywords
|
| 1082 |
+
print("===檢查 key_moments 是否有 keywords===")
|
| 1083 |
+
has_keywords_added = False
|
| 1084 |
+
for key_moment in key_moments_json["key_moments"]:
|
| 1085 |
+
if "keywords" not in key_moment:
|
| 1086 |
+
transcript = key_moment["transcript"]
|
| 1087 |
+
key_moment["keywords"] = generate_key_moments_keywords(transcript)
|
| 1088 |
+
print("===keywords===")
|
| 1089 |
+
print(key_moment["keywords"])
|
| 1090 |
+
print("===keywords===")
|
| 1091 |
+
if has_keywords_added:
|
| 1092 |
+
key_moments_text = json.dumps(key_moments_json, ensure_ascii=False, indent=2)
|
| 1093 |
+
upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, key_moments_text)
|
| 1094 |
+
key_moments_text = download_blob_to_string(gcs_client, bucket_name, blob_name)
|
| 1095 |
+
key_moments_json = json.loads(key_moments_text)
|
| 1096 |
|
| 1097 |
elif source == "drive":
|
| 1098 |
print("===get_key_moments on drive===")
|
|
|
|
| 1177 |
return key_moments
|
| 1178 |
|
| 1179 |
def generate_key_moments_keywords(transcript):
|
| 1180 |
+
system_content = "你是一個擅長資料分析跟影片教學的老師,user 為學生,請根據以下文本提取關鍵字"
|
| 1181 |
+
user_content = f"""transcript extract to keyword
|
| 1182 |
保留專家名字、專業術語、年份、數字、期刊名稱、地名、數學公式、數學表示式、物理化學符號,
|
| 1183 |
不用給上下文,直接給出關鍵字,使用 zh-TW,用逗號分隔, example: 關鍵字1, 關鍵字2
|
| 1184 |
transcript:{transcript}
|
| 1185 |
"""
|
| 1186 |
+
messages = [
|
| 1187 |
+
{"role": "system", "content": system_content},
|
| 1188 |
+
{"role": "user", "content": user_content}
|
| 1189 |
+
]
|
| 1190 |
+
request_payload = {
|
| 1191 |
+
"model": "gpt-4-1106-preview",
|
| 1192 |
+
"messages": messages,
|
| 1193 |
+
"max_tokens": 100,
|
| 1194 |
+
}
|
| 1195 |
+
|
| 1196 |
+
response = OPEN_AI_CLIENT.chat.completions.create(**request_payload)
|
| 1197 |
keywords = response.choices[0].message.content.strip().split(", ")
|
| 1198 |
|
| 1199 |
return keywords
|