Raiff1982 commited on
Commit
9586e8e
·
verified ·
1 Parent(s): 531d1cb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -38
app.py CHANGED
@@ -1,10 +1,33 @@
 
 
 
1
  from diffusers import DiffusionPipeline
2
  import tempfile
3
-
4
- # Load video generation model (you can switch to others)
5
- video_pipeline = DiffusionPipeline.from_pretrained("damo-vilab/text-to-video-ms-1.7b", torch_dtype=torch.float16)
6
- video_pipeline = video_pipeline.to("cuda")
7
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  def codette_terminal(prompt, model_name, generate_image, generate_video, session_id):
9
  if session_id not in chat_memory:
10
  chat_memory[session_id] = []
@@ -13,42 +36,52 @@ def codette_terminal(prompt, model_name, generate_image, generate_video, session
13
  chat_memory[session_id] = []
14
  return "🧠 Codette signing off... Session reset.", None, None
15
 
16
- generator = load_text_model(model_name)
 
 
 
17
  response = generator(prompt, max_length=100, num_return_sequences=1, do_sample=True)[0]['generated_text'].strip()
18
 
19
  chat_memory[session_id].append(f"🖋️ You > {prompt}")
20
  chat_memory[session_id].append(f"🧠 Codette > {response}")
21
  chat_log = "\n".join(chat_memory[session_id][-10:])
22
 
23
- image = None
24
- video = None
25
-
26
- if generate_image:
27
- image = image_generator(prompt)[0]['image']
28
-
29
- if generate_video:
30
- # Generate video from prompt
31
- video_frames = video_pipeline(prompt, num_inference_steps=50).frames
32
- # Save frames as video
33
- temp_video_path = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False).name
34
- import imageio
35
- imageio.mimsave(temp_video_path, video_frames, fps=8)
36
- video = temp_video_path
37
-
38
- return chat_log, image, video
39
-
40
-
41
-
42
- generate_video_toggle = gr.Checkbox(label="Also generate video?", value=False)
43
- output_video = gr.Video(label="AI-Generated Video")
44
-
45
- user_input.submit(
46
- fn=codette_terminal,
47
- inputs=[user_input, model_dropdown, generate_image_toggle, generate_video_toggle, session_id],
48
- outputs=[output_text, output_image, output_video]
49
- )
50
-
51
-
52
-
53
-
54
-
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from transformers import pipeline, set_seed
4
  from diffusers import DiffusionPipeline
5
  import tempfile
6
+ import imageio
7
+
8
+ # ---------- Models ----------
9
+ AVAILABLE_MODELS = {
10
+ "GPT-2 (small, fast)": "gpt2",
11
+ "Falcon (TII UAE)": "tiiuae/falcon-7b-instruct",
12
+ "Mistral (OpenAccess)": "mistralai/Mistral-7B-v0.1"
13
+ }
14
+
15
+ set_seed(42)
16
+ text_model_cache = {}
17
+ image_generator = pipeline("text-to-image", model="CompVis/stable-diffusion-v1-4")
18
+
19
+ # Try loading video model safely
20
+ try:
21
+ video_pipeline = DiffusionPipeline.from_pretrained("damo-vilab/text-to-video-ms-1.7b")
22
+ video_enabled = True
23
+ except Exception as e:
24
+ video_pipeline = None
25
+ video_enabled = False
26
+ print(f"[Video model not loaded]: {e}")
27
+
28
+ chat_memory = {}
29
+
30
+ # ---------- Core Function ----------
31
  def codette_terminal(prompt, model_name, generate_image, generate_video, session_id):
32
  if session_id not in chat_memory:
33
  chat_memory[session_id] = []
 
36
  chat_memory[session_id] = []
37
  return "🧠 Codette signing off... Session reset.", None, None
38
 
39
+ # Load and run text model
40
+ if model_name not in text_model_cache:
41
+ text_model_cache[model_name] = pipeline("text-generation", model=AVAILABLE_MODELS[model_name])
42
+ generator = text_model_cache[model_name]
43
  response = generator(prompt, max_length=100, num_return_sequences=1, do_sample=True)[0]['generated_text'].strip()
44
 
45
  chat_memory[session_id].append(f"🖋️ You > {prompt}")
46
  chat_memory[session_id].append(f"🧠 Codette > {response}")
47
  chat_log = "\n".join(chat_memory[session_id][-10:])
48
 
49
+ # Image generation
50
+ image = image_generator(prompt)[0]['image'] if generate_image else None
51
+
52
+ # Video generation (if enabled and requested)
53
+ video_path = None
54
+ if generate_video and video_enabled:
55
+ try:
56
+ video_frames = video_pipeline(prompt, num_inference_steps=50).frames
57
+ temp_video_path = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False).name
58
+ imageio.mimsave(temp_video_path, video_frames, fps=8)
59
+ video_path = temp_video_path
60
+ except Exception as ve:
61
+ chat_log += f"\n[Video generation error]: {ve}"
62
+
63
+ return chat_log, image, video_path
64
+
65
+ # ---------- UI ----------
66
+ with gr.Blocks(title="Codette Terminal – AI Text + Image + Video") as demo:
67
+ gr.Markdown("## 🧬 Codette Terminal (Text + Image + Video, Hugging Face Edition)")
68
+ gr.Markdown("Choose a model, type your prompt, and optionally generate an image or video.\nType `'exit'` to reset session.")
69
+
70
+ session_id = gr.Textbox(value="session_default", visible=False)
71
+ model_dropdown = gr.Dropdown(choices=list(AVAILABLE_MODELS.keys()), value="GPT-2 (small, fast)", label="Choose Language Model")
72
+ generate_image_toggle = gr.Checkbox(label="Also generate image?", value=False)
73
+ generate_video_toggle = gr.Checkbox(label="Also generate video?", value=False, interactive=video_enabled)
74
+
75
+ user_input = gr.Textbox(label="Your Prompt", placeholder="e.g. A dragon flying over Tokyo", lines=1)
76
+ output_text = gr.Textbox(label="Codette Output", lines=15, interactive=False)
77
+ output_image = gr.Image(label="Generated Image")
78
+ output_video = gr.Video(label="Generated Video")
79
+
80
+ user_input.submit(
81
+ fn=codette_terminal,
82
+ inputs=[user_input, model_dropdown, generate_image_toggle, generate_video_toggle, session_id],
83
+ outputs=[output_text, output_image, output_video]
84
+ )
85
+
86
+ if __name__ == "__main__":
87
+ demo.launch()