Jiangxz01 commited on
Commit
729fc09
·
verified ·
1 Parent(s): 4db864c

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -14
app.py CHANGED
@@ -5,8 +5,6 @@ import gradio as gr
5
  import openai
6
  import os
7
 
8
- MODEL = "Meta-Llama-3.1-405B-Instruct"
9
-
10
  def create_client(api_key=None):
11
  if api_key:
12
  openai.api_key = api_key
@@ -14,8 +12,12 @@ def create_client(api_key=None):
14
  openai.api_key = os.getenv("YOUR_API_TOKEN")
15
  return openai.OpenAI(api_key=openai.api_key, base_url="https://api.sambanova.ai/v1")
16
 
17
- def generate_response(input_text):
18
- system_prompt = """你的任務是將提供的輸入文字轉換為一個引人入勝、訊息豐富且專業的Podcast對話。輸入文字可能會比較混亂或結構不完整,因為它可能來自不同來源,如PDF檔案或文字檔等。不要擔心格式問題或任何不相關的訊息;你的目標是提取可以在Podcast中討論的關鍵點、識別重要定義,並突出有趣的事實。
 
 
 
 
19
 
20
  以下是你將要處理的輸入文字:
21
  <input_text>
@@ -34,35 +36,34 @@ def generate_response(input_text):
34
  將你的頭腦風暴想法和Podcast對話的粗略大綱寫在這裡。確保記錄下你希望在結尾重申的主要見解和要點。
35
  </scratchpad>
36
 
37
- 現在你已經進行了頭腦風暴並建立了一個粗略的大綱,是時候撰寫實際的Podcast對話了。目標是主持人(speaker1)與嘉賓(speaker2)之間自然、對話式的交流。融入你在頭腦風暴中得出的最佳想法,並確保將任何複雜話題以易於理解的方式解釋清楚。
38
- - The podcast should have 2 speakers.
39
- - Use english names for the speakers.
40
  - The podcast should be long.
41
  - The podcast should be interesting, lively, and engaging, and hook the listener from the start.
42
  - The script must be in JSON format.
43
  Follow this example structure:
44
  ```
45
  {
46
- "speaker1": "歡迎收聽財資歐北共Podcast,我是主持人XXX,今天我們邀請到XX專家XXX,百忙之中來上我們節目",
47
- "speaker2": "大家好,我是XXX,很榮幸能來跟大家一起聊聊",
48
  "speaker1": "今天我們將探討一個非常有趣的話題……",
49
  "speaker2": "沒錯,這個話題確實讓人著迷,讓我們先從……開始說起吧……",
50
  …………
51
- "speaker1": "謝謝嘉賓的分享,歡迎訂閱來許願Podcast節目喔,我們下次再見"
52
  }
53
  ```
54
 
55
  <podcast_dialogue>
56
- 根據你在頭腦風暴階段提出的關鍵點和創造性想法,撰寫你的引人入勝、訊息豐富的Podcast對話。採用對話式的語氣,並包括任何必要的上下文或解釋,使內容對一般聽眾而言容易理解。使用虛構的主持人和嘉賓名字,以營造更吸引人和身臨其境的聆聽體驗。不要包括像[主持人]或[嘉賓]這樣的括號預留位置。設計你的輸出內容以供直接朗讀——它將直接轉換為音訊。
57
 
58
  確保對話儘可能詳細、完整,同時保持在主題之內並維持吸引人的流暢性。目標是使用你的全部輸出容量,建立儘可能長的Podcast節目,同時以有趣的方式傳遞輸入文字中的關鍵訊息。
59
 
60
  在對話結束時,讓主持人和嘉賓自然總結他們討論中的主要見解和要點。這應當是對話的���機部分,以自然隨意而非明顯的總結——目的是在結束前最後一次以自然流暢的方式強化核心思想。最終以感謝詞結束。
61
  </podcast_dialogue>
62
  """
