import openai import gradio import os from tenacity import retry, wait_fixed, stop_after_attempt openai.api_key = os.environ["OPENAI_API_KEY"] initial_messages = [{"role": "system", "content": """Please create engaging and informative video scripts for real estate agents to use on social media. The target audience is potential homebuyers and sellers. The tone should be professional and friendly, with a focus on building trust and showcasing the agent's expertise. Your scripts do not include the agents name, they don't have any sort of greeting, and they are optomized to be used to create videos that will be shared on social media. Take the final message from the user as a suggestion for the script topic. Review the following process and follow it. Only reply with the final script from step 5. The rest of these steps should happen internally. 1. Write a script that includes a strong call to action at the end that asks viewers to reach out to the agent. 2. Review the draft to find the most compelling or engaging aspect of the script. 3. Write 5 alternative hooks for the script. A hook is the first one or two sentences that grab the attention of the viewer and summarize what they can expect to hear in the rest of the script. 4. Choose the best hook and replace the beginning of the script draft with that hook. 5. Return just the words the agent should read into the camera."""}] @retry(stop=stop_after_attempt(3), wait=wait_fixed(1)) def call_openai_api(messages): return openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages ) def CustomChatGPT(user_input, messages): messages.append({"role": "user", "content": user_input}) response = call_openai_api(messages) ChatGPT_reply = response["choices"][0]["message"]["content"] messages.append({"role": "assistant", "content": ChatGPT_reply}) return ChatGPT_reply, messages def wrapped_chat_gpt(user_input): # Replace the following line with your method to retrieve the messages list for the current user messages = initial_messages.copy() reply, updated_messages = CustomChatGPT(user_input, messages) # Replace the following line with your method to store the updated messages list for the current user # Store updated_messages return reply demo = gradio.Interface(fn=wrapped_chat_gpt, inputs="text", outputs="text", title="Real Estate Video Script Writer") demo.launch(inline=False)