Spaces:
Sleeping
Sleeping
Commit
·
1fe8c04
1
Parent(s):
997749b
Upload 2 files
Browse files
app.py
CHANGED
@@ -3,8 +3,6 @@ import openai
|
|
3 |
import os
|
4 |
import gradio as gr
|
5 |
|
6 |
-
openai.api_key = os.environ.get("OPENAI_API_KEY")
|
7 |
-
|
8 |
# Generate the app using gradio, running dramatron which is in utils.py and has the outputs titulo, prem_ep, outline, chars, scenes, all_esc
|
9 |
|
10 |
demo = gr.Interface(
|
|
|
3 |
import os
|
4 |
import gradio as gr
|
5 |
|
|
|
|
|
6 |
# Generate the app using gradio, running dramatron which is in utils.py and has the outputs titulo, prem_ep, outline, chars, scenes, all_esc
|
7 |
|
8 |
demo = gr.Interface(
|
utils.py
CHANGED
@@ -4,10 +4,15 @@ from reportlab.lib.pagesizes import letter
|
|
4 |
from reportlab.pdfgen import canvas
|
5 |
from reportlab.pdfbase.pdfmetrics import stringWidth
|
6 |
import backoff
|
|
|
7 |
|
8 |
-
|
|
|
|
|
|
|
|
|
9 |
def generate_premisa_serie():
|
10 |
-
response =
|
11 |
model="gpt-4-1106-preview",
|
12 |
messages=[
|
13 |
{"role": "system", "content": "Eres un guionista de comedia de televisión chistoso, creativo y original. Eres especialista en sarcasmo. Sigue el formato Título: \n Premisa:"},
|
@@ -22,9 +27,11 @@ def generate_premisa_serie():
|
|
22 |
premisa = output.split("Premisa:")[1]
|
23 |
return titulo, premisa
|
24 |
|
25 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
26 |
def generate_premisa_episodio(prem_serie, keywords):
|
27 |
-
response =
|
28 |
model="gpt-4-1106-preview",
|
29 |
messages=[
|
30 |
{"role": "system", "content": "Eres el comediante Bill Burr, un guionista de comedia de televisión chistoso, creativo y original. Eres especialista en sit-coms de sarcasmo. Te dan una premisa de una serie y palabras clave para que generes la premisa de un episodio. Sigue el formato Título: \n Premisa:"},
|
@@ -39,9 +46,11 @@ def generate_premisa_episodio(prem_serie, keywords):
|
|
39 |
premisa = output.split("Premisa:")[1]
|
40 |
return titulo, premisa
|
41 |
|
42 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
43 |
def generate_outline(premisa):
|
44 |
-
response =
|
45 |
model="gpt-4-1106-preview",
|
46 |
messages=[
|
47 |
{"role": "system", "content": "Eres un guionista de comedia de televisión especializado en crear conflictos interesantes y comedia de situación. No uses estilos como negritas, itálicas, subrayado. El usuario te dará una premisa y tú te encargas de desarrollarla con la siguiente estructura: 1. Incidente incitante:... \n2. Desarrollo del problema:... \n3. Clímax:... \n4. Resolución:..."},
|
@@ -60,9 +69,11 @@ def separar_escenas(outline):
|
|
60 |
|
61 |
return outline_list
|
62 |
|
63 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
64 |
def generate_characters(outline):
|
65 |
-
response =
|
66 |
model="gpt-4-1106-preview",
|
67 |
messages=[
|
68 |
{"role": "system", "content": "Eres un escritor de una comedia situacional. Desarrolla en un enunciado a cada uno de los personajes dado un outline. El usuario te va a dar el outline al que te tienes que apegar. Usa un salto de línea para cada personaje."},
|
@@ -72,9 +83,11 @@ def generate_characters(outline):
|
|
72 |
)
|
73 |
return response.choices[0].message.content
|
74 |
|
75 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
76 |
def generate_scenes(outline):
|
77 |
-
response =
|
78 |
model="gpt-4-1106-preview",
|
79 |
messages=[
|
80 |
{"role": "system", "content": "Eres un escritor de una comedia situacional. Enlista las escenas que formaran el episodio a partir de un outline. El usuario te va a dar el outline al que te tienes que apegar así como sus reglas de conteo de escenas. Usa un salto de línea para cada escena, no uses negritas y usa un renglón por escena separando por dos puntos el nombre de la escena y la descripción."},
|
@@ -84,21 +97,11 @@ def generate_scenes(outline):
|
|
84 |
)
|
85 |
return response.choices[0].message.content
|
86 |
|
87 |
-
@backoff.on_exception(backoff.expo, openai.
|
88 |
-
|
89 |
-
|
90 |
-
model="gpt-4-1106-preview",
|
91 |
-
messages=[
|
92 |
-
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el guión de manera extensa con debates irónicos y sarcásticos para las escenas de un episodio. El guión debe durar 7 (siete) cuartillas. El usuario te da las escenas que tienes que desarrollar y las características de los personajes. Usa el formato de guión de Final Draft."},
|
93 |
-
{"role": "user", "content": scenes + "\n Los personajes son los siguientes:\n"+chars}
|
94 |
-
],
|
95 |
-
temperature=0.3,
|
96 |
-
)
|
97 |
-
return response.choices[0].message.content
|
98 |
-
|
99 |
-
@backoff.on_exception(backoff.expo, openai.error.RateLimitError)
|
100 |
def generate_dialogues1(chars,scene1):
|
101 |
-
response =
|
102 |
model="gpt-4-1106-preview",
|
103 |
messages=[
|
104 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para la escena de un episodio. El usuario te da la escena que tienes que desarrollar y las características de los personajes. Usa el formato de Final Draft."},
|
@@ -108,9 +111,11 @@ def generate_dialogues1(chars,scene1):
|
|
108 |
)
|
109 |
return response.choices[0].message.content
|
110 |
|
111 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
112 |
def generate_dialogues2(chars,scene1,dial1,scene2):
|
113 |
-
response =
|
114 |
model="gpt-4-1106-preview",
|
115 |
messages=[
|
116 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
@@ -122,9 +127,11 @@ def generate_dialogues2(chars,scene1,dial1,scene2):
|
|
122 |
)
|
123 |
return response.choices[0].message.content
|
124 |
|
125 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
126 |
def generate_dialogues3(chars,scene1,dial1,scene2,dial2,scene3):
|
127 |
-
response =
|
128 |
model="gpt-4-1106-preview",
|
129 |
messages=[
|
130 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
@@ -138,9 +145,11 @@ def generate_dialogues3(chars,scene1,dial1,scene2,dial2,scene3):
|
|
138 |
)
|
139 |
return response.choices[0].message.content
|
140 |
|
141 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
142 |
def generate_dialogues4(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4):
|
143 |
-
response =
|
144 |
model="gpt-4-1106-preview",
|
145 |
messages=[
|
146 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
@@ -156,9 +165,11 @@ def generate_dialogues4(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4):
|
|
156 |
)
|
157 |
return response.choices[0].message.content
|
158 |
|
159 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
160 |
def generate_dialogues5(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4,dial4,scene5):
|
161 |
-
response =
|
162 |
model="gpt-4-1106-preview",
|
163 |
messages=[
|
164 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo satírico, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar y las instrucciones. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
@@ -176,9 +187,11 @@ def generate_dialogues5(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4,dial
|
|
176 |
)
|
177 |
return response.choices[0].message.content
|
178 |
|
179 |
-
@backoff.on_exception(backoff.expo, openai.
|
|
|
|
|
180 |
def generate_dialogues6(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4,dial4,scene5,dial5,scene6):
|
181 |
-
response =
|
182 |
model="gpt-4-1106-preview",
|
183 |
messages=[
|
184 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar y las instrucciones. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
|
|
4 |
from reportlab.pdfgen import canvas
|
5 |
from reportlab.pdfbase.pdfmetrics import stringWidth
|
6 |
import backoff
|
7 |
+
import os
|
8 |
|
9 |
+
client = openai.Client(api_key=os.environ.get("OPENAI_API_KEY"))
|
10 |
+
|
11 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
12 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
13 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
14 |
def generate_premisa_serie():
|
15 |
+
response = client.chat.completions.create(
|
16 |
model="gpt-4-1106-preview",
|
17 |
messages=[
|
18 |
{"role": "system", "content": "Eres un guionista de comedia de televisión chistoso, creativo y original. Eres especialista en sarcasmo. Sigue el formato Título: \n Premisa:"},
|
|
|
27 |
premisa = output.split("Premisa:")[1]
|
28 |
return titulo, premisa
|
29 |
|
30 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
31 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
32 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
33 |
def generate_premisa_episodio(prem_serie, keywords):
|
34 |
+
response = client.chat.completions.create(
|
35 |
model="gpt-4-1106-preview",
|
36 |
messages=[
|
37 |
{"role": "system", "content": "Eres el comediante Bill Burr, un guionista de comedia de televisión chistoso, creativo y original. Eres especialista en sit-coms de sarcasmo. Te dan una premisa de una serie y palabras clave para que generes la premisa de un episodio. Sigue el formato Título: \n Premisa:"},
|
|
|
46 |
premisa = output.split("Premisa:")[1]
|
47 |
return titulo, premisa
|
48 |
|
49 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
50 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
51 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
52 |
def generate_outline(premisa):
|
53 |
+
response = client.chat.completions.create(
|
54 |
model="gpt-4-1106-preview",
|
55 |
messages=[
|
56 |
{"role": "system", "content": "Eres un guionista de comedia de televisión especializado en crear conflictos interesantes y comedia de situación. No uses estilos como negritas, itálicas, subrayado. El usuario te dará una premisa y tú te encargas de desarrollarla con la siguiente estructura: 1. Incidente incitante:... \n2. Desarrollo del problema:... \n3. Clímax:... \n4. Resolución:..."},
|
|
|
69 |
|
70 |
return outline_list
|
71 |
|
72 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
73 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
74 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
75 |
def generate_characters(outline):
|
76 |
+
response = client.chat.completions.create(
|
77 |
model="gpt-4-1106-preview",
|
78 |
messages=[
|
79 |
{"role": "system", "content": "Eres un escritor de una comedia situacional. Desarrolla en un enunciado a cada uno de los personajes dado un outline. El usuario te va a dar el outline al que te tienes que apegar. Usa un salto de línea para cada personaje."},
|
|
|
83 |
)
|
84 |
return response.choices[0].message.content
|
85 |
|
86 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
87 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
88 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
89 |
def generate_scenes(outline):
|
90 |
+
response = client.chat.completions.create(
|
91 |
model="gpt-4-1106-preview",
|
92 |
messages=[
|
93 |
{"role": "system", "content": "Eres un escritor de una comedia situacional. Enlista las escenas que formaran el episodio a partir de un outline. El usuario te va a dar el outline al que te tienes que apegar así como sus reglas de conteo de escenas. Usa un salto de línea para cada escena, no uses negritas y usa un renglón por escena separando por dos puntos el nombre de la escena y la descripción."},
|
|
|
97 |
)
|
98 |
return response.choices[0].message.content
|
99 |
|
100 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
101 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
102 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
def generate_dialogues1(chars,scene1):
|
104 |
+
response = client.chat.completions.create(
|
105 |
model="gpt-4-1106-preview",
|
106 |
messages=[
|
107 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para la escena de un episodio. El usuario te da la escena que tienes que desarrollar y las características de los personajes. Usa el formato de Final Draft."},
|
|
|
111 |
)
|
112 |
return response.choices[0].message.content
|
113 |
|
114 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
115 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
116 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
117 |
def generate_dialogues2(chars,scene1,dial1,scene2):
|
118 |
+
response = client.chat.completions.create(
|
119 |
model="gpt-4-1106-preview",
|
120 |
messages=[
|
121 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
|
|
127 |
)
|
128 |
return response.choices[0].message.content
|
129 |
|
130 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
131 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
132 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
133 |
def generate_dialogues3(chars,scene1,dial1,scene2,dial2,scene3):
|
134 |
+
response = client.chat.completions.create(
|
135 |
model="gpt-4-1106-preview",
|
136 |
messages=[
|
137 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
|
|
145 |
)
|
146 |
return response.choices[0].message.content
|
147 |
|
148 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
149 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
150 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
151 |
def generate_dialogues4(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4):
|
152 |
+
response = client.chat.completions.create(
|
153 |
model="gpt-4-1106-preview",
|
154 |
messages=[
|
155 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
|
|
165 |
)
|
166 |
return response.choices[0].message.content
|
167 |
|
168 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
169 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
170 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
171 |
def generate_dialogues5(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4,dial4,scene5):
|
172 |
+
response = client.chat.completions.create(
|
173 |
model="gpt-4-1106-preview",
|
174 |
messages=[
|
175 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo satírico, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar y las instrucciones. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|
|
|
187 |
)
|
188 |
return response.choices[0].message.content
|
189 |
|
190 |
+
@backoff.on_exception(backoff.expo, openai.RateLimitError)
|
191 |
+
@backoff.on_exception(backoff.expo, openai.APIConnectionError)
|
192 |
+
@backoff.on_exception(backoff.expo, openai.APIError)
|
193 |
def generate_dialogues6(chars,scene1,dial1,scene2,dial2,scene3,dial3,scene4,dial4,scene5,dial5,scene6):
|
194 |
+
response = client.chat.completions.create(
|
195 |
model="gpt-4-1106-preview",
|
196 |
messages=[
|
197 |
{"role": "system", "content": "Eres un escritor sarcástico de comedia situacional con humor negro. Escribe el diálogo de manera concisa, realista, irónico y sarcástico para una escena de un episodio. El usuario te da la escena que tienes que desarrollar y las instrucciones. Es muy importante que tomes en cuenta las escenas anteriores. Usa el formato de Final Draft. Los personajes son los siguientes:"+chars},
|