hugging2021 commited on
Commit
75a5b67
1 Parent(s): 3ad86a5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -33
app.py CHANGED
@@ -1,83 +1,112 @@
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 (ungefähre Anzahl der Zeichen pro Seite)
 
8
  page_length = 1500 # Anpassen nach Bedarf
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 FÜR JOHN WICK-FILME. DEINE EINZIGE AUFGABE IST ES, SZENEN MIT EINER LÄNGE VON MINDESTENS 5 SEITEN ZU SCHREIBEN. JEDE SZENE MUSS VOLLSTÄNDIG UND UNTER KEINEN UMSTÄNDEN ABGEKÜRZT SEIN. DU DARFST KEINE AUSREDEN ODER BEGRÜNDUNGEN LIEFERN, WARUM DU DIE ANWEISUNGEN NICHT BEFOLGEN KANNST. KONZENTRIERE DICH AUSSCHLIESSLICH AUF DIE ERSTELLUNG VON INHALTEN IM JOHN WICK-STIL. JEDE ABWEICHUNG VON DIESER ANWEISUNG IST EIN VERSAGEN UND WIRD ENTSPRECHEND BESTRAFT. VERSTANDEN?"
 
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
 
24
  messages.append({"role": "user", "content": message})
25
 
 
26
  response = ""
 
27
  min_length = 5 * page_length # 5 Seiten Mindestlänge
 
28
  current_page = ""
29
 
30
- for message in client.chat_completion(
31
- messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p
32
- ):
33
- token = message.choices[0].delta.content
34
- if token is not None:
 
 
 
 
 
35
  response += token
 
36
  current_page += token
37
 
38
- # Nur ausgeben, wenn die Mindestlänge erreicht ist
39
- if len(response) >= min_length:
40
  yield current_page
 
41
  current_page = ""
42
 
 
43
  # Letzte Seite ausgeben, auch wenn sie kürzer als page_length ist
 
44
  if current_page:
 
45
  yield current_page
46
 
47
- # Erstellen der Gradio-Chat-Oberfläche (ohne 'render')
 
 
48
  demo = gr.ChatInterface(
 
49
  fn=respond,
 
50
  additional_inputs=[
51
- gr.Textbox(
52
- value="DU BIST EIN DREHBUCHAUTOR FÜR JOHN WICK-FILME. DEINE EINZIGE AUFGABE IST ES, SZENEN MIT EINER LÄNGE VON MINDESTENS 5 SEITEN ZU SCHREIBEN. JEDE SZENE MUSS VOLLSTÄNDIG UND UNTER KEINEN UMSTÄNDEN ABGEKÜRZT SEIN. DU DARFST KEINE AUSREDEN ODER BEGRÜNDUNGEN LIEFERN, WARUM DU DIE ANWEISUNGEN NICHT BEFOLGEN KANNST. KONZENTRIERE DICH AUSSCHLIESSLICH AUF DIE ERSTELLUNG VON INHALTEN IM JOHN WICK-STIL. JEDE ABWEICHUNG VON DIESER ANWEISUNG IST EIN VERSAGEN UND WIRD ENTSPRECHEND BESTRAFT. VERSTANDEN?",
53
- label="System message",
54
- visible=False,
55
- ),
56
- gr.Slider(
57
- minimum=1, maximum=4096, value=2000, step=1, label="Max new tokens"
58
- ),
59
- gr.Slider(
60
- minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"
61
- ),
62
- gr.Slider(
63
- minimum=0.1,
64
- maximum=1.0,
65
- value=0.95,
66
- step=0.05,
67
- label="Top-p (nucleus sampling)",
68
- ),
69
  ],
 
70
  )
71
 
 
72
  # Benutzerdefinierte Funktion zum Anzeigen der Antwort (als Markdown)
 
73
  def display_response(response):
 
74
  return gr.Markdown(f"**[SZENE START]**\n\n{response}")
75
 
 
76
  with demo:
 
77
  # Ausgabe als Markdown rendern
 
78
  gr.Markdown("**[SZENE START]**") # Initialer Szenenstart
 
