File size: 3,891 Bytes
dd05464
 
 
 
 
 
 
 
 
 
948174f
dd05464
ee6fbcc
948174f
 
 
dd05464
948174f
 
 
 
dd05464
948174f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee6fbcc
948174f
dd05464
 
 
 
 
 
 
 
 
 
948174f
dd05464
948174f
 
dd05464
ee6fbcc
dd05464
 
 
 
 
 
 
 
 
 
 
ee6fbcc
 
 
dd05464
 
ee6fbcc
 
dd05464
 
 
ee6fbcc
 
dd05464
 
 
 
 
ee6fbcc
dd05464
ee6fbcc
dd05464
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
109
110
111
112
113
114
import gradio as gr
import os
import time
import openai
import pandas as pd

openai_api_key_textbox = ""
model = None
tokenizer = None
generator = None
openai.api_key = "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"

def csv_prompter(question):    
    json_file = open('order.json')
    json_data = json.load(json_file)
    json_data = json_data['records']
    
    print(json_data)
    fulltext = []
    #print all nm in json file
    for i in json_data:
    
        # identify if opts in this item
        opt_list = []
        if 'opt' in i:
            for opt1 in i['opt']:
                for opt2 in opt1['opts']:
                    opt_list.append(opt2['nm'])
        if len(opt_list) > 100:
            print(str(i['pid'])+" "+i['nm']+" Options:"+str(opt_list))
            each = i['nm']+" Options:"+str(opt_list)
            fulltext.append(each)
        else:
            print(str(i['pid'])+" "+i['nm'])
            each = i['nm']
            fulltext.append(each)
    
    
    fulltext = '\n'.join(fulltext)
    #fulltext = fulltext + "\n 00:00 - Customer: Hey, dear, can I please take out? 00:03 - Waiter: I'm up here. Okay go ahead. 00:06 - Customer: Can I get two sesame chicken dinners? 00:10 - Customer: One with lo mein and one with fried rice? 00:13 - Customer: Can I get, I know spring rolls come with each of those, but can I get just as long 00:17 - Customer: as I've got a total of two spring rolls and two egg rolls? 00:21 - Waiter: Okay. Anything? 00:22 - Customer: And a small bowl of hot and sour soup. 00:25 - Customer: And that's it. 00:26 - Waiter: Alright. Two sesame chickens, small one with fried rice, small one with lo mein, and both of those with spring rolls, two egg rolls and a small hot and sour soup. 00:30 - Customer: It's 205-473-1750. 00:36 - Waiter: What's the fun number please? 00:43 - Waiter: Just got around 20 minutes. Thank you. 00:43 - Customer: Okay, dear, thank you so much."
    fulltext = fulltext+'\n'
    #read txt file in lines
    f = open("talk.txt", "r")
    for x in f:
        fulltext = fulltext + x
    
    
    
    fulltext = fulltext+'Based on the above dialogue and menu, If you were a waiter, what would you answer next?'
    print(fulltext)
    messages = [
            {"role": "system", "content": ""},
        ]
    messages.append(
        {"role": "user", "content": f"{fulltext}"}
    )
    rsp = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages
    )
    response = rsp.get("choices")[0]["message"]["content"]
    print()
    
    print(response)

    return response



with gr.Blocks() as demo:
    
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear = gr.Button("Clear")
    Initialization = gr.Button("Initialization")

    def restart(history):
        invitation = "Waiter: "
        human_invitation = "Customer: "
        return [[" \n",invitation+"Taste of China, may I help you?"]]
            
    def user(user_message, history):
        invitation = "Waiter: "
        human_invitation = "Customer: "
        return "", history +[[human_invitation+user_message, None]]

    def bot(history):
        invitation = "Waiter: "
        human_invitation = "Customer: "
        print(history)

        
        question = ""
        for each_ques in history:
            question = question+ each_ques[0].replace("Customer: ","")+" \n"

        response = csv_prompter(question)
        
        response = invitation+ response
        history[-1][1] = response

        return history

    msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
        bot, chatbot, chatbot
    )
    clear.click(lambda: None, None, chatbot, queue=False).then(restart, chatbot, chatbot)
    Initialization.click(lambda: None, None, chatbot, queue=False).then(restart, chatbot, chatbot)
    

    
if __name__ == "__main__":
    demo.launch()