File size: 2,446 Bytes
d7697ac
 
67164b3
694caf5
48c7413
d7697ac
 
 
 
 
 
 
7a67fb8
 
d62df08
7a67fb8
 
 
 
49f818b
7a67fb8
d62df08
7a67fb8
 
 
 
 
 
d62df08
7a67fb8
 
 
 
 
 
 
 
 
 
d62df08
7a67fb8
 
 
 
d62df08
7a67fb8
d62df08
7a67fb8
d62df08
 
 
 
 
 
 
 
 
 
7a67fb8
 
 
d62df08
 
d7697ac
 
 
 
 
 
 
 
d5140c7
db4a355
3109f0f
 
95986fb
d7697ac
 
890f2c9
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
import gradio as gr
import openai
from dotenv import load_dotenv
import os
import time

load_dotenv()
openai.api_key = os.getenv('OPENAI_API_KEY')
assistant_id=os.getenv('ASSISTANT_ID')
client = openai.OpenAI(api_key=openai.api_key)

def ask_openai(question):
    try:
        thread = client.beta.threads.create()

        client.beta.threads.messages.create(
            thread_id=thread.id,
            role="user",
            content=question,
            model=gpt-4-1106-preview
        )

        run = client.beta.threads.runs.create(
            thread_id=thread.id,
            assistant_id=assistant_id
        )

        response_received = False
        timeout = 30  # seconds
        start_time = time.time()

        while not response_received and time.time() - start_time < timeout:
            run_status = client.beta.threads.runs.retrieve(
                thread_id=thread.id,
                run_id=run.id,
            )
            if run_status.status == 'completed':
                response_received = True
            else:
                time.sleep(4)  

        if not response_received:
            return "Response timed out."

        steps = client.beta.threads.runs.steps.list(
            thread_id=thread.id,
            run_id=run.id
        )

        if steps.data:
            last_step = steps.data[-1]
            if last_step.type == 'message_creation':
                message_id = last_step.step_details.message_creation.message_id
                message = client.beta.threads.messages.retrieve(
                    thread_id=thread.id,
                    message_id=message_id
                )
                return message.content[0]['text']['value']

        return "No response."
    except Exception as e:
        return f"An error occurred: {str(e)}"  

examples = [
    ["My Eucalyptus tree is struggling outside in the cold weather in europe"],
    ["My callatea house plant is yellowing."],
    ["We have a catcus as work that suddently started yellowing and wilting."]
]

iface = gr.Interface(
    fn=ask_openai,
    inputs=gr.Textbox(lines=5, placeholder="Hi there, I have a plant that's..."),
    outputs=gr.Markdown(),
    title="Wecome to Tonic's Bulbi Plant Doctor",
    description="""Introduce your plant below. Be as descriptive as possible. Respond with additional information when prompted. Save your plants with Bulbi Plant Doctor""",
    examples=examples
)

iface.launch()