Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import os
|
2 |
import json
|
3 |
import re
|
|
|
4 |
import pandas as pd
|
5 |
from datetime import datetime
|
6 |
from dotenv import load_dotenv
|
@@ -46,6 +47,17 @@ llm = ChatOpenAI(temperature=0.6, model_name="gpt-3.5-turbo", openai_api_key=ope
|
|
46 |
teen_memory = ConversationBufferMemory()
|
47 |
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L6-v2")
|
48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
def load_youtube_links():
|
50 |
path = os.path.join(os.path.dirname(__file__), "kids_youtube_links.csv")
|
51 |
if os.path.exists(path):
|
@@ -157,7 +169,13 @@ def generate_kids(age, theme, tone, name, length):
|
|
157 |
messages = kids_prompt.format_messages(age=age, theme=theme, tone=tone, name=name, length=length)
|
158 |
story = llm(messages).content
|
159 |
save_story_to_file(name, story, age_group="kids", tone=tone, theme=theme)
|
160 |
-
video_html = get_youtube_link(age, theme)
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
return story, video_html
|
162 |
|
163 |
def generate_kids_audio(story):
|
@@ -296,6 +314,15 @@ def generate_teen(genre, tone, name, length, uploaded_file=None, edited_text="",
|
|
296 |
length=prompt_len
|
297 |
)
|
298 |
story = llm(messages).content.strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
last_story_text["story"] = story
|
300 |
save_story_to_file(name, story, age_group="teen", tone=tone, theme=genre)
|
301 |
return story, uploaded_preview
|
|
|
1 |
import os
|
2 |
import json
|
3 |
import re
|
4 |
+
import openai
|
5 |
import pandas as pd
|
6 |
from datetime import datetime
|
7 |
from dotenv import load_dotenv
|
|
|
47 |
teen_memory = ConversationBufferMemory()
|
48 |
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L6-v2")
|
49 |
|
50 |
+
def moderate_output(text):
|
51 |
+
openai.api_key = openai_key # already loaded from env
|
52 |
+
try:
|
53 |
+
response = openai.Moderation.create(input=text)
|
54 |
+
flagged = response["results"][0]["flagged"]
|
55 |
+
categories = response["results"][0]["categories"]
|
56 |
+
return flagged, categories
|
57 |
+
except Exception as e:
|
58 |
+
print(f"❌ Moderation error: {e}")
|
59 |
+
return False, {}
|
60 |
+
|
61 |
def load_youtube_links():
|
62 |
path = os.path.join(os.path.dirname(__file__), "kids_youtube_links.csv")
|
63 |
if os.path.exists(path):
|
|
|
169 |
messages = kids_prompt.format_messages(age=age, theme=theme, tone=tone, name=name, length=length)
|
170 |
story = llm(messages).content
|
171 |
save_story_to_file(name, story, age_group="kids", tone=tone, theme=theme)
|
172 |
+
video_html = get_youtube_link(age, theme) # from your CSV file
|
173 |
+
flagged, categories = moderate_output(story)
|
174 |
+
if flagged:
|
175 |
+
return "⚠️ Story flagged by safety filters. Please try different inputs.", None
|
176 |
+
|
177 |
+
save_story_to_file(name, story, age_group="kids", tone=tone, theme=theme)
|
178 |
+
video_html = get_youtube_link(age, theme)
|
179 |
return story, video_html
|
180 |
|
181 |
def generate_kids_audio(story):
|
|
|
314 |
length=prompt_len
|
315 |
)
|
316 |
story = llm(messages).content.strip()
|
317 |
+
# ✅ Check story with moderation filter
|
318 |
+
flagged, categories = moderate_output(story)
|
319 |
+
if flagged:
|
320 |
+
return (
|
321 |
+
"⚠️ This story was flagged by OpenAI's moderation system for safety concerns. "
|
322 |
+
"Please try using a different character name, tone, or inspiration.",
|
323 |
+
uploaded_preview
|
324 |
+
)
|
325 |
+
|
326 |
last_story_text["story"] = story
|
327 |
save_story_to_file(name, story, age_group="teen", tone=tone, theme=genre)
|
328 |
return story, uploaded_preview
|