Johannes commited on
Commit
dd9e5f1
1 Parent(s): 02e6cce
Files changed (3) hide show
  1. app.py +47 -0
  2. example_strings.py +68 -0
  3. requirements.txt +1 -0
app.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForCausalLM
3
+ from example_strings import example1, example2, example3
4
+
5
+
6
+ # tokenizer6B = AutoTokenizer.from_pretrained(f"NumbersStation/nsql-6B")
7
+ # model6B = AutoModelForCausalLM.from_pretrained(f"NumbersStation/nsql-6B")
8
+
9
+ # tokenizer2B = AutoTokenizer.from_pretrained(f"NumbersStation/nsql-2B")
10
+ # model2B = AutoModelForCausalLM.from_pretrained(f"NumbersStation/nsql-2B")
11
+
12
+ # tokenizer350M = AutoTokenizer.from_pretrained(f"NumbersStation/nsql-2B")
13
+ # model350M = AutoModelForCausalLM.from_pretrained(f"NumbersStation/nsql-2B")
14
+
15
+
16
+ def load_model(model_name: str):
17
+ tokenizer = AutoTokenizer.from_pretrained(f"NumbersStation/{model_name}")
18
+ model = AutoModelForCausalLM.from_pretrained(f"NumbersStation/{model_name}")
19
+ return tokenizer, model
20
+
21
+
22
+ def infer(input_text, model_choice):
23
+ tokenizer, model = load_model(model_choice)
24
+ input_ids = tokenizer(input_text, return_tensors="pt").input_ids
25
+ generated_ids = model.generate(input_ids, max_length=500)
26
+ return (tokenizer.decode(generated_ids[0], skip_special_tokens=True))
27
+
28
+
29
+ iface = gr.Interface(
30
+ title="Text to SQL with NSQL",
31
+ description="""The NSQL model family was published by [Numbers Station](https://www.numbersstation.ai/) and is available in three flavors:
32
+ - [nsql-6B](https://huggingface.co/NumbersStation/nsql-6B)
33
+ - [nsql-2B](https://huggingface.co/NumbersStation/nsql-2B)
34
+ - [nsql-350M]((https://huggingface.co/NumbersStation/nsql-350M))
35
+ This demo let's you choose which one you want to use and provides the three examples you can also find in their model cards.
36
+
37
+ In general you should first provide the table schemas of the tables you have questions about and then prompt it with a natural language question.
38
+ The model will then generate a SQL query that you can run against your database.
39
+ """,
40
+ fn=infer,
41
+ inputs=["text",
42
+ gr.Dropdown(["nsql-6B", "nsql-2B", "nsql-350M"], value="nsql-6B")],
43
+ outputs="text",
44
+ examples=[[example1, "nsql-6B"],
45
+ [example2, "nsql-2B"],
46
+ [example3, "nsql-350M"]])
47
+ iface.launch()
example_strings.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ example1 = """CREATE TABLE stadium (
2
+ stadium_id number,
3
+ location text,
4
+ name text,
5
+ capacity number,
6
+ highest number,
7
+ lowest number,
8
+ average number
9
+ )
10
+
11
+ CREATE TABLE singer (
12
+ singer_id number,
13
+ name text,
14
+ country text,
15
+ song_name text,
16
+ song_release_year text,
17
+ age number,
18
+ is_male others
19
+ )
20
+
21
+ CREATE TABLE concert (
22
+ concert_id number,
23
+ concert_name text,
24
+ theme text,
25
+ stadium_id text,
26
+ year text
27
+ )
28
+
29
+ CREATE TABLE singer_in_concert (
30
+ concert_id number,
31
+ singer_id text
32
+ )
33
+
34
+ -- Using valid SQLite, answer the following questions for the tables provided above.
35
+
36
+ -- What is the maximum, the average, and the minimum capacity of stadiums ?
37
+
38
+ SELECT"""
39
+
40
+ example2 = """CREATE TABLE stadium (
41
+ stadium_id number,
42
+ location text,
43
+ name text,
44
+ capacity number,
45
+ )
46
+
47
+ -- Using valid SQLite, answer the following questions for the tables provided above.
48
+
49
+ -- how many stadiums in total?
50
+
51
+ SELECT"""
52
+
53
+ example3 = """CREATE TABLE work_orders (
54
+ ID NUMBER,
55
+ CREATED_AT TEXT,
56
+ COST FLOAT,
57
+ INVOICE_AMOUNT FLOAT,
58
+ IS_DUE BOOLEAN,
59
+ IS_OPEN BOOLEAN,
60
+ IS_OVERDUE BOOLEAN,
61
+ COUNTRY_NAME TEXT,
62
+ )
63
+
64
+ -- Using valid SQLite, answer the following questions for the tables provided above.
65
+
66
+ -- how many work orders are open?
67
+
68
+ SELECT"""
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ transformers