youngtsai commited on
Commit
f3fe8c6
·
1 Parent(s): dcbbabb

def generate_key_moments_keywords(transcript):

Browse files
Files changed (1) hide show
  1. app.py +28 -15
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
- user_prompt = f"""transcript extract to keyword
 
1172
  保留專家名字、專業術語、年份、數字、期刊名稱、地名、數學公式、數學表示式、物理化學符號,
1173
  不用給上下文,直接給出關鍵字,使用 zh-TW,用逗號分隔, example: 關鍵字1, 關鍵字2
1174
  transcript:{transcript}
1175
  """
1176
- response = OPEN_AI_CLIENT.completions.create(
1177
- model="gpt-4-1106-preview",
1178
- messages=[
1179
- {"role": "system", "content": "你是一個擅長資料分析跟影片教學的老師,user 為學生,請根據以下文本提取關鍵字"},
1180
- {"role": "user", "content": user_prompt}
1181
- ],
1182
- max_tokens=100,
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