I was actually going to ask how to display graphs on the web before i finished the video, but i did manage to figure it out on my own. You have to set PandasAI(llm,save_charts=True), then have code in the display anser logic that detects if the number of files in the folder where the images are stored changes, and display the latest image. You would need to do something else like checking for the specific filenames if you had concurrent users in your app but for now it's enough. answer=pandas_ai.run(st.session_state.df,question) if st.session_state.count
This was really good. Would certainly be keen to know how to extend the functionality of this - for example, allow other users to input their own Open AI keys. Would also like to see how this is done in Flask too.
Hi, Thanks for the amazing video. I tried very hard to give you an answer while asking ChatGPT for help. The issue I see and ChatGPT 4 acknowledges too, is that the answer provided by chatgpt is not in the format that one can use to display the graph within the streamlit directly. Maybe you need to add a check condition if the data is plottable then use st.pyplot() ? Below is the code snippet for displaying charts using streamlit in the browswer. --- import streamlit as st import pandas as pd import numpy as np import matplotlib.pyplot as plt # Create a random DataFrame for demonstration df = pd.DataFrame({ 'A': np.random.rand(50), 'B': np.random.rand(50) + 1 }) # Create a figure and axes fig, ax = plt.subplots(figsize=(10, 5)) # Plot a bar chart using the DataFrame ax.bar(df.index, df['A'], label='A') ax.bar(df.index, df['B'], bottom=df['A'], label='B') ax.legend(loc='upper left') ax.set_title("Bar Chart") ax.set_xlabel("Index") ax.set_ylabel("Value") # Display the chart with Streamlit st.pyplot(fig)
please can you give some more details about your solution ? i cannot handle how from the response generated, we could print it as a plot in the example you have given, you creates a new chart. but in our case we need to display the chart generated by the AI no ? Thank you !
hi @BugBytes , i have this error when i try to upload the file: "AxiosError: Request failed with status code 403" and i put correctly the API-keyand the libs, any idea?
It triggers download of the image instead of displaying it(let's say on a streamlit app). I expected the image to be shown directly in my application. Is there a way? response = df.chat(user_input) # Get response from SmartDataframe st.image(response, use_container_width=True) The above code renders on the UI but also opens a new window. How can I stop this behavior?
Hi...Getting below error while running the app ImportError: cannot import name ‘PandasAI’ from ‘pandasai’ (C:\Users\RONALD AINEBYONA\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandasai_init_.py)
Bloody brilliant! Is it trivial to scale this to 'read' a pdf with multiple tables and converting the tables into csvs? I am thinking of a use case where the user uploads a pdf of financial statements? Have you try your example using st.session_state? And conversation buffer memory or does this not work with pandasai?
Amazing content! 🦾 As a 'not developer' that is just starting with Python and OpenAI for work, this video was so helpful, i really apreciate it! In order to ad a new text_area for a new prompt, related to the last PandasAI response, which would be the next code lines i should use to achieve this?
Thank you Rodrigo! Glad it was helpful. Given the response, you could store that in a variable, and use the response as part of the prompt for the next call to pandas_ai.run(). The rest of the prompt can be constructed with another text_area from Streamlit. There's also a helpful library called "langchain" that's good for building apps with multiple calls to LLMs. Not sure at the moment how well it integrates with PandasAI, but I'll do a video on langchain soon too. Thanks again!
For Generating Charts,we can make a tricky: llm = OpenAI() df = SmartDataframe(df, config={"llm": llm}) df.chat('Plot the histogram of countries showing for each the gdp') from PIL import Image image = Image.open('exports/charts/temp_chart.png') st.image(image, caption='') ######### 'exports/charts/temp_chart.png', this can be found from "print(df.last_code_generated)"
This code works, but with latest pandasai the filename now that I get is a long unique file name. So, I had to add code to extract the relative path to my app with the unique filename and then display it. Wish this was handled better by the pandasai library, but it works. I have an issue though when plotting some charts like a horizontal bar chart where the png image file is chopping off the front of the y-axis labels. Always something to battle.
That is Awesome, I also created something similar, but I was wondering if we can plot this visualization inside the streamlit application instead of separately. Is there any other way ?
Everything was working fine until I added the from pandasai import PandasAI and then i get an error on my streamlit page says No module named 'bs4'. Can you please help
how can i create a virtual environment? using windows. when i creat the two file main.py and .env, i don't seen the ( venv-llm) PS: any help plz. thanks for the knowledge you shared
thank you@@bugbytes3923 , I put the code in a new terminal in the C path at the end , and it gives me this message : "Python not found. Run without arguments to proceed." what should I do please ?
It seems this code is not supporting graphs, I am getting below response Generating an answer, please wait... The bar chart for the top 3 Organization Names by Number of employees is displayed on the axes with coordinates (0.125,0.11) and a size of 0.775x0.77.
Hey Jayson - you can run the following commands (change 'my-venv' to any name you like): -- python3 -m venv my-venv source my-venv/bin/activate -- The first command will create the environment using Python's built-in "venv" module. The second command activates the environment - once activated, you can install external packages into this environment.
Guys ! I found a way to show plot in web app ! if st.button("Generate"): if prompt: with st.spinner("Generating response..."): answer = pandas_ai.run(st.session_state.df,prompt) fig_number = plt.get_fignums() if fig_number: st.pyplot(plt.gcf()) else: st.write(answer)
Hi, I used your code, and it is working on the local machine. But this code does not satisfy requirements after deploying it. Do you have any idea about this ?
@@visheshgupta2048 did you use aws ? make sure you let your virtual machine download all the packages in the requirement. It took me a while to fix the bug when I deploy it on AWS
Bro, i really liked your video but could you reply or do another video that how could we bring graphs also to our streamlit page rather showing it in a seperate window like in this video. I think with that its 100% and a complete product....i know you said that its possible but matter of finding it how 😊
Hey BugBytes! The responses provided by my model were very raw for example, when asked about the fare price, I received the response, "32.204207968574636". Can you help me with why is this the case?
Hi Mate, In the below comments,@zac1427 found a way to display the charts on the frontend. But I have played around with the code he/she mentoined. But It hasn't worked. import matplotlib.pyplot as plt if st.button("Submit"): if a: with st.spinner("Please Wait....."): b=Pandas_ai.run(df, prompt = a) fig_number = plt.get_fignums() if fig_number: st.pyplot(plt.gcf()) else: st.write(b) I am receiving the below warning and couldn't not able to display charts. UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so it cannot show the figure. Please let us know if it's worked or if you have found any other way.
I was actually going to ask how to display graphs on the web before i finished the video, but i did manage to figure it out on my own. You have to set PandasAI(llm,save_charts=True), then have code in the display anser logic that detects if the number of files in the folder where the images are stored changes, and display the latest image. You would need to do something else like checking for the specific filenames if you had concurrent users in your app but for now it's enough.
answer=pandas_ai.run(st.session_state.df,question)
if st.session_state.count
Even though it renders on the UI, it also opens in a new window. How can I stop this behavior?
This is awesome. Have never heard of streamlit before and my mind is racing with what I can do with this on top of Pandas and ChatGPT
Thanks! Lots of possibilities with Streamlit and these other tools.
Great! Very well done. I don't see the project in the GitHub repo.
Great resource would love more content relating to deploying Open AI ML solutions on streamlit
This was really good. Would certainly be keen to know how to extend the functionality of this - for example, allow other users to input their own Open AI keys. Would also like to see how this is done in Flask too.
Thanks! Some good ideas there.
thank you! I had this idea in my head and found this video on youtube!
You're welcome! Thanks for watching.
Hi,
Thanks for the amazing video. I tried very hard to give you an answer while asking ChatGPT for help.
The issue I see and ChatGPT 4 acknowledges too, is that the answer provided by chatgpt is not in the format that one can use to display the graph within the streamlit directly. Maybe you need to add a check condition if the data is plottable then use st.pyplot() ?
Below is the code snippet for displaying charts using streamlit in the browswer.
---
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Create a random DataFrame for demonstration
df = pd.DataFrame({
'A': np.random.rand(50),
'B': np.random.rand(50) + 1
})
# Create a figure and axes
fig, ax = plt.subplots(figsize=(10, 5))
# Plot a bar chart using the DataFrame
ax.bar(df.index, df['A'], label='A')
ax.bar(df.index, df['B'], bottom=df['A'], label='B')
ax.legend(loc='upper left')
ax.set_title("Bar Chart")
ax.set_xlabel("Index")
ax.set_ylabel("Value")
# Display the chart with Streamlit
st.pyplot(fig)
Thanks! And yeah, good idea! I'll have a play around with it, and see if I can get it working.
please can you give some more details about your solution ?
i cannot handle how from the response generated, we could print it as a plot
in the example you have given, you creates a new chart. but in our case we need to display the chart generated by the AI no ?
Thank you !
hi @BugBytes , i have this error when i try to upload the file: "AxiosError: Request failed with status code 403" and i put correctly the API-keyand the libs, any idea?
Well explained and straight to the point, thanks so much for your video.
Thank you!
One of the best channel on youtube
Thanks very much!
true, love it thank you
Good stuff as always. 👍👍👍
Thanks a lot, Krzysztof!
What version of pandas ai did you use, because i keep getting a error when using from pandas import pandasia
It triggers download of the image instead of displaying it(let's say on a streamlit app). I expected the image to be shown directly in my application. Is there a way?
response = df.chat(user_input) # Get response from SmartDataframe
st.image(response, use_container_width=True)
The above code renders on the UI but also opens a new window. How can I stop this behavior?
Hi Its awesome video. Very informative. I have doubt. Can we use DEV_GENAI_API_KEY instead of OPENAI_API_KEY. will it work as this is working
Great tutorial, can you show us how to do this with a offline LLM Model where the data is private and processed locally.
Hi...Getting below error while running the app
ImportError: cannot import name ‘PandasAI’ from ‘pandasai’ (C:\Users\RONALD AINEBYONA\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandasai_init_.py)
same error facing. were you able resolve this.
@@abhishekbhattacherjee8873 you need to use use SmartDataframe
Bloody brilliant! Is it trivial to scale this to 'read' a pdf with multiple tables and converting the tables into csvs? I am thinking of a use case where the user uploads a pdf of financial statements? Have you try your example using st.session_state? And conversation buffer memory or does this not work with pandasai?
Great video!! Have you found any updated way or easier to run Pandas AI to analyze data? Many thanks in advance!
Great job! Thanks!!
You're welcome - thank you for watching!
Which pandasai version do you use?
Amazing content! 🦾 As a 'not developer' that is just starting with Python and OpenAI for work, this video was so helpful, i really apreciate it!
In order to ad a new text_area for a new prompt, related to the last PandasAI response, which would be the next code lines i should use to achieve this?
Thank you Rodrigo! Glad it was helpful.
Given the response, you could store that in a variable, and use the response as part of the prompt for the next call to pandas_ai.run().
The rest of the prompt can be constructed with another text_area from Streamlit.
There's also a helpful library called "langchain" that's good for building apps with multiple calls to LLMs. Not sure at the moment how well it integrates with PandasAI, but I'll do a video on langchain soon too.
Thanks again!
@@bugbytes3923 Thank you a lot again!! I'll be waiting this video! 🙌
Great Job bro💪
Thanks !
Private LLM tut would be amazing
Will look into it soon!
Thanks, Can we do this with images?
Hello BugBytes, can you create a video instead of connecting to open AI you use open source llms? That could be great thank you.
For Generating Charts,we can make a tricky:
llm = OpenAI()
df = SmartDataframe(df, config={"llm": llm})
df.chat('Plot the histogram of countries showing for each the gdp')
from PIL import Image
image = Image.open('exports/charts/temp_chart.png')
st.image(image, caption='')
#########
'exports/charts/temp_chart.png', this can be found from "print(df.last_code_generated)"
please can you give more details about your solution ?
This code works, but with latest pandasai the filename now that I get is a long unique file name. So, I had to add code to extract the relative path to my app with the unique filename and then display it. Wish this was handled better by the pandasai library, but it works. I have an issue though when plotting some charts like a horizontal bar chart where the png image file is chopping off the front of the y-axis labels. Always something to battle.
Even though it's rendering on UI, Still it also opens in new window. How to stop that?
@@karthikvb1293 Have you managed to figure this out?
On pandasai Github page under security the guy has given some info if you want to keep your data privacy. I think one can use that..
how to set up function description? you have pop-up clue for every function
Awseme video, thanks
Thanks for watching!
Thank you so much for the help! I was not able to get it to work on streamlit cloud though only locally any info there? I would truly appreciate it
That is Awesome, I also created something similar, but I was wondering if we can plot this visualization inside the streamlit application instead of separately. Is there any other way ?
Thanks! Not found a way to do this yet, but I'm sure it's possible.
@@bugbytes3923 okay thanks for your reply
@@bugbytes3923could you pls find that way and do another video or comment here...that wil be awesome
I have found it and it worked well (use pyplot figure method)
I built a streamlit app with a Folium map can you make a video which interacts with a Folium map? that would be an interesting use case.
Good idea! Will look into that one.
this is great!
Thanks Onno!
Possible to do pandasAi with opensourse models?
Everything was working fine until I added the from pandasai import PandasAI and then i get an error on my streamlit page says No module named 'bs4'. Can you please help
Not sure why that is, but you can try installing that library with the command:
pip install BeautifulSoup4
how can i create a virtual environment? using windows. when i creat the two file main.py and .env, i don't seen the ( venv-llm) PS: any help plz.
thanks for the knowledge you shared
Hey - you can try the following:
1. python -m venv ./venv-llm
2. ./venv-llm/Scripts/activate
3. pip install (enter the package names you want to use)
thank you@@bugbytes3923 , I put the code in a new terminal in the C path at the end , and it gives me this message : "Python not found. Run without arguments to proceed." what should I do please ?
Some of these have been revised. PadasAI is imported as smartdataframe
Thanks for pointing that out. Might try and do a follow-up!
can you send the revised code using the Smartdataframe
It seems this code is not supporting graphs, I am getting below response
Generating an answer, please wait...
The bar chart for the top 3 Organization Names by Number of employees is displayed on the axes with coordinates (0.125,0.11) and a size of 0.775x0.77.
how can i create a virtual environment? using mac - Thanks!
Hey Jayson - you can run the following commands (change 'my-venv' to any name you like):
--
python3 -m venv my-venv
source my-venv/bin/activate
--
The first command will create the environment using Python's built-in "venv" module.
The second command activates the environment - once activated, you can install external packages into this environment.
Guys ! I found a way to show plot in web app !
if st.button("Generate"):
if prompt:
with st.spinner("Generating response..."):
answer = pandas_ai.run(st.session_state.df,prompt)
fig_number = plt.get_fignums()
if fig_number:
st.pyplot(plt.gcf())
else:
st.write(answer)
Nice! Thanks for sharing that!
Hi, I used your code, and it is working on the local machine. But this code does not satisfy requirements after deploying it. Do you have any idea about this ?
@@visheshgupta2048 did you use aws ? make sure you let your virtual machine download all the packages in the requirement. It took me a while to fix the bug when I deploy it on AWS
@@zac1427 no, I used github and streamlit to deploy. Does AWS works? To show graph in the deployed server.
Hi Bugbytes I am new to python your videos are great I am getting an error from your code PandasAI is not defined I am sure I did something wrong
the library got updated and the new version isn't using the PandasAI
Super
Thanks a lot!
Bro, i really liked your video but could you reply or do another video that how could we bring graphs also to our streamlit page rather showing it in a seperate window like in this video. I think with that its 100% and a complete product....i know you said that its possible but matter of finding it how 😊
@bugbytes3923 fyr
Are OpenAI API keys free or what,
Mine requires credits is it the same for everyone?!
OpenAI API is not free
Can we get the code?
I am interested in the code too
The women and children were more likely to survive because they were put on the lifeboats first.
True - makes sense!
Hey BugBytes! The responses provided by my model were very raw for example, when asked about the fare price, I received the response, "32.204207968574636". Can you help me with why is this the case?
Hi Mate,
In the below comments,@zac1427 found a way to display the charts on the frontend.
But I have played around with the code he/she mentoined. But It hasn't worked.
import matplotlib.pyplot as plt
if st.button("Submit"):
if a:
with st.spinner("Please Wait....."):
b=Pandas_ai.run(df, prompt = a)
fig_number = plt.get_fignums()
if fig_number:
st.pyplot(plt.gcf())
else:
st.write(b)
I am receiving the below warning and couldn't not able to display charts.
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so it cannot show the figure. Please let us know if it's worked or if you have found any other way.