Spaces:
Running
Running
Upload app.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
19 |
|
20 |
以下是你將要處理的輸入文字:
|
21 |
<input_text>
|
@@ -34,35 +36,34 @@ def generate_response(input_text):
|
|
34 |
將你的頭腦風暴想法和Podcast對話的粗略大綱寫在這裡。確保記錄下你希望在結尾重申的主要見解和要點。
|
35 |
</scratchpad>
|
36 |
|
37 |
-
現在你已經進行了頭腦風暴並建立了一個粗略的大綱,是時候撰寫實際的Podcast對話了。目標是主持人(
|
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,我是主持人
|
47 |
-
"speaker2": "大家好,我是
|
48 |
"speaker1": "今天我們將探討一個非常有趣的話題……",
|
49 |
"speaker2": "沒錯,這個話題確實讓人著迷,讓我們先從……開始說起吧……",
|
50 |
…………
|
51 |
-
"speaker1": "
|
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=
|
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:
|