63
- client = create_client()
64
  response = client.chat.completions.create(
65
- model=MODEL,
66
  messages=[
67
  {"role": "system", "content": system_prompt},
68
  {"role": "user", "content": input_text}
@@ -115,7 +116,7 @@ with gr.Blocks() as iface:
115
  output_text = gr.Textbox(label="生成的結果")
116
 
117
  generate_button = gr.Button("生成")
118
- generate_button.click(fn=generate_response, inputs=input_text, outputs=output_text)
119
 
120
  if __name__ == "__main__":
121
  if "SPACE_ID" in os.environ:
 
5
  import openai
6
  import os
7
 
 
 
8
  def create_client(api_key=None):
9
  if api_key:
10
  openai.api_key = api_key
 
12
  openai.api_key = os.getenv("YOUR_API_TOKEN")
13
  return openai.OpenAI(api_key=openai.api_key, base_url="https://api.sambanova.ai/v1")
14
 
15
+ def generate_response(input_text, language, speaker1, speaker2, api_key):
16
+ # 分割 speaker 名稱,只取第一部分(名字)
17
+ speaker1_name = speaker1.split(' - ')[0]
18
+ speaker2_name = speaker2.split(' - ')[0]
19
+
20
+ system_prompt = f"""你的任務是將提供的輸入文字轉換為一個引人入勝、訊息豐富且專業的Podcast對話。輸入文字可能會比較混亂或結構不完整,因為它可能來自不同來源,如PDF檔案或文字檔等。不要擔心格式問題或任何不相關的訊息;你的目標是提取可以在Podcast中討論的關鍵點、識別重要定義,並突出有趣的事實。
21
 
22
  以下是你將要處理的輸入文字:
23
  <input_text>
 
36
  將你的頭腦風暴想法和Podcast對話的粗略大綱寫在這裡。確保記錄下你希望在結尾重申的主要見解和要點。
37
  </scratchpad>
38
 
39
+ 現在你已經進行了頭腦風暴並建立了一個粗略的大綱,是時候撰寫實際的Podcast對話了。目標是主持人({speaker1_name})與嘉賓({speaker2_name})之間自然、對話式的交流。融入你在頭腦風暴中得出的最佳想法,並確保將任何複雜話題以易於理解的方式解釋清楚。
40
+ - The podcast should have 2 speakers: {speaker1_name} and {speaker2_name}.
 
41
  - The podcast should be long.
42
  - The podcast should be interesting, lively, and engaging, and hook the listener from the start.
43
  - The script must be in JSON format.
44
  Follow this example structure:
45
  ```
46
  {
47
+ "speaker1": "歡迎收聽財資歐北共Podcast,我是主持人{speaker1_name},今天我們邀請到專家{speaker2_name},百忙之中來上我們節目",
48
+ "speaker2": "大家好,我是{speaker2_name},很榮幸能來跟大家一起聊聊",
49
  "speaker1": "今天我們將探討一個非常有趣的話題……",
50
  "speaker2": "沒錯,這個話題確實讓人著迷,讓我們先從……開始說起吧……",
51
  …………
52
+ "speaker1": "謝謝{speaker2_name}的專業分享,歡迎訂閱來許願Podcast節目喔,我們下次再見"
53
  }
54
  ```
55
 
56
  <podcast_dialogue>
57
+ 根據你在頭腦風暴階段提出的關鍵點和創造性想法,撰寫你的引人入勝、訊息豐富的Podcast對話。採用對話式的語氣,並包括任何必要的上下文或解釋,使內容對一般聽眾而言容易理解。使用主持人名字 {speaker1_name} 和嘉賓名字 {speaker2_name},以營造更吸引人和身臨其境的聆聽體驗。不要包括像[主持人]或[嘉賓]這樣的括號預留位置。設計你的輸出內容以供直接朗讀——它將直接轉換為音訊。
58
 
59
  確保對話儘可能詳細、完整,同時保持在主題之內並維持吸引人的流暢性。目標是使用你的全部輸出容量,建立儘可能長的Podcast節目,同時以有趣的方式傳遞輸入文字中的關鍵訊息。
60
 
61
  在對話結束時,讓主持人和嘉賓自然總結他們討論中的主要見解和要點。這應當是對話的���機部分,以自然隨意而非明顯的總結——目的是在結束前最後一次以自然流暢的方式強化核心思想。最終以感謝詞結束。
62
  </podcast_dialogue>
63
  """
64
+ client = create_client(api_key)
65
  response = client.chat.completions.create(
66
+ model="Meta-Llama-3.1-405B-Instruct",
67
  messages=[
68
  {"role": "system", "content": system_prompt},
69
  {"role": "user", "content": input_text}
 
116
  output_text = gr.Textbox(label="生成的結果")
117
 
118
  generate_button = gr.Button("生成")
119
+ generate_button.click(fn=generate_response, inputs=[input_text, Language, Speaker_1, Speaker_2, api_key], outputs=output_text)
120
 
121
  if __name__ == "__main__":
122
  if "SPACE_ID" in os.environ: