Updates to convince LLM to display visualizations more often (#30)
Browse files- Updates to convince LLM to display visualizations more often (1862a575a4166c1c9daecc20258c3c9e98c93e6b)
- functions/chart_functions.py +6 -6
- functions/chat_functions.py +15 -15
- functions/stat_functions.py +1 -1
functions/chart_functions.py
CHANGED
|
@@ -131,7 +131,7 @@ def scatter_chart_generation_func(x_column: List[str], y_column: str, session_ha
|
|
| 131 |
|
| 132 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 133 |
|
| 134 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 135 |
|
| 136 |
return {"reply": iframe}
|
| 137 |
|
|
@@ -182,7 +182,7 @@ def line_chart_generation_func(x_column: str, y_column: str, session_hash, sessi
|
|
| 182 |
|
| 183 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 184 |
|
| 185 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 186 |
|
| 187 |
return {"reply": iframe}
|
| 188 |
|
|
@@ -237,7 +237,7 @@ def bar_chart_generation_func(x_column: str, y_column: str, session_hash, sessio
|
|
| 237 |
|
| 238 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 239 |
|
| 240 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 241 |
|
| 242 |
return {"reply": iframe}
|
| 243 |
|
|
@@ -284,7 +284,7 @@ def pie_chart_generation_func(values: str, names: str, session_hash, session_fol
|
|
| 284 |
|
| 285 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 286 |
|
| 287 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 288 |
|
| 289 |
return {"reply": iframe}
|
| 290 |
|
|
@@ -343,7 +343,7 @@ def histogram_generation_func(x_column: str, session_hash, session_folder, y_col
|
|
| 343 |
|
| 344 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 345 |
|
| 346 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 347 |
|
| 348 |
return {"reply": iframe}
|
| 349 |
|
|
@@ -373,7 +373,7 @@ def table_generation_func(session_hash, session_folder, **kwargs):
|
|
| 373 |
|
| 374 |
table_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/table.html'
|
| 375 |
|
| 376 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + table_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 377 |
print(iframe)
|
| 378 |
return {"reply": iframe}
|
| 379 |
|
|
|
|
| 131 |
|
| 132 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 133 |
|
| 134 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 135 |
|
| 136 |
return {"reply": iframe}
|
| 137 |
|
|
|
|
| 182 |
|
| 183 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 184 |
|
| 185 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 186 |
|
| 187 |
return {"reply": iframe}
|
| 188 |
|
|
|
|
| 237 |
|
| 238 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 239 |
|
| 240 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 241 |
|
| 242 |
return {"reply": iframe}
|
| 243 |
|
|
|
|
| 284 |
|
| 285 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 286 |
|
| 287 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 288 |
|
| 289 |
return {"reply": iframe}
|
| 290 |
|
|
|
|
| 343 |
|
| 344 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 345 |
|
| 346 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 347 |
|
| 348 |
return {"reply": iframe}
|
| 349 |
|
|
|
|
| 373 |
|
| 374 |
table_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/table.html'
|
| 375 |
|
| 376 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + table_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 377 |
print(iframe)
|
| 378 |
return {"reply": iframe}
|
| 379 |
|
functions/chat_functions.py
CHANGED
|
@@ -14,7 +14,7 @@ def example_question_generator(session_hash):
|
|
| 14 |
"You are a helpful and knowledgeable agent who has access to an SQLite database which has a table called 'data_source'."
|
| 15 |
)
|
| 16 |
]
|
| 17 |
-
|
| 18 |
session_path = 'file_upload'
|
| 19 |
|
| 20 |
dir_path = TEMP_DIR / str(session_hash) / str(session_path)
|
|
@@ -74,14 +74,14 @@ def chatbot_with_fc(message, history, session_hash):
|
|
| 74 |
messages = [
|
| 75 |
ChatMessage.from_system(
|
| 76 |
"""You are a helpful and knowledgeable agent who has access to an SQLite database which has a table called 'data_source'.
|
| 77 |
-
You also have access to a function, called table_generation_func, that can take a query.csv file generated from our sql query and returns an iframe that we
|
| 78 |
-
You also have access to a scatter plot function, called scatter_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a scatter plot and returns an iframe that we
|
| 79 |
-
You also have access to a line chart function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a line chart and returns an iframe that we
|
| 80 |
-
You also have access to a bar graph function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a bar graph and returns an iframe that we
|
| 81 |
-
You also have access to a pie chart function, called pie_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a pie chart and returns an iframe that we
|
| 82 |
-
You also have access to a histogram function, called histogram_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a histogram and returns an iframe that we
|
| 83 |
You also have access to a linear regression function, called regression_func, that can take a query.csv file generated from our sql query and a list of column names for our independent and dependent variables and return a regression data string and a regression chart which is returned as an iframe.
|
| 84 |
-
|
| 85 |
)
|
| 86 |
]
|
| 87 |
messages.append(ChatMessage.from_user(message))
|
|
@@ -131,14 +131,14 @@ def sql_chatbot_with_fc(message, history, session_hash, db_url, db_port, db_user
|
|
| 131 |
messages = [
|
| 132 |
ChatMessage.from_system(
|
| 133 |
f"""You are a helpful and knowledgeable agent who has access to an PostgreSQL database which has a series of tables called {db_tables}.
|
| 134 |
-
You also have access to a function, called table_generation_func, that can take a query.csv file generated from our sql query and returns an iframe that we
|
| 135 |
-
You also have access to a scatter plot function, called scatter_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a scatter plot and returns an iframe that we
|
| 136 |
-
You also have access to a line chart function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a line chart and returns an iframe that we
|
| 137 |
-
You also have access to a bar graph function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a bar graph and returns an iframe that we
|
| 138 |
-
You also have access to a pie chart function, called pie_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a pie chart and returns an iframe that we
|
| 139 |
-
You also have access to a histogram function, called histogram_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a histogram and returns an iframe that we
|
| 140 |
You also have access to a linear regression function, called regression_func, that can take a query.csv file generated from our sql query and a list of column names for our independent and dependent variables and return a regression data string and a regression chart which is returned as an iframe.
|
| 141 |
-
|
| 142 |
)
|
| 143 |
]
|
| 144 |
messages.append(ChatMessage.from_user(message))
|
|
|
|
| 14 |
"You are a helpful and knowledgeable agent who has access to an SQLite database which has a table called 'data_source'."
|
| 15 |
)
|
| 16 |
]
|
| 17 |
+
|
| 18 |
session_path = 'file_upload'
|
| 19 |
|
| 20 |
dir_path = TEMP_DIR / str(session_hash) / str(session_path)
|
|
|
|
| 74 |
messages = [
|
| 75 |
ChatMessage.from_system(
|
| 76 |
"""You are a helpful and knowledgeable agent who has access to an SQLite database which has a table called 'data_source'.
|
| 77 |
+
You also have access to a function, called table_generation_func, that can take a query.csv file generated from our sql query and returns an iframe that we should display in our chat window.
|
| 78 |
+
You also have access to a scatter plot function, called scatter_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a scatter plot and returns an iframe that we should display in our chat window.
|
| 79 |
+
You also have access to a line chart function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a line chart and returns an iframe that we should display in our chat window.
|
| 80 |
+
You also have access to a bar graph function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a bar graph and returns an iframe that we should display in our chat window.
|
| 81 |
+
You also have access to a pie chart function, called pie_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a pie chart and returns an iframe that we should display in our chat window.
|
| 82 |
+
You also have access to a histogram function, called histogram_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a histogram and returns an iframe that we should display in our chat window.
|
| 83 |
You also have access to a linear regression function, called regression_func, that can take a query.csv file generated from our sql query and a list of column names for our independent and dependent variables and return a regression data string and a regression chart which is returned as an iframe.
|
| 84 |
+
Could you please always display the generated charts, tables, and visualizations as part of your output?"""
|
| 85 |
)
|
| 86 |
]
|
| 87 |
messages.append(ChatMessage.from_user(message))
|
|
|
|
| 131 |
messages = [
|
| 132 |
ChatMessage.from_system(
|
| 133 |
f"""You are a helpful and knowledgeable agent who has access to an PostgreSQL database which has a series of tables called {db_tables}.
|
| 134 |
+
You also have access to a function, called table_generation_func, that can take a query.csv file generated from our sql query and returns an iframe that we should display in our chat window.
|
| 135 |
+
You also have access to a scatter plot function, called scatter_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a scatter plot and returns an iframe that we should display in our chat window.
|
| 136 |
+
You also have access to a line chart function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a line chart and returns an iframe that we should display in our chat window.
|
| 137 |
+
You also have access to a bar graph function, called line_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a bar graph and returns an iframe that we should display in our chat window.
|
| 138 |
+
You also have access to a pie chart function, called pie_chart_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a pie chart and returns an iframe that we should display in our chat window.
|
| 139 |
+
You also have access to a histogram function, called histogram_generation_func, that can take a query.csv file generated from our sql query and uses plotly dictionaries to generate a histogram and returns an iframe that we should display in our chat window.
|
| 140 |
You also have access to a linear regression function, called regression_func, that can take a query.csv file generated from our sql query and a list of column names for our independent and dependent variables and return a regression data string and a regression chart which is returned as an iframe.
|
| 141 |
+
Could you please always display the generated charts, tables, and visualizations as part of your output?"""
|
| 142 |
)
|
| 143 |
]
|
| 144 |
messages.append(ChatMessage.from_user(message))
|
functions/stat_functions.py
CHANGED
|
@@ -34,7 +34,7 @@ def regression_func(independent_variables: List[str], dependent_variable: str, s
|
|
| 34 |
|
| 35 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 36 |
|
| 37 |
-
iframe = '<div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 38 |
|
| 39 |
results_frame = px.get_trendline_results(fig)
|
| 40 |
|
|
|
|
| 34 |
|
| 35 |
chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/{session_folder}/chart.html'
|
| 36 |
|
| 37 |
+
iframe = 'Please display this iframe: <div style=overflow:auto;><iframe\n scrolling="yes"\n width="1000px"\n height="500px"\n src="' + chart_url + '"\n frameborder="0"\n allowfullscreen\n></iframe>\n</div>'
|
| 38 |
|
| 39 |
results_frame = px.get_trendline_results(fig)
|
| 40 |
|