Spaces:
Build error
Build error
| import gradio as gr | |
| import pandas as pd | |
| from io import StringIO | |
| from pandasai import PandasAI | |
| from pandasai.llm.huggingface import HuggingFaceLLM | |
| # Initialize an open-source LLM. | |
| # Here we use "google/flan-t5-small", a small free model from Hugging Face. | |
| llm = HuggingFaceLLM(model_name="google/flan-t5-small") | |
| pandas_ai = PandasAI(llm) | |
| def process_file_and_query(file_obj, question): | |
| """ | |
| This function reads the uploaded CSV file, converts it into a DataFrame, | |
| and then uses PandasAI to answer the user's question about the data. | |
| """ | |
| if file_obj is None: | |
| return "Please upload a CSV file." | |
| try: | |
| # Read the file content. file_obj.read() returns bytes, so decode to string. | |
| file_contents = file_obj.read().decode("utf-8") | |
| # Use StringIO to convert the string data into a stream for pandas | |
| df = pd.read_csv(StringIO(file_contents)) | |
| except Exception as e: | |
| return f"Error reading CSV file: {e}" | |
| try: | |
| # Use PandasAI to answer the question using the DataFrame. | |
| answer = pandas_ai.run(df, prompt=question) | |
| return answer | |
| except Exception as e: | |
| return f"Error processing the query: {e}" | |
| # Create a Gradio interface. | |
| iface = gr.Interface( | |
| fn=process_file_and_query, | |
| inputs=[ | |
| gr.File(label="Upload CSV file"), | |
| gr.Textbox(label="Ask a question about your data", placeholder="E.g., What is the average of column X?") | |
| ], | |
| outputs="text", | |
| title="Chat with Your CSV", | |
| description=( | |
| "Upload your CSV file and ask questions about the data. " | |
| "This app uses an open-source LLM (google/flan-t5-small) via PandasAI to answer your questions interactively." | |
| ) | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |