Spaces:
Running
Running
File size: 2,929 Bytes
aa0eed8 12338d7 031211a aa0eed8 12c2b66 ee66ad7 d06678c 12c2b66 d06678c 5295650 12c2b66 273f79a 12c2b66 5295650 bd96781 12c2b66 a6aeefa 12c2b66 5295650 c2a459e 5295650 df144ba 453ee12 bd96781 df144ba 9ea93d2 453ee12 d06678c df144ba 453ee12 12c2b66 24755bb df144ba 38dfd80 df144ba 24755bb 3017744 719f157 df144ba 7fd13ba a6aeefa 244f050 a6aeefa 719f157 a6aeefa 1ec4b78 0231016 273f79a 5bb778f 9ea93d2 244f050 a6aeefa 06d9591 bd96781 06d9591 12c2b66 4117a83 06d9591 4514b12 06cc452 bd96781 12c2b66 06d9591 df144ba 06d9591 4514b12 453ee12 bd96781 453ee12 4514b12 24755bb 12c2b66 aa0eed8 19797f3 976e692 8fae4d3 a985e86 19797f3 9ea93d2 976e692 19797f3 8fae4d3 19797f3 5d6c0c0 19797f3 |
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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
import gradio as gr
import json, openai, os, time
from openai import OpenAI
_client = None
_assistant = None
_thread = None
def show_json(str, obj):
print(f"===> {str}\n{json.loads(obj.model_dump_json())}")
def init_assistant():
global _client, _assistant, _thread
_client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
_assistant = _client.beta.assistants.create(
name="Math Tutor",
instructions="You are a personal math tutor. Answer questions briefly, in a sentence or less.",
model="gpt-4o-mini",
)
_thread = _client.beta.threads.create()
def wait_on_run(run):
global _client, _thread
while run.status == "queued" or run.status == "in_progress":
run = _client.beta.threads.runs.retrieve(
thread_id=_thread.id,
run_id=run.id,
)
time.sleep(0.25)
return run
def extract_content_values(data):
content_values = []
for item in data.data:
for content in item.content:
if content.type == 'text':
content_values.append(content.text.value)
return content_values
def chat(message, history):
global _client, _assistant, _thread
#history_openai_format = []
#for human, assistant in history:
# history_openai_format.append({"role": "user", "content": human})
# history_openai_format.append({"role": "assistant", "content":assistant})
#history_openai_format.append({"role": "user", "content": message})
#if len(history_openai_format) == 1:
if _client == None:
init_assistant()
#show_json("assistant", _assistant)
#show_json("thread", _thread)
#print("### history")
#print(len(history_openai_format))
#print(history_openai_format)
message = _client.beta.threads.messages.create(
role="user",
thread_id=_thread.id,
content=message,
)
#show_json("message", message)
run = _client.beta.threads.runs.create(
assistant_id=_assistant.id,
thread_id=_thread.id,
)
run = wait_on_run(run)
show_json("run", run)
messages = _client.beta.threads.messages.list(thread_id=_thread.id)
show_json("messages", messages)
return extract_content_values(messages)[0]
gr.ChatInterface(
chat,
chatbot=gr.Chatbot(height=300),
textbox=gr.Textbox(placeholder="Ask Math Tutor any question", container=False, scale=7),
title="Math Tutor",
description="Question",
theme="soft",
examples=["I need to solve the equation '3x + 13 = 11'. Can you help me?"],
cache_examples=False,
retry_btn=None,
undo_btn=None,
clear_btn="Clear",
#multimodal=True,
#additional_inputs=[
# gr.Textbox("You are a personal math tutor. Answer questions briefly, in a sentence or less.", label="System Prompt"),
#],
).launch() |