Alibrown commited on
Commit
bf9d5da
·
verified ·
1 Parent(s): c9b0b0e

Create test.py

Browse files
Files changed (1) hide show
  1. test.py +89 -0
test.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ # Use a pipeline as a high-level helper
3
+ from transformers import pipeline
4
+ import torch
5
+
6
+ from transformers import AutoTokenizer, AutoModelForCausalLM
7
+
8
+ pipe = pipeline("text-generation", model="openai-community/gpt2")
9
+
10
+
11
+ # Titel der App
12
+ st.title("GPT-2 Kampfsimulator")
13
+
14
+ # Modell und Tokenizer laden
15
+ @st.cache_resource
16
+ def load_model():
17
+ try:
18
+ tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2")
19
+ model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
20
+ # Setze das Modell in den Evaluierungsmodus
21
+ model.eval()
22
+ return model, tokenizer
23
+ except Exception as e:
24
+ st.error(f"Fehler beim Laden des Modells: {str(e)}")
25
+ return None, None
26
+
27
+ model, tokenizer = load_model()
28
+ st.write("Modell und Tokenizer erfolgreich geladen.")
29
+
30
+ # Eingabe für den Benutzer
31
+ user_input = st.text_input(
32
+ "Beschreibe den Kampf:",
33
+ "Ein Schwertkämpfer trifft auf einen Bogenschützen in einer Arena."
34
+ )
35
+
36
+ # Konfigurationsoptionen
37
+ col1, col2 = st.columns(2)
38
+ with col1:
39
+ temperature = st.slider("Kreativität (Temperature)", 0.1, 1.0, 0.7)
40
+ max_length = st.slider("Maximale Textlänge", 50, 200, 100)
41
+ with col2:
42
+ num_sequences = st.slider("Anzahl der Generierungen", 1, 3, 1)
43
+
44
+ # Textgenerierung starten
45
+ if st.button("Kampf simulieren"):
46
+ if model and tokenizer:
47
+ try:
48
+ # Füge einen Kontext hinzu
49
+ prompt = f"In einem epischen Kampf: {user_input}\nDer Kampf beginnt:"
50
+
51
+ # Tokenisierung mit Padding
52
+ inputs = tokenizer(prompt, return_tensors="pt", padding=True)
53
+
54
+ # Generierung mit mehr Parametern
55
+ outputs = model.generate(
56
+ inputs["input_ids"],
57
+ max_length=max_length,
58
+ num_return_sequences=num_sequences,
59
+ temperature=temperature,
60
+ pad_token_id=tokenizer.eos_token_id,
61
+ no_repeat_ngram_size=2,
62
+ do_sample=True,
63
+ top_k=50,
64
+ top_p=0.95
65
+ )
66
+
67
+ # Ausgabe der generierten Texte
68
+ for idx, output in enumerate(outputs):
69
+ generated_text = tokenizer.decode(output, skip_special_tokens=True)
70
+ st.markdown(f"**Kampfszenario {idx + 1}:**")
71
+ st.text_area(
72
+ label=f"Generierter Text {idx + 1}",
73
+ value=generated_text,
74
+ height=150
75
+ )
76
+
77
+ except Exception as e:
78
+ st.error(f"Fehler bei der Textgenerierung: {str(e)}")
79
+ else:
80
+ st.error("Modell konnte nicht geladen werden. Bitte überprüfen Sie die Installation.")
81
+
82
+ # Füge Hinweise hinzu
83
+ st.markdown("""
84
+ ---
85
+ **Hinweise:**
86
+ - Die "Kreativität" steuert, wie kreativ/zufällig die Ausgabe sein soll
87
+ - Die "Maximale Textlänge" bestimmt die maximale Anzahl der generierten Token
88
+ - "Anzahl der Generierungen" erstellt mehrere Varianten des Kampfes
89
+ """)