ruchi commited on
Commit
e209a2d
1 Parent(s): 0c6560f

Display money needs pattern

Browse files
Files changed (4) hide show
  1. app.py +9 -3
  2. db.py +5 -2
  3. topologies.sqlite +0 -0
  4. utils.py +80 -2
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import streamlit as st
2
  import os
3
  import google.generativeai as genai
4
- GOOGLE_API_KEY=os.getenv('GEMINI_API_KEY')
5
  genai.configure(api_key=GOOGLE_API_KEY)
6
  model = genai.GenerativeModel(model_name = "gemini-pro")
7
  from utils import findTop3MoneyNeeds
@@ -88,8 +88,14 @@ if submit_button:
88
  st.write("Entered proposal:", proposal)
89
  st.write("Analyzing your proposition")
90
 
91
- topMoneyNeeds = findTop3MoneyNeeds(moneyNeeds)
92
 
93
  response = model.generate_content([pre_prompt.format(proposal)])
94
- st.write(response.text)
 
 
 
 
 
95
 
 
 
1
  import streamlit as st
2
  import os
3
  import google.generativeai as genai
4
+ GOOGLE_API_KEY= 'AIzaSyC0T2fN5Dga-6nkPc6HYV7-bDZskqgALX0' #os.getenv('GEMINI_API_KEY')
5
  genai.configure(api_key=GOOGLE_API_KEY)
6
  model = genai.GenerativeModel(model_name = "gemini-pro")
7
  from utils import findTop3MoneyNeeds
 
88
  st.write("Entered proposal:", proposal)
89
  st.write("Analyzing your proposition")
90
 
91
+ topMoneyNeeds, topMoneyNeedsDict = findTop3MoneyNeeds(moneyNeeds)
92
 
93
  response = model.generate_content([pre_prompt.format(proposal)])
94
+ st.write("As per your money needs your product is mostly targeting the below spending patterns",)
95
+
96
+ for idx, need in enumerate(topMoneyNeeds):
97
+ st.write("{}. {}".format(idx+1, need))
98
+
99
+ #st.write(response.text)
100
 
101
+
db.py CHANGED
@@ -15,12 +15,15 @@ def fetch_db_rows_as_dicts(db_path, table_name):
15
  # Print the column names
16
  print("Column names:", column_names)
17
 
 
18
  # Execute a query to fetch all rows from the table
19
  cursor.execute(f"SELECT * FROM {table_name};")
20
  rows = cursor.fetchall()
21
 
 
 
 
22
  assert len(rows) > 1
23
-
24
  return column_names, rows[1:]
25
 
26
  except sqlite3.Error as e:
@@ -33,4 +36,4 @@ def fetch_db_rows_as_dicts(db_path, table_name):
33
 
34
 
35
  # Example usage:
36
- # fetch_db_rows_as_dicts('money_needs.sqlite', 'money_needs')
 
15
  # Print the column names
16
  print("Column names:", column_names)
17
 
18
+
19
  # Execute a query to fetch all rows from the table
20
  cursor.execute(f"SELECT * FROM {table_name};")
21
  rows = cursor.fetchall()
22
 
23
+ #for row in rows:
24
+ # row_dict = dict(zip(column_names, row))
25
+ # print(row_dict)
26
  assert len(rows) > 1
 
27
  return column_names, rows[1:]
28
 
29
  except sqlite3.Error as e:
 
36
 
37
 
38
  # Example usage:
39
+ fetch_db_rows_as_dicts('topologies.sqlite', 'topologies')
topologies.sqlite ADDED
Binary file (8.19 kB). View file
 
utils.py CHANGED
@@ -1,8 +1,9 @@
1
  from db import fetch_db_rows_as_dicts
2
  import google.generativeai as genai
3
  import json
 
4
 
5
- GOOGLE_API_KEY='AIzaSyC0T2fN5Dga-6nkPc6HYV7-bDZskqgALX0'
6
  genai.configure(api_key=GOOGLE_API_KEY)
7
  model = genai.GenerativeModel(model_name = "gemini-pro")
8
 
@@ -27,6 +28,33 @@ def transform_to_dict_of_dicts(columns, rows):
27
 
28
  # Iterate over each row
29
  for row in rows:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  # The first element of the row is the key for the outer dictionary
31
  outer_key = row[0].strip()
32
 
@@ -55,7 +83,54 @@ def findTop3MoneyNeeds(proposition):
55
  needDictIndexes.append(moneyNeedsDict[need])
