HardbanRecordsLab commited on
Commit
1da3b38
verified
1 Parent(s): e9ffb4e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -14
app.py CHANGED
@@ -1,13 +1,14 @@
1
  # ==============================================================================
2
  # KROK NAPRAWCZY: Wymuszona instalacja brakuj膮cych bibliotek
3
- # Ten blok kodu rozwi膮zuje problem z ignorowaniem pliku requirements.txt
4
  # ==============================================================================
5
  import os
6
  import subprocess
7
  import sys
8
 
9
  def install_packages():
 
10
  packages = [
 
11
  "transformers>=4.38.1",
12
  "torch>=2.2.0",
13
  "accelerate>=0.27.2",
@@ -17,7 +18,6 @@ def install_packages():
17
  ]
18
  for package in packages:
19
  try:
20
- # Sprawd藕, czy pakiet jest ju偶 zainstalowany
21
  __import__(package.split('>')[0].split('=')[0].split('<')[0])
22
  print(f"{package} jest ju偶 zainstalowany.")
23
  except ImportError:
@@ -30,7 +30,7 @@ if 'PACKAGES_INSTALLED' not in os.environ:
30
  os.environ['PACKAGES_INSTALLED'] = 'TRUE'
31
 
32
  # ==============================================================================
33
- # Reszta kodu aplikacji (bez zmian w stosunku do poprzedniej wersji)
34
  # ==============================================================================
35
  import gradio as gr
36
  from transformers import pipeline as text_pipeline
@@ -42,24 +42,30 @@ from PIL import Image
42
  import io
43
  import time
44
 
45
- # --- Konfiguracja Modeli ---
46
- LLM_MODEL = "mistralai/Mistral-7B-Instruct-v0.2"
47
- IMAGE_MODEL = "runwayml/stable-diffusion-v1-5"
 
 
48
 
49
  # --- 艁adowanie Modeli ---
50
  try:
 
51
  text_generator = text_pipeline("text-generation", model=LLM_MODEL, torch_dtype=torch.bfloat16, device_map="auto")
52
  LLM_LOADED = True
 
53
  except Exception as e:
54
  print(f"B艂膮d 艂adowania LLM: {e}"); text_generator = None; LLM_LOADED = False
55
  try:
56
- image_generator = DiffusionPipeline.from_pretrained(IMAGE_MODEL, torch_dtype=torch.float16, revision="fp16")
 
57
  image_generator.to("cuda")
58
  IMAGE_MODEL_LOADED = True
 
59
  except Exception as e:
60
  print(f"B艂膮d 艂adowania Image Model: {e}"); image_generator = None; IMAGE_MODEL_LOADED = False
61
 
62
- # --- Funkcje Aplikacji (bez zmian) ---
63
 
64
  def parse_course_to_structure(markdown_text):
65
  course_data = {'title': "Nowy Kurs", 'steps': []}
@@ -77,12 +83,14 @@ def parse_course_to_structure(markdown_text):
77
 
78
  def generate_course_structure_and_images(topic, progress=gr.Progress(track_tqdm=True)):
79
  if not LLM_LOADED or not IMAGE_MODEL_LOADED:
80
- return None, gr.State([]), gr.State({}), gr.update(visible=False), gr.update(interactive=False)
81
 
82
  progress(0, desc="Generowanie tekstu kursu...")
83
- prompt = f"[INST] Jeste艣 ekspertem w tworzeniu kurs贸w online. Twoim zadaniem jest stworzenie zwi臋z艂ego, 5-etapowego planu kursu DIY na podany temat. Temat kursu: \"{topic}\". Wygeneruj odpowied藕 w formacie Markdown, kt贸ra zawiera: 1. Chwytliwy tytu艂 kursu (jako nag艂贸wek H1). 2. Pi臋膰 ponumerowanych krok贸w kursu. Ka偶dy krok powinien mie膰 tytu艂 (pogrubiony) i kr贸tki, 2-3 zdaniowy opis. Nie dodawaj 偶adnych wst臋p贸w, podsumowa艅 ani dodatkowych komentarzy. Trzymaj si臋 艣ci艣le podanej struktury. [/INST]"
 
 
84
  response = text_generator(prompt, max_new_tokens=1024, do_sample=True, temperature=0.7, top_p=0.95)
85
- course_text = response[0]['generated_text'].split('[/INST]')[-1].strip()
86
 
87
  course_data = parse_course_to_structure(course_text)
88
 
@@ -112,8 +120,6 @@ def generate_pdf_from_ui(images_state, course_title, *args):
112
 
113
  pdf = FPDF()
114
  pdf.add_page()
115
- # Wa偶ne: W 艣rodowisku HF Spaces mo偶e nie by膰 czcionki 'DejaVu'.
116
- # U偶yjemy standardowej, ale polskie znaki mog膮 nie dzia艂a膰 poprawnie w PDF.
117
  try:
118
  pdf.add_font('DejaVu', '', 'DejaVuSans.ttf', uni=True)
119
  pdf.set_font('DejaVu', '', 12)
@@ -171,7 +177,8 @@ with gr.Blocks(theme=gr.themes.Soft(), title="Kreator Kurs贸w DIY") as demo:
171
 
172
  gr.Markdown("---")
173
 
174
- with gr.Box(visible=False) as editor_box:
 
