""" noun generator module will take the string and return the nouns list in string. """ import os import openai from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) openai.api_key = os.getenv('OPENAI_API_KEY') def make_prompt()-> str: """ make_prompt take code as input and retirn the prompt with the given pargraph. Parameters ---------- paragraph: str string text to find the nouns. action: str type of action. Return ------ prompt: str prompt to find the nouns from given paragraph. """ file_path = "./prompt/blog_or_essay_prompt.txt" with open(file_path, "r", encoding = "utf8") as file: prompt = file.read() return prompt def generate_blog(topic = " ", content_type = " ", link = " ", tone = " ", length = 500): """ code_debug method take topic type link tone length as input and return the output according to the prompt. Parameters ---------- topic: str topic of essay or blog. type: str essay or blog. link: str link of user sources. tone: str essay or blog tone. Return ------ return generated blog or essay. """ full_text = "" length = str(length) prompt = make_prompt() prompt = prompt.format(TOPIC = topic, WORDS = length, TYPE = content_type, LINKS = link ) tone_prompt = f"tone should be {tone}" messages=[ { "role": "system", "content": prompt }, { "role": "user", "content": tone_prompt } ] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages = messages, temperature = 1, top_p = 1, frequency_penalty = 0, presence_penalty = 0, stream = True, stop = None ) try: for chunk in response: chunk_message = chunk['choices'][0]['delta'].get("content") full_text = full_text + chunk_message yield full_text except Exception as error: print("OPenAI reponse (streaming) error" + str(error)) return 503