hugging2021 commited on
Commit
e1daf64
·
verified ·
1 Parent(s): 29e58cf

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -0
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()