iisadia commited on
Commit
c5de0b5
·
verified ·
1 Parent(s): e8a4040

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -22,7 +22,9 @@ def call_mistral_api(prompt):
22
  ]
23
  }
24
  try:
 
25
  response = requests.post(url, headers=headers, json=payload)
 
26
  response.raise_for_status() # Raise an error for bad status codes
27
  return response.json()['choices'][0]['message']['content']
28
  except requests.exceptions.HTTPError as err:
@@ -36,27 +38,30 @@ def call_mistral_api(prompt):
36
 
37
  # Function to analyze a single requirement
38
  def analyze_requirement(requirement):
 
39
  # Detect requirement type
40
  type_prompt = f"Classify the following requirement as Functional or Non-Functional:\n\n{requirement}\n\nType:"
41
- req_type = call_mistral_api(type_prompt)
42
 
43
  # Identify stakeholders
44
  stakeholders_prompt = f"Identify the stakeholders for the following requirement:\n\n{requirement}\n\nStakeholders:"
45
- stakeholders = call_mistral_api(stakeholders_prompt)
46
 
47
  # Classify domain
48
  domain_prompt = f"Classify the domain for the following requirement (e.g., Bank, Healthcare, etc.):\n\n{requirement}\n\nDomain:"
49
- domain = call_mistral_api(domain_prompt)
50
 
51
  # Detect defects
52
  defects_prompt = f"""Analyze the following requirement and identify ONLY MAJOR defects (e.g., Ambiguity, Incompleteness, etc.).
53
  If the requirement is clear and complete, respond with 'No defects.'
54
  Requirement: {requirement}
55
  Defects:"""
56
- defects = call_mistral_api(defects_prompt)
57
 
58
  # Rewrite requirement
59
- rewritten = rewrite_requirement(requirement, defects)
 
 
60
 
61
  return {
62
  "Requirement": requirement,
@@ -64,7 +69,8 @@ def analyze_requirement(requirement):
64
  "Stakeholders": stakeholders,
65
  "Domain": domain,
66
  "Defects": defects,
67
- "Rewritten": rewritten
 
68
  }
69
 
70
  # Function to rewrite requirement concisely
@@ -80,7 +86,7 @@ def rewrite_requirement(requirement, defects):
80
  Defects: {defects}
81
 
82
  Rewritten Requirement:"""
83
- response = call_mistral_api(prompt)
84
  return response.strip()
85
 
86
  # Function to generate a PDF report with professional formatting
@@ -164,6 +170,7 @@ def main():
164
  st.write(f"**Domain:** {result['Domain']}")
165
  st.write(f"**Defects:** {result['Defects']}")
166
  st.write(f"**Rewritten:** {result['Rewritten']}")
 
167
  st.write("---")
168
 
169
  # Generate and download PDF report
 
22
  ]
23
  }
24
  try:
25
+ start_time = time.time()
26
  response = requests.post(url, headers=headers, json=payload)
27
+ latency = round(time.time() - start_time, 2) # in seconds
28
  response.raise_for_status() # Raise an error for bad status codes
29
  return response.json()['choices'][0]['message']['content']
30
  except requests.exceptions.HTTPError as err:
 
38
 
39
  # Function to analyze a single requirement
40
  def analyze_requirement(requirement):
41
+ latencies = {}
42
  # Detect requirement type
43
  type_prompt = f"Classify the following requirement as Functional or Non-Functional:\n\n{requirement}\n\nType:"
44
+ req_type, latencies["Type"] = call_mistral_api(type_prompt)
45
 
46
  # Identify stakeholders
47
  stakeholders_prompt = f"Identify the stakeholders for the following requirement:\n\n{requirement}\n\nStakeholders:"
48
+ stakeholders, latencies["Stakeholders"] = call_mistral_api(stakeholders_prompt)
49
 
50
  # Classify domain
51
  domain_prompt = f"Classify the domain for the following requirement (e.g., Bank, Healthcare, etc.):\n\n{requirement}\n\nDomain:"
52
+ domain, latencies["Domain"] = call_mistral_api(domain_prompt)
53
 
54
  # Detect defects
55
  defects_prompt = f"""Analyze the following requirement and identify ONLY MAJOR defects (e.g., Ambiguity, Incompleteness, etc.).
56
  If the requirement is clear and complete, respond with 'No defects.'
57
  Requirement: {requirement}
58
  Defects:"""
59
+ defectss, latencies["Defects"] = call_mistral_api(defects_prompt)
60
 
61
  # Rewrite requirement
62
+ rewritten, latencies["Rewritten"] = rewrite_requirement(requirement, defects)
63
+
64
+ total_latency = sum(latencies.values())
65
 
66
  return {
67
  "Requirement": requirement,
 
69
  "Stakeholders": stakeholders,
70
  "Domain": domain,
71
  "Defects": defects,
72
+ "Rewritten": rewritten,
73
+ "Latency (s)": round(total_latency, 2)
74
  }
75
 
76
  # Function to rewrite requirement concisely
 
86
  Defects: {defects}
87
 
88
  Rewritten Requirement:"""
89
+ response, latency = call_mistral_api(prompt)
90
  return response.strip()
91
 
92
  # Function to generate a PDF report with professional formatting
 
170
  st.write(f"**Domain:** {result['Domain']}")
171
  st.write(f"**Defects:** {result['Defects']}")
172
  st.write(f"**Rewritten:** {result['Rewritten']}")
173
+ st.write(f"**Total Latency:** {result['Latency (s)']} seconds")
174
  st.write("---")
175
 
176
  # Generate and download PDF report