File size: 3,045 Bytes
6cc5a1c
14a2888
 
a7c04b3
a9d1942
 
 
 
14a2888
50a66b5
5782555
5a93e47
50a66b5
4a2eb2b
 
 
 
da44e90
 
 
5782555
 
 
 
e7e342c
 
 
6d6a1d2
e7e342c
 
 
 
 
 
 
14a2888
 
 
e7e342c
14a2888
 
da44e90
 
b097329
14a2888
 
6d6a1d2
e7e342c
 
 
14a2888
 
 
 
 
 
e7e342c
 
 
14a2888
 
da44e90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a2eb2b
 
14a2888
da44e90
14a2888
 
da44e90
 
 
 
14a2888
 
4a2eb2b
14a2888
 
e7e342c
4a2eb2b
6d6a1d2
 
14a2888
 
 
 
 
 
 
 
 
 
 
 
 
 
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

import openai
import gradio as gr
import os
from gtts import gTTS
from pdfminer.high_level import extract_text


openai.api_key = os.getenv("OPENAI_API_KEY")

from transformers import pipeline
p = pipeline("automatic-speech-recognition",model="openai/whisper-tiny")

def text_to_speech(text):
    myobj = gTTS(text=text, lang='en', slow=False) 
    myobj.save("test.wav") 
    return 'test.wav'



def transcribe(audio):
    text = p(audio)["text"]
    return text
    
def sentiment(text):
    response = openai.Completion.create(
    model="text-davinci-003",
    prompt=f"calssify the text into below sentiment category\n\ntext :  {text}\"\n\n['positive','negative','neutral']\n",
    temperature=1,
    max_tokens=256,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0)
    return response.choices[0].text.strip()
    
 
messages = [
    {"role": "system", 
     "content": "you name is Rebecca and you are a Pepsico call center assistant and your job is to take the order from the customer and also analysis the sentiment of the customer"}
]

def chatbot(input1,input2):
    if input1:
        input =input1
        input = transcribe(input)
        messages.append({"role": "user", "content": input})
        if sentiment(input) == 'negative':
            reply = "Sorry for any inconvinience. We are tranfering your call."
        else:
            chat = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=messages,
            temperature=0.2,
            max_tokens=320,
            top_p=1,
            frequency_penalty=0,
            presence_penalty=0)
            reply = chat.choices[0].message.content        
    
        messages.append({"role": "assistant", "content": reply})
        return reply
    elif input2:
        input =input2
        messages.append({"role": "user", "content": input})
        if sentiment(input) == 'negative':
            reply = "Sorry for any inconvinience. We are tranfering your call."
        else:
            chat = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=messages,
            temperature=0.2,
            max_tokens=320,
            top_p=1,
            frequency_penalty=0,
            presence_penalty=0)
            reply = chat.choices[0].message.content        
    
        messages.append({"role": "assistant", "content": reply})
        return text_to_speech(reply)
        

        
##inputs = gr.inputs.Textbox(lines=7, label="Chat with PepsiCo AI assitant")

#inputs= gr.Audio(source="microphone", type="filepath")
        
inputs= [ gr.Audio(source="microphone", type="filepath"),
          gr.inputs.Textbox(lines=7)]


#outputs = gr.outputs.Textbox(label="Reply")

gr.Interface(fn= chatbot, 
             inputs= inputs, 
             outputs= 'audio', 
             title="PepsiCo-chatbot",
             description="Give your order",
             theme="compact").launch()


# gr.Interface(
#     fn=transcribe, 
#     inputs= inputs, 
#     outputs="text"

# ).launch()