csvChat / app.py
Subhraj07's picture
Update app.py
5a4421b
Raw
History Blame Contribute Delete
1.52 kB
import gradio as gr
import pandas as pd
import random
import time
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
import os
df = pd.DataFrame()
OPENAPI_KEY_VAL = ""
llm = ""
pandas_ai = ""
def process_file(file, OPENAPI_KEY):
global df, OPENAPI_KEY_VAL, llm, pandas_ai
df = pd.read_csv(file.name)
OPENAPI_KEY_VAL = OPENAPI_KEY
llm = OpenAI(api_token = OPENAPI_KEY_VAL)
pandas_ai = PandasAI(llm)
return df.head(2)
with gr.Blocks() as demo:
with gr.Row():
file = gr.inputs.File(type="file", label="Upload CSV")
key = gr.Textbox(placeholder="Paste OPENAI API KEY")
out = gr.DataFrame(type="pandas")
btn = gr.Button("Execute")
btn.click(fn=process_file, inputs=[file, key], outputs=out)
chatbot = gr.Chatbot()
msg = gr.Textbox()
clear = gr.Button("Clear")
def respond(message, chat_history):
bot_message = "Hi"
try:
bot_message = pandas_ai.run(df, prompt=message)
except Exception as e:
print(e)
bot_message = "I'm sorry, but as an AI language model, I am unable to provide a meaningful response to this question."
# bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"])
chat_history.append((message, bot_message))
time.sleep(1)
return "", chat_history
msg.submit(respond, [msg, chatbot], [msg, chatbot])
clear.click(lambda: None, None, chatbot, queue=False)
demo.launch()