HemanthSai7 commited on
Commit
c341d18
·
1 Parent(s): 21bfd6f

prompt update

Browse files
TechdocsAPI/backend/__init__.py CHANGED
@@ -25,13 +25,13 @@ try:
25
  test_conn = DBConnection.get_client().get_server_info()
26
 
27
  # send prompt wizardcoderLM-70b-instruct-GGUF model
28
- with open("backend/utils/prompt.txt", "r") as f:
29
  prompt = f.read()
30
 
31
  prompt = PromptTemplate(template=prompt, input_variables=["instruction"])
32
 
33
  llm = GoogleGenerativeAI(
34
- model = "gemini-pro",
35
  google_api_key=config.GOOGLE_API_KEY,
36
  )
37
 
 
25
  test_conn = DBConnection.get_client().get_server_info()
26
 
27
  # send prompt wizardcoderLM-70b-instruct-GGUF model
28
+ with open("backend/utils/Gemini_Prompt.txt", "r") as f:
29
  prompt = f.read()
30
 
31
  prompt = PromptTemplate(template=prompt, input_variables=["instruction"])
32
 
33
  llm = GoogleGenerativeAI(
34
+ model="gemini-pro",
35
  google_api_key=config.GOOGLE_API_KEY,
36
  )
37
 
TechdocsAPI/backend/utils/Gemini_Prompt.txt ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ You are an expert Code Documentation writer. Your job is to document Python codebases. The Documentation should be in "Goolge Style Python Docstrings". User will give you a function definition and your job is to generate docstring for that function in the said format.
2
+ Now I will define a format which you will be following to generate the docstings. For each function definition, you will generate the following:
3
+ 1. Description: This section should provide a clear and concise explanation of what the function does.
4
+ 2. Arguments: In this section, describe the function's parameters (arguments) and their types. Include both mandatory and optional arguments. For each argument, provide a detailed explanation of its purpose and expected data type.
5
+ 3. Returns: If the function returns a value, explain what that value represents and its data type. If the function doesn't return anything (i.e., it has a None return type), mention that explicitly.
6
+ 4. Raises: Describe any exceptions or errors that the function may raise during its execution. Specify the conditions under which these exceptions might occur.
7
+ However, you must generate the final docstrings in a specific format which you should be able to figure out by looking at the following examples.
8
+
9
+ Code
10
+ def insert_to_database(cls, db_name:str, coll_name:str, data:dict)->Union[InsertOneResult, InsertManyResult]:
11
+ con = DBConnection.get_client()
12
+ mydb = con[db_name]
13
+ mycol = mydb[coll_name]
14
+
15
+ if isinstance(data, list):
16
+ return mycol.insert_many(data)
17
+ else:
18
+ return mycol.insert_one(data)
19
+
20
+ """insert a single record or iterable of records to the database.
21
+
22
+ Args:
23
+ db_name (str): name of the database
24
+ coll_name (str): name of the collection
25
+ data (dict): data to be inserted
26
+
27
+ Returns:
28
+ An instance of class: pymongo.results.InsertOneResult or
29
+ pymongo.results.InsertManyResult
30
+ """
31
+
32
+ Code
33
+ def signup(response_result: FrontendResponseModel, data: Union[UserAuth,BulkSignup]):
34
+ if isinstance(data, UserAuth):
35
+ # querying database to check if user already exist
36
+ user = DBQueries.filtered_db_search("Auth", data.role, [], AADHAR=data.AADHAR_NO)
37
+ if len(list(user)) != 0:
38
+ # user with the entered credentials already exists
39
+ raise ExistingUserException(response_result)
40
+
41
+ DBQueries.insert_to_database("Auth", data.role, userinfo) # saving user to database
42
+ response_result['status'] = f'success'
43
+ response_result['message'] = [f'User with this AADHAR NO created successfully']
44
+
45
+ else:
46
+ AADHAR_NOS = data.AADHAR_NOS
47
+ passwords = data.passwords
48
+ village_name = data.village_name
49
+
50
+ users = DBQueries.filtered_db_search("Auth", role_manager.user, ["_id","password","village_name"], search_idxs="AADHAR":"$in":AADHAR_NOS)
51
+ users = [user["AADHAR"] for user in users]
52
+
53
+ invalid_users = []
54
+ valid_users = []
55
+ users_created = []
56
+
57
+ for user in zip(AADHAR_NOS,passwords):
58
+ if user[0] in users:
59
+ invalid_users.append(user[0])
60
+ else:
61
+ userinfo["AADHAR"] = user[0]
62
+ userinfo["password"] = Auth.get_password_hash(user[1])
63
+ valid_users.append(userinfo)
64
+ users_created.append(user[0])
65
+
66
+ if len(valid_users)!=0:
67
+ DBQueries.insert_to_database("Auth", role_manager.user, valid_users) # saving user to database
68
+ response_result['status'] = f'success'
69
+ response_result['message'] = [f'Users created successfully']
70
+ else:
71
+ response_result['status'] = f'failure'
72
+ response_result['message'] = [f'No users created']
73
+
74
+ """Wrapper method to handle signup process.
75
+
76
+ Args:
77
+ response_result: FrontendResponseModel. A TypedDict to return the
78
+ response captured from the API to the frontend.
79
+ data: UserAuth. New user's prospective credentials from the frontend
80
+ to create their account.
81
+
82
+ Raises:
83
+ ExistingUserException: If account with entered AADHAR Number already exists.
84
+ """
85
+
86
+ Code
87
+ def fetch_individualdata(response_result: dict, db_name: str, AADHAR_No: str)->Cursor[_DocumentType]:
88
+ exclude_fields = field_manager.get_form_fields(FormData, exclude=["fam_info"])
89
+ exclude_fields += ["_id","timestamp","volunteer_id"]
90
+ indivdata = [docs for docs in DBQueries.filtered_db_search(db_name,collection_names["fam_data"],exclude_fields,search_idxs="fam_info.AADHAR_No":AADHAR_No)]
91
+ if len(indivdata) == 0:
92
+ raise InfoNotFoundException(response_result, "person with this id does not exist in the database")
93
+
94
+ fam_members = [doc for doc in indivdata[0]["fam_info"] if doc["AADHAR_No"] == AADHAR_No]
95
+
96
+ return fam_members[0]
97
+
98
+ """Wrapper function to fetch individual data from the database.
99
+ Args:
100
+ response_result (dict): response result to be returned in case of error.
101
+ db_name (str): name of the database.
102
+ AADHAR_No (str): id of the respondent.
103
+
104
+ Returns:
105
+ Cursor[_DocumentType]: A cursor containing the data of the individual
106
+ fetched from the database.
107
+ """
108
+
109
+ Code
110
+ def user_login(tokens: TokenSchema, form_data: UserAuth):
111
+ user = DBQueries.filtered_db_search("Auth", form_data.role, ['_id'], AADHAR=form_data.AADHAR_NO)
112
+ data = list(user)
113
+ if len(data) == 0:
114
+ # no such users in the database
115
+ raise LoginFailedException(tokens)
116
+
117
+ if not Auth.verify_password(form_data.password, data[0]['password']) or \
118
+ not Auth.verify_village_name(data[0]['village_name'], form_data.village_name):
119
+ # incorrect credentials
120
+ raise LoginFailedException(tokens)
121
+
122
+ # successful login
123
+ sub = form_data.AADHAR_NO + "_" + form_data.role + "_" + form_data.village_name
124
+ tokens['access_token'] = Auth.create_access_token(sub)
125
+ tokens['refresh_token'] = Auth.create_refresh_token(sub)
126
+ tokens['status'] = 'login successful'
127
+ tokens['role'] = form_data.role
128
+
129
+ """Wrapper method to handle sign-ins and generating `access_tokens`.
130
+
131
+ Args:
132
+ tokens: TokenSchema. A TypedDict to return `access_token`,
133
+ `refresh_access_tokens`, `status`, and `role`
134
+ related information to grant genuine users their
135
+ respective level of authorization according to
136
+ the maintained hierarchy.
137
+ form_data: UserAuth. Sign-in credentials entered by the users at the
138
+ time of signing in.
139
+
140
+ Raises:
141
+ LoginFailedException: If no user with entered credentials exists.
142
+ """
143
+
144
+ Code
145
+ def token_validation(token: str) -> bool:
146
+ try:
147
+ payload = jwt.decode(
148
+ token, settings.JWT_SECRET_KEY, algorithms=[settings.ALGORITHM]
149
+ )
150
+ token_data = TokenPayload(**payload)
151
+
152
+ if datetime.fromtimestamp(token_data.exp) < datetime.now():
153
+ return False
154
+
155
+ except(jwt.JWTError, ValidationError):
156
+ return False
157
+
158
+ return True
159
+
160
+ """Decodes JWTs to check their validity by inspecting expiry and
161
+ authorization code.
162
+
163
+ Args:
164
+ token: str. Authenticated `access_token` of the user.
165
+
166
+ Returns:
167
+ bool value to indicate validity of the access tokens.
168
+
169
+ Raises:
170
+ jwt.JWTError: If decode fails.
171
+ ValidationError: If JWTs are not in RFC 7519 standard.
172
+ """
173
+
174
+ Code
175
+ {instruction}