|
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) |
|
|
|
|
|
chat_counter_chatgpt += 1 |
|
history.append("You asked: " + inputs) |
|
|
|
|
|
index = GPTSimpleVectorIndex.load_from_disk('PLIndex.json') |
|
|
|
|
|
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)] |
|
token_counter += 1 |
|
yield chat, history, chat_counter_chatgpt |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
|
|
|