-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathassistant.py
82 lines (60 loc) · 1.98 KB
/
assistant.py
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from openai import OpenAI
from time import sleep
client = OpenAI()
starting_assistant = ""
starting_thread = ""
def create_assistant():
if starting_assistant == "":
my_assistant = client.beta.assistants.create(
instructions="You are a helpful assistant.",
name="MyQuickstartAssistant",
model="gpt-3.5-turbo",
)
else:
my_assistant = client.beta.assistants.retrieve(starting_assistant)
return my_assistant
def create_thread():
if starting_thread == "":
thread = client.beta.threads.create()
else:
thread = client.beta.threads.retrieve(starting_thread)
return thread
def send_message(thread_id, message):
thread_message = client.beta.threads.messages.create(
thread_id,
role="user",
content=message,
)
return thread_message
def run_assistant(thread_id, assistant_id):
run = client.beta.threads.runs.create(
thread_id=thread_id, assistant_id=assistant_id
)
return run
def get_newest_message(thread_id):
thread_messages = client.beta.threads.messages.list(
thread_id=thread_id,
order="asc"
)
return thread_messages.data[0]
def get_run_status(thread_id, run_id):
run = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run_id)
return run.status
def main():
my_assistant = create_assistant()
my_thread = create_thread()
while True:
user_message = input("Enter your message: ")
if user_message.lower() == "exit":
break
send_message(my_thread.id, user_message)
run = run_assistant(my_thread.id, my_assistant.id)
while run.status != "completed":
run.status = get_run_status(my_thread.id, run.id)
sleep(1)
print("⏳", end="\r", flush=True)
sleep(0.5)
response = get_newest_message(my_thread.id)
print("Response:", response.content[0].text.value)
if __name__ == "__main__":
main()