File size: 2,080 Bytes
aa0eed8
b1972fa
031211a
aa0eed8
e186580
 
89fd850
7d51c10
 
 
89fd850
453ee12
 
 
 
 
 
 
 
 
24755bb
 
 
 
 
 
 
 
e186580
7d155ee
 
 
 
 
031211a
7d155ee
06d9591
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453ee12
 
06d9591
453ee12
 
 
 
 
24755bb
 
aa0eed8
19797f3
 
 
 
8fae4d3
 
19797f3
8fae4d3
19797f3
 
8fae4d3
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
import gradio as gr
import json, openai, os, time
from openai import OpenAI

client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

def show_json(obj):
    print("###")
    print(json.loads(obj.model_dump_json()))
    print("###")

def wait_on_run(run, 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.5)
    return run

def extract_content_value(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):    
    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-4-1106-preview",
    )
    
    show_json(assistant)

    thread = client.beta.threads.create()
    
    show_json(thread)

    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content="I need to solve the equation `3x + 11 = 14`. Can you help me?",
    )
    
    show_json(message)

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

    run = wait_on_run(run, thread)
    
    show_json(run)

    messages = client.beta.threads.messages.list(thread_id=thread.id)
    
    show_json(messages)

    return extract_content_value(messages)[0]

gr.ChatInterface(
    chat,
    chatbot=gr.Chatbot(height=300),
    textbox=gr.Textbox(placeholder="Ask me a yes or no question", container=False, scale=7),
    title="Math Tutor",
    description="Ask Math Tutor any question",
    theme="soft",
    examples=["I need to solve the equation `3x + 11 = 14`. Can you help me?"],
    cache_examples=True,
    retry_btn=None,
    undo_btn=None,
    clear_btn="Clear",
).launch()