| | import openai |
| | import gradio as gr |
| | import pandas as pd |
| | import sqlite3 |
| | import os |
| | openai.api_key = os.environ["Secret"] |
| |
|
| | |
| | def gpt3(texts): |
| | response = openai.Completion.create( |
| | engine="code-davinci-002", |
| | prompt= texts, |
| | temperature=0, |
| | max_tokens=750, |
| | top_p=1, |
| | frequency_penalty=0.0, |
| | presence_penalty=0.0, |
| | stop = (";", "/*", "</code>") |
| | ) |
| | x = response.choices[0].text |
| | |
| | return x |
| |
|
| | |
| |
|
| |
|
| |
|
| | |
| |
|
| |
|
| | def greet(prompt, file = None): |
| |
|
| | |
| | file_path = file.name |
| |
|
| | |
| | if file_path: |
| | if file_path.endswith(".csv"): |
| | df = pd.read_csv(file_path) |
| | columns = " ".join(df.columns) |
| | |
| |
|
| |
|
| |
|
| | elif file_path.endswith((".xls", ".xlsx")): |
| | df = pd.read_excel(file_path) |
| | columns = " ".join(df.columns) |
| | else: |
| | return "Invalid file type. Please provide a CSV or Excel file." |
| | |
| | |
| | con = sqlite3.connect(":memory:") |
| | |
| | |
| |
|
| | table_name = os.path.splitext(os.path.basename(file_path.name))[0] |
| |
|
| |
|
| |
|
| |
|
| | |
| |
|
| |
|
| |
|
| | |
| |
|
| |
|
| |
|
| | df.to_sql(table_name, con) |
| | else: |
| | return "Please upload a file." |
| | txt= (f'''/*Prompt: {prompt}\nColumns: {columns}\nTable: {table_name}*/ \n —-SQL Code:\n''') |
| | sql = gpt3(txt) |
| | |
| | |
| | |
| | if con: |
| | df = pd.read_sql_query(sql, con) |
| | return sql, df |
| | else: |
| | return sql, None |
| | |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| | |
| | iface = gr.Interface(greet, |
| | inputs = ["text", ("file")], |
| | outputs = ["text",gr.Dataframe(type="pandas")], |
| | title="Natural Language to SQL", |
| | description="Enter any prompt and get a SQL statement back! For better results, give it more context") |
| | iface.launch() |
| |
|