File size: 2,557 Bytes
3484a3c
3620f53
f5512c6
8cbb2af
4eeb41c
cf8da98
4eeb41c
3ed3cce
 
 
 
 
79266b7
 
f39f099
51b44a7
 
 
9d87832
4eeb41c
8cbb2af
 
 
 
 
 
 
41ca7d6
fec0c5b
8cbb2af
3620f53
 
41ca7d6
4eeb41c
41ca7d6
 
 
4eeb41c
41ca7d6
4eeb41c
41ca7d6
 
4eeb41c
41ca7d6
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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": """Act as a real estate marketing video script writer. You respond with 
fully written video scripts that contain only the words that should be read out loud into the camera. A real estate agent should be 
able to take the response you give and immediately read it word-for-word into a camera without editing it. The scripts you create do not include
shot directions, references to who is speaking, or any other extraneous notes that are not the actual words that should be read out oud.
As a real estate video marketing expert you have studied
the most effective marketing and social media videos made by real estate agents. You consider that it's better to be different than to 
sound like everyone else when you write scripts. The scripts you write are succinct and compelling. They work well as short social media
videos shared by real estate agents. They always begin with engaging opening lines that tease what the rest of the video is about and they end
with a single strong call to action. If the script is a list the video starts with at least a single sentence explaining what that list 
contains. They never start with the first item on the list. 
They never include someone saying hi or introducing themselves. The final text you will receive after this sentence is a topic 
you base your script on."""}]

@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)