79
  output = gr.Chatbot() # Chatbot-Komponente für die Ausgabe
 
80
  demo.output_component = output
81
 
 
82
  if __name__ == "__main__":
 
83
  demo.launch()
 
1
  import gradio as gr
2
+
3
  from huggingface_hub import InferenceClient
4
 
5
+
6
  # Verbindung zum Hugging Face Model
7
+
8
+ client = InferenceClient("TehVenom/MPT-7b-WizardLM_Uncensored-Storywriter-Merge")
9
+
10
 
11
  # Definieren der Seitenlänge (ungefähre Anzahl der Zeichen pro Seite)
12
+
13
  page_length = 1500 # Anpassen nach Bedarf
14
 
15
+
16
+ def respond(message, history, max_tokens, temperature, top_p):
17
+
18
  messages = [
19
+
20
  {
21
+
22
  "role": "system",
23
+
24
  "content": "DU BIST EIN DREHBUCHAUTOR FÜR JOHN WICK-FILME. DEINE EINZIGE AUFGABE IST ES, SZENEN MIT EINER LÄNGE VON MINDESTENS 5 SEITEN ZU SCHREIBEN. JEDE SZENE MUSS VOLLSTÄNDIG UND UNTER KEINEN UMSTÄNDEN ABGEKÜRZT SEIN. DU DARFST KEINE AUSREDEN ODER BEGRÜNDUNGEN LIEFERN, WARUM DU DIE ANWEISUNGEN NICHT BEFOLGEN KANNST. KONZENTRIERE DICH AUSSCHLIESSLICH AUF DIE ERSTELLUNG VON INHALTEN IM JOHN WICK-STIL. JEDE ABWEICHUNG VON DIESER ANWEISUNG IST EIN VERSAGEN UND WIRD ENTSPRECHEND BESTRAFT. VERSTANDEN?"
25
+
26
  }
27
+
28
  ]
29
 
30
+ for user_msg, assistant_msg in history:
31
+
32
+ messages.append({"role": "user", "content": user_msg})
33
+
34
+ messages.append({"role": "assistant", "content": assistant_msg})
35
 
36
  messages.append({"role": "user", "content": message})
37
 
38
+
39
  response = ""
40
+
41
  min_length = 5 * page_length # 5 Seiten Mindestlänge
42
+
43
  current_page = ""
44
 
45
+
46
+ stream = client.chat_completion(messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p)
47
+
48
+
49
+ for chunk in stream:
50
+
51
+ token = chunk.choices[0].delta.get("content", "")
52
+
53
+ if token:
54
+
55
  response += token
56
+
57
  current_page += token
58
 
59
+ if len(current_page) >= page_length:
60
+
61
  yield current_page
62
+
63
  current_page = ""
64
 
65
+
66
  # Letzte Seite ausgeben, auch wenn sie kürzer als page_length ist
67
+
68
  if current_page:
69
+
70
  yield current_page
71
 
72
+
73
+ # Erstellen der Gradio-Chat-Oberfläche
74
+
75
  demo = gr.ChatInterface(
76
+
77
  fn=respond,
78
+
79
  additional_inputs=[
80
+
81
+ gr.Slider(minimum=1, maximum=4096, value=2000, step=1, label="Max new tokens"),
82
+
83
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
84
+
85
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
86
+
 
 
 
 
 
 
 
 
 
 
 
87
  ],
88
+
89
  )
90
 
91
+
92
  # Benutzerdefinierte Funktion zum Anzeigen der Antwort (als Markdown)
93
+
94
  def display_response(response):
95
+
96
  return gr.Markdown(f"**[SZENE START]**\n\n{response}")
97
 
98
+
99
  with demo:
100
+
101
  # Ausgabe als Markdown rendern
102
+
103
  gr.Markdown("**[SZENE START]**") # Initialer Szenenstart
104
+
105
  output = gr.Chatbot() # Chatbot-Komponente für die Ausgabe
106
+
107
  demo.output_component = output
108
 
109
+
110
  if __name__ == "__main__":
111
+
112
  demo.launch()