iisadia's picture
Update app.py
2334625 verified
raw
history blame
2.92 kB
import streamlit as st
import requests
from fpdf import FPDF
import os
import time
from datetime import datetime
import groq
# API keys (replace with your keys or use environment variables)
mistral_api_key = os.getenv("MISTRAL_API_KEY", "your_mistral_api_key")
groq_api_key = os.getenv("GROQ_API_KEY", "your_groq_api_key")
# Initialize Groq client
groq_client = groq.Client(api_key=groq_api_key)
# Function to call Mistral API
def call_mistral_api(prompt):
url = "https://api.mistral.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer {mistral_api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "mistral-medium",
"messages": [
{"role": "user", "content": prompt}
]
}
try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
return response.json()['choices'][0]['message']['content']
except requests.exceptions.HTTPError as err:
if response.status_code == 429:
st.warning("Rate limit exceeded. Please wait a few seconds and try again.")
time.sleep(5)
return call_mistral_api(prompt)
return f"HTTP Error: {err}"
except Exception as err:
return f"Error: {err}"
# Function to call Groq API
def call_groq_api(prompt):
try:
response = groq_client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
except Exception as err:
st.error(f"Error: {err}")
return f"Error: {err}"
# Streamlit UI
def main():
st.title("AI Powered Requirement Analysis")
st.markdown("**Team Name:** Sadia, Areeba, Rabbia, Tesmia")
st.markdown("**Models:** Mistral (Classification & Domain) + Groq (Defects & Rewriting)")
input_text = st.text_area("Enter requirements (one per line or separated by periods):")
requirements = [req.strip() for req in input_text.replace("\n", ".").split(".") if req.strip()]
if st.button("Analyze Requirements"):
if not requirements:
st.warning("Please enter requirements.")
else:
results = []
for req in requirements:
if req.strip():
results.append(analyze_requirement(req.strip()))
st.subheader("Analysis Results")
for i, result in enumerate(results, start=1):
st.write(f"### Requirement R{i}: {result['Requirement']}")
st.write(f"**Type:** {result['Type']}")
st.write(f"**Domain:** {result['Domain']}")
st.write(f"**Defects:** {result['Defects']}")
st.write(f"**Rewritten:** {result['Rewritten']}")
st.write("---")
if __name__ == "__main__":
main()