sampathlonka commited on
Commit
9f9b034
1 Parent(s): 8c5d456

Delete FunctionTools.py

Browse files
Files changed (1) hide show
  1. FunctionTools.py +0 -249
FunctionTools.py DELETED
@@ -1,249 +0,0 @@
1
- import json
2
- import chardet
3
- import streamlit as st
4
- import pandas as pd
5
- from llama_index.core.tools.tool_spec.base import BaseToolSpec
6
-
7
- class ScriptureDescriptionToolSpec(BaseToolSpec):
8
- '''
9
- Purpose: Obtains the description or summary about vedas, mandalas, kandas, shuktas, archakah, adhyaya, and other scriptural elements.
10
- Returns: A dictionary containing the description or basic information about the specified scriptural element.
11
- Sample query:
12
- 1. Describe the first kandah, second shukta from Atharvaveda?
13
- 2. Summarize ShuklaYajurVeda?
14
- 3. What is the difference between ShuklaYajurVeda and KrishnaYajurVeda?
15
- '''
16
- # Define the functions that we export to the LLM
17
- spec_functions = ["get_description"]
18
-
19
- with open("Data/scripture_descriptions.csv", 'rb') as f:
20
- result = chardet.detect(f.read())
21
-
22
- encoding = result['encoding']
23
- df = pd.read_csv("Data/scripture_descriptions.csv", encoding=encoding)
24
-
25
- @st.cache_data
26
- def get_description(_self, level_0, level_1:int=None, level_2:int=None, level_3:int=None):
27
- """
28
- To get the description or basic information about vedas/mandalas/kandas/shukatas/archakah/adhyaya and others.
29
- """
30
- try:
31
- if level_3 is not None:
32
- # Case with Level-2 specified
33
- result = _self.df[(_self.df['scripture_name'].str.lower() == level_0.lower())
34
- & (_self.df['level_1'] == str(level_1))
35
- & (_self.df['level_2'] == str(level_2)) & (_self.df['level_3'] == str(level_3))]
36
- elif level_2 is not None:
37
- # Case with Level-2 specified
38
- result = _self.df[(_self.df['scripture_name'].str.lower() == level_0.lower())
39
- & (_self.df['level_1'] == str(level_1)) & (_self.df['level_2'] == str(level_2))]
40
- elif level_1 is not None:
41
- # Case with Level-1 specified
42
- result = _self.df[(_self.df['scripture_name'].str.lower() == level_0.lower())
43
- & (_self.df['level_1'] == str(level_1))]
44
- else:
45
- # Case with only Level-0 specified
46
- result = _self.df[_self.df['scripture_name'].str.lower() == level_0.lower()]
47
-
48
- return result.iloc[0].to_dict()
49
- except IndexError as e:
50
- return json.dumps({"error": f"Failed to get scripture description. {e}"})
51
-
52
- class MantraToolSpec(BaseToolSpec):
53
- '''
54
- To obtain translations or meaning of vedamantras from RigVeda and AtharvaVeda using the function `get_translation`.
55
- The mantra details such as vedamantra, padapatha, rishi, chandah, devata, and swarah from the vedas accessible through the function `get_vedamantra_details`.
56
- The mantra summary like anvaya, adhibautic, ahyatmic, adhidaivic meaning of vedamantra accessible using the function 'get_vedamantra_summary'
57
- Sample Query:
58
- 1. What is the vedamantra of the mantra from Rigveda, first mandala, first shukta, and first mantra?
59
- 2. What is the devata of the vedamantra from Rigveda, first mandala, first shukta, and first mantra?
60
- 3. What is the meaning of the vedamantra from Rigveda, first mandala, first shukta, and first mantra written by Tulsi Ram?
61
- 4. What is the (adhibautic) meaning of the vedamantra from RigVeda, first mandala, first shukta, and first mantra?
62
- '''
63
- spec_functions = ["get_translation", "get_vedamantra_details", "get_vedamantra_summary"]
64
-
65
- TRANSLATION_CSV_PATH = 'Data/trans_Rig_Ath_index_v2.csv'
66
- VEDAMANTRA_CSV_PATH = "Data/veda_content_modified_v3.csv"
67
-
68
- def __init__(self):
69
- super().__init__()
70
- self.df_translation = pd.read_csv(self.TRANSLATION_CSV_PATH, encoding='utf-8')
71
- self.df_vedamantra = pd.read_csv(self.VEDAMANTRA_CSV_PATH, encoding='utf-8')
72
-
73
- @st.cache_data
74
- def get_translation(_self, mantraid=None, scripture_name=None, MahatmaName=None, KandahNumber=None,
75
- MandalaNumber=None, ArchikahNumber=None, ShuktaNumber=None,
76
- AnvayaNumber=None, PrapatakNumber=None, MantraNumber=None,
77
- AnuvakNumber=None, AdhyayaNumber=None):
78
- """
79
- Get the translation of mantras from RigVeda and AtharvaVeda.
80
- Sample Query:
81
- 1. What is the translation of Tulsi Ram of the vedamantra from Rigveda, first mandala, first shukta, and first mantra?
82
- 2. What is the translation or adhibautic meaning of the vedamantra from RigVeda, first mandala, first shukta, and first mantra?
83
- 3. What is the subject of the mantra 1.1.84.1?
84
- """
85
- try:
86
- if mantraid is None:
87
- scripture_name_lower = scripture_name.lower() if scripture_name is not None else False
88
- if scripture_name_lower == 'rigveda':
89
- details = _self.df_translation[
90
- (_self.df_translation['scripture_name'].str.lower() == scripture_name_lower)
91
- & (_self.df_translation['MandalaNumber'] == MandalaNumber)
92
- & (_self.df_translation['ShuktaNumber'] == int(ShuktaNumber))
93
- & (_self.df_translation['MantraNumber'] == int(MantraNumber))
94
- ].to_dict(orient='records')
95
- elif scripture_name_lower == 'atharvaveda':
96
- details = _self.df_translation[
97
- (_self.df_translation['scripture_name'].str.lower() == scripture_name_lower)
98
- & (_self.df_translation['KandahNumber'] == KandahNumber)
99
- & (_self.df_translation['ShuktaNumber'] == ShuktaNumber)
100
- & (_self.df_translation['MantraNumber'] == MantraNumber)].to_dict(orient='records')
101
- elif scripture_name_lower == 'samaveda':
102
- details = _self.df_translation[
103
- (_self.df_translation['scripture_name'].str.lower() == scripture_name_lower)
104
- & (_self.df_translation['ArchikahNumber'] == ArchikahNumber)
105
- & (_self.df_translation['ShuktaNumber'] == ShuktaNumber)
106
- & (_self.df_translation['MantraNumber'] == MantraNumber)].to_dict(orient='records')
107
- elif scripture_name_lower == 'krishnayajurveda':
108
- details = _self.df_translation[
109
- (_self.df_translation['scripture_name'].str.lower() == scripture_name_lower)
110
- & (_self.df_translation['PrapatakNumber'] == PrapatakNumber)
111
- & (_self.df_translation['AnuvakNumber'] == AnuvakNumber)
112
- & (_self.df_translation['MantraNumber'] == MantraNumber)].to_dict(orient='records')
113
- else:
114
- details = _self.df_translation[
115
- (_self.df_translation['scripture_name'].str.lower() == scripture_name_lower)
116
- & (_self.df_translation['AdhyayaNumber'] == AdhyayaNumber)
117
- & (_self.df_translation['MantraNumber'] == MantraNumber)
118
- ].to_dict(orient='records')
119
- else:
120
- details = _self.df_translation[_self.df_translation['mantra_id'] == mantraid].to_dict(orient='records')
121
-
122
- if MahatmaName is not None:
123
- for item in details:
124
- if item['MahatmaName'] == MahatmaName:
125
- return item
126
- else:
127
- return details
128
- except Exception as e:
129
- return json.dumps({"error": f"Failed to get translation. {e}"})
130
-
131
- @st.cache_data
132
- def get_vedamantra_details(_self, mantraid=None, scripture_name=None, KandahNumber=None,
133
- MandalaNumber=None, ArchikahNumber=None, ShuktaNumber=None,
134
- AnvayaNumber=None, PrapatakNumber=None, MantraNumber=None,
135
- AnuvakNumber=None, AdhyayaNumber=None):
136
- """
137
- To obtain the vedamantra details such as vedamantra, padapata, devata, rishi, swarah, and chandah.
138
- 1. What is the vedamantra of the mantra from Rigveda, first mandala, first shukta, and first mantra?
139
- 2. What is the devata of the vedamantra from Rigveda, first mandala, first shukta, and first mantra?
140
- """
141
- try:
142
- if mantraid is None:
143
- scripture_name_lower = scripture_name.lower() if scripture_name is not None else False
144
-
145
- if scripture_name_lower == 'rigveda':
146
- conditions = (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower) & \
147
- (_self.df_vedamantra['MandalaNumber'] == MandalaNumber) & \
148
- (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber) & \
149
- (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
150
- details = _self.df_vedamantra[conditions]['mantra_json'].values
151
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]['mandala']['shukta']['mantra']
152
-
153
- elif scripture_name_lower == 'atharvaveda':
154
- conditions = (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower) & \
155
- (_self.df_vedamantra['KandahNumber'] == KandahNumber) & \
156
- (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber) & \
157
- (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
158
- details = _self.df_vedamantra[conditions]['mantra_json'].values
159
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]['kandah']['shukta']['mantra']
160
- elif scripture_name_lower == 'samaveda':
161
- conditions = (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower) & \
162
- (_self.df_vedamantra['ArchikahNumber'] == ArchikahNumber) & \
163
- (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber) & \
164
- (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
165
- details = _self.df_vedamantra[conditions]['mantra_json'].values
166
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]['archikah']
167
- elif scripture_name_lower == 'krishnayajurveda':
168
- conditions = (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower) & \
169
- (_self.df_vedamantra['PrapatakNumber'] == PrapatakNumber) & \
170
- (_self.df_vedamantra['AnuvakNumber'] == AnuvakNumber) & \
171
- (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
172
- details = _self.df_vedamantra[conditions]['mantra_json'].values
173
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]['kandah']['prapatak']['anuvak']
174
- else:
175
- conditions = (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower) & \
176
- (_self.df_vedamantra['AdhyayaNumber'] == AdhyayaNumber) & \
177
- (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
178
- details = _self.df_vedamantra[conditions]['mantra_json'].values
179
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]['adhyaya']['mantra']
180
-
181
- else:
182
- # Handle case when mantraid is provided
183
- details = _self.df_vedamantra[_self.df_vedamantra['mantra_number'] == mantraid]['mantra_json'].values
184
- vedamantra_details = json.loads(details[0])['mantraHeader']['language'][1]
185
-
186
- return vedamantra_details
187
- except Exception as e:
188
- return json.dumps({"error": f"Failed to get vedamantra details. {str(e)}"})
189
-
190
- @st.cache_data
191
- def get_vedamantra_summary(_self, mantraid=None, scripture_name=None, KandahNumber=None,
192
- MandalaNumber=None, ArchikahNumber=None, ShuktaNumber=None,
193
- AnvayaNumber=None, PrapatakNumber=None, MantraNumber=None,
194
- AnuvakNumber=None, AdhyayaNumber=None):
195
- '''
196
- To obtain the vedamantra summary like anvaya, translation, adhibautic, adhyatmic, adhidaivic meaning of the mantra.
197
- 1. What is the adhibautic meaning of the mantra from AtharvaVeda, first kandah, first shukta, and first mantra?
198
- 2. What is the anvaya of the vedamantra from Rigveda, first mandala, first shukta, and first mantra?
199
- '''
200
- try:
201
- if mantraid is None:
202
- scripture_name_lower = scripture_name.lower() if scripture_name is not None else False
203
- if scripture_name_lower == 'rigveda':
204
- details = _self.df_vedamantra[
205
- (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower)
206
- & (_self.df_vedamantra['MandalaNumber'] == MandalaNumber)
207
- & (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber)
208
- & (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
209
- ]['mantra_json'].values
210
- elif scripture_name_lower == 'atharvaveda':
211
- details = _self.df_vedamantra[
212
- (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower)
213
- & (_self.df_vedamantra['KandahNumber'] == KandahNumber)
214
- & (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber)
215
- & (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
216
- ]['mantra_json'].values
217
- elif scripture_name_lower == 'samaveda':
218
- details = _self.df_vedamantra[
219
- (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower)
220
- & (_self.df_vedamantra['ArchikahNumber'] == ArchikahNumber)
221
- & (_self.df_vedamantra['ShuktaNumber'] == ShuktaNumber)
222
- & (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
223
- ]['mantra_json'].values
224
- elif scripture_name_lower == 'krishnayajurveda':
225
- details = _self.df_vedamantra[
226
- (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower)
227
- & (_self.df_vedamantra['PrapatakNumber'] == PrapatakNumber)
228
- & (_self.df_vedamantra['AnuvakNumber'] == AnuvakNumber)
229
- & (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
230
- ]['mantra_json'].values
231
- else:
232
- details = _self.df_vedamantra[
233
- (_self.df_vedamantra['scripture_name'].str.lower() == scripture_name_lower)
234
- & (_self.df_vedamantra['AdhyayaNumber'] == AdhyayaNumber)
235
- & (_self.df_vedamantra['MantraNumber'] == str(MantraNumber))
236
- ]['mantra_json'].values
237
- else:
238
- details = _self.df_vedamantra[_self.df_vedamantra['mantra_number'] == mantraid]['mantra_json'].values
239
-
240
- jsonDict = json.loads(details[0])
241
- mantraSummary = jsonDict['mantraSummary']['language']
242
- mantraSummary_IAST = jsonDict['mantraSummary']['language'][1]
243
- vedamantra_summary = {"Roman-IAST summary of vedamantra": mantraSummary_IAST}
244
- for item in mantraSummary:
245
- if item['languageName'] == 'English':
246
- vedamantra_summary.update({"English summary of vedamantra": item})
247
- return vedamantra_summary
248
- except Exception as e:
249
- return json.dumps({"error": f"Failed to get vedamantra summary. {e}"})