hugging2021 commited on
Commit
3ad86a5
·
verified ·
1 Parent(s): 97e555a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -20
app.py CHANGED
@@ -1,45 +1,83 @@
1
  import gradio as gr
2
- from llama_cpp import Llama
3
 
4
- # Lade das Modell
5
- model_path = "DavidAU/MPT-7b-WizardLM_Uncensored-Storywriter-Merge-Q4_K_M-GGUF"
6
- llm = Llama(model_path=model_path, n_ctx=2048)
7
 
8
- def respond(message, history, max_tokens, temperature, top_p):
9
- messages_input = [{"role": "system", "content": system_message}] + [
10
- {"role": m[0], "content": m[1]} for m in history
11
- ] + [{"role": "user", "content": message}]
12
 
13
- output = llm(
14
- messages_input,
15
- max_tokens=max_tokens,
16
- temperature=temperature,
17
- top_p=top_p,
18
- stream=True,
19
- )
20
 
21
- for chunk in output:
22
- yield chunk["choices"][0]["delta"].get("content", "")
 
 
 
23
 
24
- # Erstellen der Gradio-Chat-Oberfläche
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  demo = gr.ChatInterface(
26
  fn=respond,
27
  additional_inputs=[
 
 
 
 
 
28
  gr.Slider(
29
  minimum=1, maximum=4096, value=2000, step=1, label="Max new tokens"
30
  ),
31
  gr.Slider(
32
- minimum=0.1, maximum=1.0, value=0.5, step=0.1, label="Temperature"
33
  ),
34
  gr.Slider(
35
  minimum=0.1,
36
  maximum=1.0,
37
- value=0.8,
38
  step=0.05,
39
  label="Top-p (nucleus sampling)",
40
  ),
41
  ],
42
  )
43
 
 
 
 
 
 
 
 
 
 
 
44
  if __name__ == "__main__":
45
  demo.launch()
 
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()