File size: 3,293 Bytes
c18ef0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
from gpt_index import SimpleDirectoryReader, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import openai

API_URL = "https://api.openai.com/v1/chat/completions"

openai.api_key = os.environ["OPENAI_API_KEY"]

top_p_chatgpt = 1.0
temperature_chatgpt = 1.0

def predict_chatgpt(inputs,chat_counter_chatgpt, chatbot_chatgpt=[], history=[]):
    if chat_counter_chatgpt != 0:
        messages = []
        for data in chatbot_chatgpt:
            temp1 = {}
            temp1["role"] = "user"
            temp1["content"] = data[0]
            temp2 = {}
            temp2["role"] = "assistant"
            temp2["content"] = data[1]
            messages.append(temp1)
            messages.append(temp2)
        temp3 = {}
        temp3["role"] = "user"
        temp3["content"] = inputs
        messages.append(temp3)

    #os.environ['OPENAI_API_KEY'] =  openai.api_key
    chat_counter_chatgpt += 1
    history.append("You asked: " + inputs)
   
    # load index from disk
    index = GPTSimpleVectorIndex.load_from_disk('PLIndex.json')

    # query the index
    result = index.query(inputs)
    response = result.response.split()
    token_counter = 0
    partial_words = ""
    counter = 0
    for chunk in response:
                partial_words=partial_words+" "+chunk
                if token_counter == 0:
                    history.append(" " + partial_words)
                else:
                    history[-1] = partial_words
                chat = [(history[i], history[i + 1]) for i in range(0, len(history) - 1, 2)]  # convert to tuples of list
                token_counter += 1
                yield chat, history, chat_counter_chatgpt  # This resembles {chatbot: chat, state: history}


def reset_textbox():
    return gr.update(value="")

def reset_chat(chatbot, state):
    return None, []
with gr.Blocks(css="""#col_container {width: 1000px; margin-left: auto; margin-right: auto;}
                #chatgpt {height: 400px; overflow: auto;}} """, theme=gr.themes.Default(primary_hue="slate") ) as PLCoversationalAI:
    with gr.Row():
      with gr.Column(scale=14):
          with gr.Box():
              with gr.Row():
                  with gr.Column(scale=13):
                   inputs = gr.Textbox(label="Ask anything about Productization Labs ⤵️    Try : Who is Gopala" )
                  with gr.Column(scale=1):
                      b1 = gr.Button('Submit', elem_id = 'submit').style(full_width=True)
                      b2 = gr.Button('Clear', elem_id = 'clear').style(full_width=True)
                  state_chatgpt = gr.State([])

          with gr.Box():
              with gr.Row():
                  chatbot_chatgpt = gr.Chatbot(elem_id="chatgpt", label="Productization Labs Conversational AI")
    chat_counter_chatgpt = gr.Number(value=0, visible=False, precision=0)
             

    inputs.submit(reset_textbox, [], [inputs])
    
    b1.click( predict_chatgpt, 
                [ inputs, chat_counter_chatgpt, chatbot_chatgpt, state_chatgpt], 
                [chatbot_chatgpt, state_chatgpt],)

    b2.click(reset_chat, [chatbot_chatgpt, state_chatgpt], [chatbot_chatgpt, state_chatgpt])

    PLCoversationalAI.queue(concurrency_count=16).launch(height= 2500, debug=True)