File size: 2,368 Bytes
299737c
 
 
b9c9673
e5c82ef
d1d9ccb
 
 
8ffbbb5
25ecdd2
299737c
d1d9ccb
 
 
299737c
d1d9ccb
299737c
d1d9ccb
e5bce47
299737c
 
 
 
d1d9ccb
299737c
 
d1d9ccb
000f391
d1d9ccb
 
 
 
 
000f391
 
d1d9ccb
299737c
d1d9ccb
30a3156
 
 
 
d1d9ccb
e5c82ef
d1d9ccb
 
 
 
 
 
 
 
 
 
 
f7f35b2
e5c82ef
d1d9ccb
 
 
e5c82ef
d1d9ccb
e5c82ef
d1d9ccb
 
 
 
 
 
 
 
 
4d1d77e
d1d9ccb
 
4d1d77e
d1d9ccb
 
 
e5c82ef
 
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
import streamlit as st
import os
from openai import OpenAI
import time

st.title("Math Tutor Chatbot")

def main1(client, thread_id, prompt):
    assistantId = "asst_pCMn8HOHVthGSn30KEAtbee6"
    
    message = client.beta.threads.messages.create(
        thread_id=thread_id,
        role="user",
        content=prompt
    )
    
    run = client.beta.threads.runs.create(
        thread_id=thread_id,
        assistant_id=assistantId,
        instructions="Please address the user as Rumaisa."
    )
    
    run = client.beta.threads.runs.retrieve(
        thread_id=thread_id,
        run_id=run.id
    )
    
    while run.status != "completed":
        time.sleep(1)
        run = client.beta.threads.runs.retrieve(
            thread_id=thread_id,
            run_id=run.id
        )
                
    messages = client.beta.threads.messages.list(
        thread_id=thread_id
    )
    
    arr = {}
    for message in reversed(messages.data):
        arr[message.role] = message.content[0].text.value
    return arr

def main():
    session_id = st.session_state.get('session_id', None)
    if session_id is None:
        session_id = os.urandom(16).hex()
        st.session_state['session_id'] = session_id

    if 'client' not in st.session_state:
        st.session_state['client'] = None

    with st.form(key='my_form'):
        user_input = st.text_input(label='You:', key='user_input')
        submit_button = st.form_submit_button(label='Send')

    with st.sidebar:
        st.subheader("Add your OPENAI API")
        api = st.text_input("API:", type='password')

    if not api:
        st.warning("Please enter API to continue")
    else:
        if 'client' not in st.session_state or st.session_state['client'] is None:
            st.session_state['client'] = OpenAI(api_key=api)

        client = st.session_state['client']

        if submit_button and user_input:
            if 'thread_id' not in st.session_state:
                thread = client.beta.threads.create()
                st.session_state['thread_id'] = thread.id
                thread_id = thread.id  # Assign thread_id here
            else:
                thread_id = st.session_state['thread_id']
        
            response = main1(client, thread_id, user_input)
            st.write('Chatbot:', response.get('assistant', ''))

if __name__ == '__main__':
    main()