56
 
57
  print(needDictIndexes)
58
- return needDictIndexes
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
 
61
  def findTop3Needs(proposition, moneyNeeds):
@@ -81,4 +156,7 @@ def findTop3Needs(proposition, moneyNeeds):
81
  return obj['matches']
82
 
83
 
 
84
  #findTop3MoneyNeeds('We have a product for family people giving them discounts and low interest loans for home appliances. They can pay us back in small instalments over the course of 4 years')
 
 
 
1
  from db import fetch_db_rows_as_dicts
2
  import google.generativeai as genai
3
  import json
4
+ import os
5
 
6
+ GOOGLE_API_KEY=os.getenv('GEMINI_API_KEY')
7
  genai.configure(api_key=GOOGLE_API_KEY)
8
  model = genai.GenerativeModel(model_name = "gemini-pro")
9
 
 
28
 
29
  # Iterate over each row
30
  for row in rows:
31
+ print(dict(row))
32
+ # The first element of the row is the key for the outer dictionary
33
+ outer_key = row[0].strip()
34
+
35
+ # Initialize the inner dictionary
36
+ inner_dict = {}
37
+
38
+ # Iterate over the rest of the elements in the row
39
+ for i, value in enumerate(row[1:], start=1):
40
+ # The corresponding column name is the key for the inner dictionary
41
+ inner_key = columns[i].strip()
42
+ # Add the key-value pair to the inner dictionary
43
+ inner_dict[inner_key] = value
44
+
45
+ # Add the inner dictionary to the result dictionary with the outer key
46
+ result[outer_key] = inner_dict
47
+
48
+ return result
49
+
50
+
51
+ def transform_topologies_to_dict(columns, rows):
52
+ # Initialize the result dictionary
53
+ result = {}
54
+
55
+ # Iterate over each row
56
+ for row in rows:
57
+ print(dict(row))
58
  # The first element of the row is the key for the outer dictionary
59
  outer_key = row[0].strip()
60
 
 
83
  needDictIndexes.append(moneyNeedsDict[need])
84
 
85
  print(needDictIndexes)
86
+ return needs, needDictIndexes
87
+
88
+
89
+ def findTop3Needs(proposition, moneyNeeds):
90
+
91
+ moneyNeedsString = concatenate_keys(moneyNeeds)
92
+
93
+ prompt = '''You have these listed needs of customers
94
+ {}
95
+
96
+ Now given a proposition
97
+ "{}"
98
+
99
+ Find the best 3 strings out of the list which matches this proposition. Return output strictly only in json under a list called matches
100
+ '''
101
+
102
+ moneyNeedsPrompt = prompt.format(moneyNeedsString, proposition)
103
+ response = model.generate_content([moneyNeedsPrompt])
104
+ output = response.text
105
+ output = output.replace('```json', '')
106
+ output = output.replace('```', '')
107
+ obj = load_json_from_string(output)
108
+ print(obj)
109
+ return obj['matches']
110
+
111
+
112
+ def findTop3Topologies(proposition):
113
+ topologies, rows = fetch_db_rows_as_dicts('topologies.sqlite', 'topologies')
114
+
115
+ topologiesDict = transform_to_dict_of_dicts(topologies, rows)
116
+ print(topologiesDict)
117
+ # prompt = '''You have these listed needs of customers
118
+ # {}
119
+
120
+ # Now given a proposition
121
+ # "{}"
122
+
123
+ # Find the best 3 strings out of the list which matches this proposition. Return output strictly only in json under a list called matches
124
+ # '''
125
+
126
+ # moneyNeedsPrompt = prompt.format(moneyNeedsString, proposition)
127
+ # response = model.generate_content([moneyNeedsPrompt])
128
+ # output = response.text
129
+ # output = output.replace('```json', '')
130
+ # output = output.replace('```', '')
131
+ # obj = load_json_from_string(output)
132
+ # print(obj)
133
+ # return obj['matches']
134
 
135
 
136
  def findTop3Needs(proposition, moneyNeeds):
 
156
  return obj['matches']
157
 
158
 
159
+ #findTop3Topologies('We have a product for family people giving them discounts and low interest loans for home appliances. They can pay us back in small instalments over the course of 4 years')
160
  #findTop3MoneyNeeds('We have a product for family people giving them discounts and low interest loans for home appliances. They can pay us back in small instalments over the course of 4 years')
161
+
162
+ #We provide a credit card which gives 10% discount on purchasing home appliances and also provides low interest rates based loans