File size: 2,537 Bytes
5c5a9cf
 
 
 
309780e
b828fac
57818b4
18cab23
57818b4
 
9825ea7
a6f5348
 
 
b828fac
9825ea7
5c5a9cf
 
 
b828fac
9825ea7
 
 
5c5a9cf
a6f5348
5c5a9cf
 
 
a6f5348
5c5a9cf
a6f5348
5c5a9cf
 
 
 
 
a6f5348
5c5a9cf
 
 
 
 
 
27e8e8c
5c5a9cf
 
a6f5348
5c5a9cf
b828fac
5c5a9cf
 
 
 
 
b828fac
5c5a9cf
 
a6f5348
ea91512
5c5a9cf
 
 
 
c237974
5c5a9cf
 
 
 
 
b828fac
5c5a9cf
 
b828fac
5c5a9cf
 
 
 
 
 
 
 
 
309780e
5c5a9cf
5c8e028
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
83
84
85
import os
import openai
import gradio as gr
import time
from jtar import jtar_txt

# Set up password
username = os.getenv('username')
password = os.getenv('password')

# Set up OpenAI client
openai_api_key = os.getenv('openai_api_key')
openai.api_key = openai_api_key
client = openai.Client(api_key=openai.api_key)

# Set up assistant
assistant_id = os.getenv('assistant_id')
assistant = client.beta.assistants.retrieve(assistant_id)
thread = client.beta.threads.create()

# Get avatar link
avatar_link = os.getenv('avatar_link')

def chat_with_assistant(message, history):
    # Add the user's message to the thread
    client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content=message
    )
    
    # Run the assistant
    run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant_id
    )
    
    # Wait for the assistant's response
    while True:
        run_status = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
        if run_status.status == 'completed':
            # Retrieve the assistant's response
            messages = client.beta.threads.messages.list(thread_id=thread.id)
            assistant_response = messages.data[0].content[0].text.value
            break
        time.sleep(1)
    
    return assistant_response

# Custom CSS for chat bubbles and colors
custom_css = """
.user-message { background-color: #DCF8C6; }
.assistant-message { background-color: #E2E2E2; }
"""

# Create the Gradio interface
with gr.Blocks(css=custom_css) as demo:
    gr.HTML(f"""<img src = "https://i.postimg.cc/43kfn8Xx/a-charming-pixar-style-3d-render-of-a-dolphin-in-a-j-GGid5px-R86-Wo-FLn-Re27d-Q-w9-Mz-RVy8-Qti-PQ2-Irspua-LQ.png" width="320" height="240">""")
    gr.Markdown("# **IB Overall Results Analyst** 📈")
    chatbot = gr.Chatbot(
        [],
        elem_id="chatbot",
        bubble_full_width=False,
        avatar_images=(None, avatar_link)
    )
    msg = gr.Textbox(
        show_label=False,
        placeholder="Enter text and press enter",
    )

    def user(user_message, history):
        return "", history + [[user_message, None]]

    def bot(history):
        user_message = history[-1][0]
        bot_message = chat_with_assistant(user_message, history)
        history[-1][1] = bot_message
        return history

    msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
        bot, chatbot, chatbot
    )
    gr.Markdown(jtar_txt)

demo.launch(auth=(username, password))