ahmedumeraziz commited on
Commit
33469bd
Β·
verified Β·
1 Parent(s): 1b91fdd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -15
app.py CHANGED
@@ -6,31 +6,36 @@ import os
6
 
7
  # --- CONFIGURATION ---
8
  EXCEL_CSV_URL = "https://docs.google.com/spreadsheets/d/1b_gBz-_TZZNJLIM5sYyYJQfBVNua7dFf/export?format=csv"
9
- GROQ_API_KEY = os.getenv("GROQ_API_KEY") # Make sure it's set in Hugging Face or locally
10
  GROQ_URL = "https://api.groq.com/openai/v1/chat/completions"
11
  LLAMA3_MODEL = "llama3-8b-8192"
12
 
13
  # --- FUNCTIONS ---
14
 
15
  def load_excel_data():
16
- response = requests.get(EXCEL_CSV_URL)
17
- response.raise_for_status()
18
- return pd.read_csv(BytesIO(response.content))
 
 
 
 
 
 
19
 
20
  def search_student_by_roll(data, roll_number):
21
- df = data.copy()
22
- results = df[df['RollNumber'].astype(str).str.lower() == roll_number.lower()]
23
- return results
24
 
25
  def generate_summary_from_data(student_row):
26
  content = student_row.to_dict(orient="records")[0]
27
  prompt = (
28
- f"Create a detailed student result summary using this data:\n\n"
29
  f"{content}\n\n"
30
- f"Format the result similar to a formal report card or academic result sheet. "
31
- f"Include name, class, roll number, subjects with marks, total, percentage, and performance remarks."
32
  )
33
-
34
  headers = {
35
  "Authorization": f"Bearer {GROQ_API_KEY}",
36
  "Content-Type": "application/json"
@@ -38,10 +43,11 @@ def generate_summary_from_data(student_row):
38
  data = {
39
  "model": LLAMA3_MODEL,
40
  "messages": [
41
- {"role": "system", "content": "You are a result sheet generator for a school."},
42
  {"role": "user", "content": prompt}
43
  ]
44
  }
 
45
  response = requests.post(GROQ_URL, headers=headers, json=data)
46
  response.raise_for_status()
47
  return response.json()["choices"][0]["message"]["content"]
@@ -57,12 +63,14 @@ def main():
57
  roll_number = st.text_input("Roll Number", placeholder="e.g., k0000")
58
 
59
  if st.button("Generate Result"):
60
- with st.spinner("Fetching and generating result..."):
 
 
 
61
  try:
62
- data = load_excel_data()
63
  result = search_student_by_roll(data, roll_number)
64
  if not result.empty:
65
- st.success("βœ… Student Found! Generating result summary...")
66
  summary = generate_summary_from_data(result)
67
  st.markdown("### πŸ“ Result Summary:")
68
  st.markdown(summary)
 
6
 
7
  # --- CONFIGURATION ---
8
  EXCEL_CSV_URL = "https://docs.google.com/spreadsheets/d/1b_gBz-_TZZNJLIM5sYyYJQfBVNua7dFf/export?format=csv"
9
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY") # Must be set in Hugging Face or .env
10
  GROQ_URL = "https://api.groq.com/openai/v1/chat/completions"
11
  LLAMA3_MODEL = "llama3-8b-8192"
12
 
13
  # --- FUNCTIONS ---
14
 
15
  def load_excel_data():
16
+ try:
17
+ response = requests.get(EXCEL_CSV_URL)
18
+ response.raise_for_status()
19
+ df = pd.read_csv(BytesIO(response.content))
20
+ st.write("βœ… **Columns Detected in Sheet:**", list(df.columns)) # Help with debugging
21
+ return df
22
+ except Exception as e:
23
+ st.error(f"Error loading sheet: {e}")
24
+ return pd.DataFrame()
25
 
26
  def search_student_by_roll(data, roll_number):
27
+ roll_column = [col for col in data.columns if 'roll' in col.lower()][0] # Find roll column
28
+ result = data[data[roll_column].astype(str).str.lower() == roll_number.lower()]
29
+ return result
30
 
31
  def generate_summary_from_data(student_row):
32
  content = student_row.to_dict(orient="records")[0]
33
  prompt = (
34
+ f"Create a well-formatted result sheet using this student data:\n\n"
35
  f"{content}\n\n"
36
+ f"Include Name, Roll Number, Class, Subject-wise Marks, Total, Percentage, and a Performance Remark."
 
37
  )
38
+
39
  headers = {
40
  "Authorization": f"Bearer {GROQ_API_KEY}",
41
  "Content-Type": "application/json"
 
43
  data = {
44
  "model": LLAMA3_MODEL,
45
  "messages": [
46
+ {"role": "system", "content": "You are a student result generator for a school."},
47
  {"role": "user", "content": prompt}
48
  ]
49
  }
50
+
51
  response = requests.post(GROQ_URL, headers=headers, json=data)
52
  response.raise_for_status()
53
  return response.json()["choices"][0]["message"]["content"]
 
63
  roll_number = st.text_input("Roll Number", placeholder="e.g., k0000")
64
 
65
  if st.button("Generate Result"):
66
+ with st.spinner("πŸ“₯ Loading data and generating result..."):
67
+ data = load_excel_data()
68
+ if data.empty:
69
+ return
70
  try:
 
71
  result = search_student_by_roll(data, roll_number)
72
  if not result.empty:
73
+ st.success("βœ… Student found. Generating summary...")
74
  summary = generate_summary_from_data(result)
75
  st.markdown("### πŸ“ Result Summary:")
76
  st.markdown(summary)