175
  gr.Markdown("### 鉁嶏笍 Edytor Kursu")
176
  gr.Markdown("Mo偶esz teraz dowolnie modyfikowa膰 wygenerowan膮 tre艣膰.")
177
 
 
1
  # ==============================================================================
2
  # KROK NAPRAWCZY: Wymuszona instalacja brakuj膮cych bibliotek
 
3
  # ==============================================================================
4
  import os
5
  import subprocess
6
  import sys
7
 
8
  def install_packages():
9
+ # Dodajemy konkretn膮 wersj臋 Gradio, aby zapewni膰 kompatybilno艣膰
10
  packages = [
11
+ "gradio>=4.0.0",
12
  "transformers>=4.38.1",
13
  "torch>=2.2.0",
14
  "accelerate>=0.27.2",
 
18
  ]
19
  for package in packages:
20
  try:
 
21
  __import__(package.split('>')[0].split('=')[0].split('<')[0])
22
  print(f"{package} jest ju偶 zainstalowany.")
23
  except ImportError:
 
30
  os.environ['PACKAGES_INSTALLED'] = 'TRUE'
31
 
32
  # ==============================================================================
33
+ # Reszta kodu aplikacji
34
  # ==============================================================================
35
  import gradio as gr
36
  from transformers import pipeline as text_pipeline
 
42
  import io
43
  import time
44
 
45
+ # --- Konfiguracja Modeli (NOWE, OTWARTE MODELE) ---
46
+ # Zmieniamy na w pe艂ni otwarty model, kt贸ry nie wymaga logowania
47
+ LLM_MODEL = "HuggingFaceH4/zephyr-7b-beta"
48
+ # Zmieniamy na nowsz膮, bardziej stabiln膮 wersj臋 Stable Diffusion
49
+ IMAGE_MODEL = "stabilityai/stable-diffusion-2-1-base"
50
 
51
  # --- 艁adowanie Modeli ---
52
  try:
53
+ print("艁adowanie modelu j臋zykowego...")
54
  text_generator = text_pipeline("text-generation", model=LLM_MODEL, torch_dtype=torch.bfloat16, device_map="auto")
55
  LLM_LOADED = True
56
+ print("Model j臋zykowy za艂adowany.")
57
  except Exception as e:
58
  print(f"B艂膮d 艂adowania LLM: {e}"); text_generator = None; LLM_LOADED = False
59
  try:
60
+ print("艁adowanie modelu obrazkowego...")
61
+ image_generator = DiffusionPipeline.from_pretrained(IMAGE_MODEL, torch_dtype=torch.float16)
62
  image_generator.to("cuda")
63
  IMAGE_MODEL_LOADED = True
64
+ print("Model obrazkowy za艂adowany.")
65
  except Exception as e:
66
  print(f"B艂膮d 艂adowania Image Model: {e}"); image_generator = None; IMAGE_MODEL_LOADED = False
67
 
68
+ # --- Funkcje Aplikacji ---
69
 
70
  def parse_course_to_structure(markdown_text):
71
  course_data = {'title': "Nowy Kurs", 'steps': []}
 
83
 
84
  def generate_course_structure_and_images(topic, progress=gr.Progress(track_tqdm=True)):
85
  if not LLM_LOADED or not IMAGE_MODEL_LOADED:
86
+ return None, gr.State([]), gr.update(visible=False), gr.update(interactive=False)
87
 
88
  progress(0, desc="Generowanie tekstu kursu...")
89
+ # Zmieniamy format promptu, aby pasowa艂 do modelu Zephyr
90
+ prompt = f"<|system|>\nJeste艣 ekspertem w tworzeniu kurs贸w online. Twoim zadaniem jest stworzenie zwi臋z艂ego, 5-etapowego planu kursu DIY na podany temat. Wygeneruj odpowied藕 w formacie Markdown, kt贸ra zawiera: 1. Chwytliwy tytu艂 kursu (jako nag艂贸wek H1). 2. Pi臋膰 ponumerowanych krok贸w kursu. Ka偶dy krok powinien mie膰 tytu艂 (pogrubiony) i kr贸tki, 2-3 zdaniowy opis. Nie dodawaj 偶adnych wst臋p贸w, podsumowa艅 ani dodatkowych komentarzy.</s>\n<|user|>\nTemat kursu: \"{topic}\"</s>\n<|assistant|>"
91
+
92
  response = text_generator(prompt, max_new_tokens=1024, do_sample=True, temperature=0.7, top_p=0.95)
93
+ course_text = response[0]['generated_text'].split('<|assistant|>')[-1].strip()
94
 
95
  course_data = parse_course_to_structure(course_text)
96
 
 
120
 
121
  pdf = FPDF()
122
  pdf.add_page()
 
 
123
  try:
124
  pdf.add_font('DejaVu', '', 'DejaVuSans.ttf', uni=True)
125
  pdf.set_font('DejaVu', '', 12)
 
177
 
178
  gr.Markdown("---")
179
 
180
+ # Zmieniamy gr.Box na gr.Group dla lepszej kompatybilno艣ci
181
+ with gr.Group(visible=False) as editor_box:
182
  gr.Markdown("### 鉁嶏笍 Edytor Kursu")
183
  gr.Markdown("Mo偶esz teraz dowolnie modyfikowa膰 wygenerowan膮 tre艣膰.")
184