File size: 1,634 Bytes
c77bdbe
 
db9f296
c77bdbe
5557558
c77bdbe
db9f296
c77bdbe
e08466a
47671b6
db9f296
 
 
 
47671b6
a700e33
47671b6
 
 
76d3ade
 
8dd3847
 
76d3ade
5557558
c77bdbe
 
 
 
556b474
c77bdbe
 
4435384
 
c77bdbe
8dd3847
 
c77bdbe
 
 
 
4435384
 
ec3f884
 
14a0222
4435384
 
8abb177
0ba26be
4435384
c77bdbe
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
import openai
import streamlit as st
from PIL import Image

st.title("Student Cleaning Service")

# Streamlit Secrets
openai.api_key = st.secrets["OPENAI_API_KEY"]
grounding = st.secrets["GROUNDING"]

image = Image.open('logo.png')

st.image(image)

if "openai_model" not in st.session_state:
    st.session_state["openai_model"] = "gpt-5-mini"

if "messages" not in st.session_state:
    st.session_state.messages = []    

for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

if prompt := st.chat_input("Ask me anything about our cleaning services!"):    
    st.session_state.messages.append({"role": "user", "content": prompt})
    with st.chat_message("user"):
        st.markdown(prompt)

    with st.chat_message("assistant"):
        message_placeholder = st.empty()
        full_response = ""
        
        response = openai.responses.create(
            model=st.session_state["openai_model"],
            instructions = grounding,
            input=[
                {"role": m["role"], "content": m["content"]}
                for m in st.session_state.messages
            ],
            stream=True,
        )
        
        for event in response:
            if event.type == 'response.output_text.delta':
                full_response += event.delta.replace('\\$','$').replace('$','\\$')
                message_placeholder.markdown(full_response + "▌")
        
        message_placeholder.markdown(full_response)
        print(full_response)
        
    st.session_state.messages.append({"role": "assistant", "content": full_response})