File size: 1,644 Bytes
b4e3576
 
 
 
 
ad10eed
4347999
 
b4e3576
4347999
b4e3576
4347999
b4e3576
4347999
ad10eed
b4e3576
ad10eed
4347999
ad10eed
 
 
 
 
 
 
 
 
 
 
 
 
b4e3576
ad10eed
 
 
 
4347999
b4e3576
4347999
ad10eed
b4e3576
 
ad10eed
b4e3576
 
 
4347999
b4e3576
ad10eed
 
b4e3576
4347999
b4e3576
4347999
 
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
import gradio as gr
import openai
import os
import time

# Load secrets from HF Space secrets
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
ASSISTANT_ID = os.getenv("OPENAI_ASSISTANT_ID")

openai.api_key = OPENAI_API_KEY

def chat_with_assistant(message):
    try:
        if not OPENAI_API_KEY or not ASSISTANT_ID:
            return "🚫 Missing OpenAI credentials or Assistant ID"

        # Create thread + add user message
        thread = openai.beta.threads.create()
        openai.beta.threads.messages.create(
            thread_id=thread.id,
            role="user",
            content=message
        )

        # Run the assistant
        run = openai.beta.threads.runs.create(
            thread_id=thread.id,
            assistant_id=ASSISTANT_ID
        )

        # Wait until complete
        while True:
            run_status = openai.beta.threads.runs.retrieve(
                thread_id=thread.id,
                run_id=run.id
            )
            if run_status.status == "completed":
                break
            elif run_status.status == "failed":
                return "❌ Assistant failed to generate a response."
            time.sleep(1)

        # Fetch reply
        messages = openai.beta.threads.messages.list(thread_id=thread.id)
        for msg in reversed(messages.data):
            if msg.role == "assistant":
                return msg.content[0].text.value

        return "⚠️ No assistant reply found."

    except Exception as e:
        return f"❌ Error: {str(e)}"

demo = gr.Interface(fn=chat_with_assistant, inputs="text", outputs="text", title="LOR Chat Assistant")
demo.launch()