hra's picture
Update app.py
8603955
import json
import requests
import gradio as gr
import random
import time
import os
import datetime
from datetime import datetime
import openai
import re
#print('for update')
HRA_TOKEN=os.getenv("HRA_TOKEN")
from langchain.agents import load_tools, Tool, initialize_agent
from langchain.llms import OpenAI
from langchain.agents import ZeroShotAgent, Tool, AgentExecutor
from langchain.agents import initialize_agent, Tool
from langchain import LLMChain
from langchain import PromptTemplate
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
url_decodemprompts='https://us-central1-createinsightsproject.cloudfunctions.net/gethrahfprompts'
data={"prompt_type":'chatgpt_blog',"hra_token":HRA_TOKEN}
try:
r = requests.post(url_decodemprompts, data=json.dumps(data), headers=headers)
except requests.exceptions.ReadTimeout as e:
print(e)
#print(r.content)
prompt=str(r.content, 'UTF-8')
print(prompt)
template=prompt.split('SEPERATOR')[0]
querieslist=prompt.split('SEPERATOR')[1].split(',')
titleslist=prompt.split('SEPERATOR')[2].split(',')
def getblog(text_inp1,text_inp2):
print(text_inp1,text_inp2)
print(datetime.today().strftime("%d-%m-%Y"))
response_nsfw = requests.get('https://github.com/coffee-and-fun/google-profanity-words/raw/main/data/list.txt')
data_nsfw = response_nsfw.text
nsfwlist=data_nsfw.split('\n')
nsfwlowerlist=[]
for each in nsfwlist:
if each!='':
nsfwlowerlist.append(each.lower())
mainstring=text_inp1
foundnsfw=0
for each_word in nsfwlowerlist:
raw_search_string = r"\b" + each_word + r"\b"
match_output = re.search(raw_search_string, mainstring)
no_match_was_found = ( match_output is None )
if no_match_was_found:
foundnsfw=0
else:
foundnsfw=1
print(each_word)
break
if foundnsfw==1:
error_msg="Unsafe content found. Please try again with different keywords."
print(error_msg)
return(error_msg)
if text_inp2!='':
template_tmp=template
template_tmp=template_tmp.replace("{topic}",text_inp1).strip()
llm = OpenAI(temperature=0,openai_api_key=text_inp2)
prompt_template = PromptTemplate(
input_variables=["query"],
template=template_tmp
)
bloglist=[]
for each in querieslist:
query = each
llm_chain = LLMChain(prompt=prompt_template, llm=llm,verbose=True)
result=llm_chain.run(query)
#print(result)
bloglist.append(result)
blog=""+bloglist[len(bloglist)-1]+"\n\n"
for i in range(len(bloglist)-1):
temp=titleslist[i]+'\n'+bloglist[i]+'\n\n'
blog+=temp
print(blog)
mainstring=blog
foundnsfw=0
for each_word in nsfwlowerlist:
raw_search_string = r"\b" + each_word + r"\b"
match_output = re.search(raw_search_string, mainstring)
no_match_was_found = ( match_output is None )
if no_match_was_found:
foundnsfw=0
else:
foundnsfw=1
print(each_word)
break
if foundnsfw==1:
error_msg="Unsafe content found. Please try again with different keywords."
print(error_msg)
return(error_msg)
else:
return(blog)
else:
return "Enter OpenAPI key"
with gr.Blocks() as demo:
with gr.Row():
gr.Markdown("<h1><center>Everybody Can Blog</center></h1>")
gr.Markdown(
"""Everybody can blog. Just enter a topic/ keyword & get a full blog from the ChatGPT model. See examples for guidance. Experience the power of Prompt Engineering."""
)
with gr.Row():
with gr.Column():
textbox1 = gr.Textbox(placeholder="Enter topic/ keyword (1-3 words) to generate blog...", lines=1,label='Topic')
textbox2 = gr.Textbox(placeholder="Enter OpenAPI Key...", lines=1,label='OpenAPI Key')
with gr.Column():
btn = gr.Button("Generate")
output1 = gr.Textbox(lines=5,label='Blog')
btn.click(getblog,inputs=[textbox1,textbox2], outputs=[output1])
examples = gr.Examples(examples=['5G','Minimalism','Rock music','Electric Vehicles','Humanity vs Robots'],
inputs=[textbox1])
demo.launch()