Spaces:
Sleeping
Sleeping
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() | |