|
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." |
|
|
|
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() |