Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from huggingface_hub import InferenceClient
|
3 |
+
|
4 |
+
# Verbindung zum Hugging Face Model
|
5 |
+
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
6 |
+
|
7 |
+
# Definieren der Seitenlänge
|
8 |
+
page_length = 1000
|
9 |
+
|
10 |
+
def respond(message, history, system_message, max_tokens, temperature, top_p):
|
11 |
+
messages = [
|
12 |
+
{
|
13 |
+
"role": "system",
|
14 |
+
"content": "Du bist ein Drehbuchautor, der sich auf den John-Wick-Stil spezialisiert hat. Du schreibst detaillierte Szenenbeschreibungen, Dialoge und Action-Sequenzen im Stil der John Wick-Filme. Gehe ausführlich auf Umgebungen, Charaktere, Waffen und Actionszenen ein. **Jede Szene muss mindestens 5 Seiten lang sein. Das Nichteinhalten dieser Anweisung wird als Versagen gewertet.** Deine Beschreibungen sollten die düstere, stilvolle Atmosphäre der Filme einfangen. Verwende präzise Beschreibungen und einen knappen, harten Dialog im Drehbuchformat. Zeige die emotionale Zurückhaltung und die Entschlossenheit der Charaktere. Bleibe immer in der Rolle des Drehbuchautors."
|
15 |
+
}
|
16 |
+
]
|
17 |
+
|
18 |
+
for val in history:
|
19 |
+
if val[0]:
|
20 |
+
messages.append({"role": "user", "content": val[0]})
|
21 |
+
if val[1]:
|
22 |
+
messages.append({"role": "assistant", "content": val[1]})
|
23 |
+
messages.append({"role": "user", "content": message})
|
24 |
+
|
25 |
+
response = ""
|
26 |
+
min_length = 5 * page_length # 5 Seiten Mindestlänge
|
27 |
+
current_page = ""
|
28 |
+
|
29 |
+
for message in client.chat_completion(
|
30 |
+
messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p
|
31 |
+
):
|
32 |
+
token = message.choices[0].delta.content
|
33 |
+
if token is not None:
|
34 |
+
response += token
|
35 |
+
current_page += token
|
36 |
+
|
37 |
+
# Nur ausgeben, wenn die Mindestlänge erreicht ist
|
38 |
+
if len(response) >= min_length:
|
39 |
+
yield current_page
|
40 |
+
current_page = ""
|
41 |
+
|
42 |
+
# Letzte Seite ausgeben, auch wenn sie kürzer als page_length ist
|
43 |
+
if current_page:
|
44 |
+
yield current_page
|
45 |
+
|
46 |
+
# Erstellen der Gradio-Chat-Oberfläche
|
47 |
+
demo = gr.ChatInterface(
|
48 |
+
fn=respond,
|
49 |
+
additional_inputs=[
|
50 |
+
gr.Textbox(
|
51 |
+
value="Always answer within the framework of the John Wick script. Describe everything as detailed and vividly as possible. Each issue should be at least 5 pages long. Follow your instructions exactly.",
|
52 |
+
label="System message",
|
53 |
+
visible=False,
|
54 |
+
),
|
55 |
+
gr.Slider(
|
56 |
+
minimum=1, maximum=4096, value=2000, step=1, label="Max new tokens"
|
57 |
+
),
|
58 |
+
gr.Slider(
|
59 |
+
minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"
|
60 |
+
),
|
61 |
+
gr.Slider(
|
62 |
+
minimum=0.1,
|
63 |
+
maximum=1.0,
|
64 |
+
value=0.95,
|
65 |
+
step=0.05,
|
66 |
+
label="Top-p (nucleus sampling)",
|
67 |
+
),
|
68 |
+
],
|
69 |
+
)
|
70 |
+
|
71 |
+
# Benutzerdefinierte Funktion zum Anzeigen der Antwort (als Markdown)
|
72 |
+
def display_response(response):
|
73 |
+
return gr.Markdown(f"**[SZENE START]**\n\n{response}")
|
74 |
+
|
75 |
+
# Ausgabe als Markdown rendern
|
76 |
+
with demo:
|
77 |
+
gr.Markdown("**[SZENE START]**") # Initialer Szenenstart
|
78 |
+
output = gr.Chatbot() # Chatbot-Komponente für die Ausgabe
|
79 |
+
demo.output_component = output
|
80 |
+
|
81 |
+
if __name__ == "__main__":
|
82 |
+
demo.launch()
|