cloud-sean commited on
Commit
017a009
·
1 Parent(s): 1910768

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -0
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain.agents import create_sql_agent
2
+ from langchain.agents.agent_toolkits import SQLDatabaseToolkit
3
+ from langchain.sql_database import SQLDatabase
4
+ from langchain.llms.openai import OpenAI
5
+ from langchain.agents import AgentExecutor
6
+ import urllib, os
7
+
8
+ from io import StringIO
9
+ import sys
10
+
11
+ class Capturing(list):
12
+ def __enter__(self):
13
+ self._stdout = sys.stdout
14
+ sys.stdout = self._stringio = StringIO()
15
+ return self
16
+ def __exit__(self, *args):
17
+ self.extend(self._stringio.getvalue().splitlines())
18
+ del self._stringio # free up some memory
19
+ sys.stdout = self._stdout
20
+
21
+
22
+
23
+ def answer_question(question):
24
+ with Capturing() as printed_text:
25
+ answer = agent_executor.run("what are the top 3 most expensive items and how many customers bought them?")
26
+ import re
27
+ text = '\n'.join(printed_text) + '\n' + str(answer)
28
+ # Remove all escape characters
29
+ text = re.sub(r"\x1b\[\d+(;\d+)?m", "", text)
30
+
31
+ # Remove all characters inside angle brackets
32
+ text = re.sub(r"<.*?>", "", text)
33
+
34
+ # Remove all leading/trailing whitespaces
35
+ text = text.strip()
36
+ return text
37
+
38
+ db = SQLDatabase.from_uri("mssql+pyodbc:///?odbc_connect=Driver={ODBC Driver 18 for SQL Server};Server=tcp:tesserversean.database.windows.net,1433;Database=testdb-sean;Uid=sean;Pwd=abc123456!;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;")
39
+ toolkit = SQLDatabaseToolkit(db=db)
40
+
41
+
42
+ os.environ["OPENAI_API_KEY"] = "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"
43
+
44
+ agent_executor = create_sql_agent(
45
+ llm = OpenAI(model_name="gpt-4", temperature=0.0),
46
+ toolkit=toolkit,
47
+ verbose=True
48
+ )
49
+
50
+
51
+
52
+ import gradio as gr
53
+
54
+ with gr.Blocks(css="footer {visibility: hidden}", title="SQL Chat") as demo:
55
+ csv_file = gr.State([])
56
+ question = gr.Textbox(label="Question")
57
+ ask_question = gr.Button(label="Ask Question")
58
+ text_box = gr.TextArea(label="Output", lines=10)
59
+
60
+ ask_question.click(answer_question, inputs=[question], outputs=text_box)
61
+
62
+
63
+
64
+ demo.launch()
65
+
66
+