|
|
| |
| |
| |
| |
| |
|
|
| |
| import os |
| import gradio as gr |
| from dotenv import load_dotenv |
| import subprocess |
|
|
| |
| |
| |
| print("🔍 Checking installed packages...") |
| subprocess.run(["pip", "list"]) |
|
|
| |
| |
| |
| load_dotenv() |
|
|
| |
| if not os.getenv("GROQ_API_KEY"): |
| raise ValueError("Missing GROQ_API_KEY. Add it in .env or Space secrets.") |
|
|
| |
| |
| |
| try: |
| from groq import Groq |
| except ModuleNotFoundError: |
| Groq = None |
| def evaluate_suitability(*args): |
| return "❌ Error: 'groq' module not installed. Make sure 'groq' is in requirements.txt and rebuild the Space." |
|
|
| |
| |
| |
| polymer_choices = [ |
| "Polyacrylamide", |
| "Chitosan", |
| "Polyamine", |
| "Polyacrylic Acid", |
| "Cellulose" |
| ] |
|
|
| details_dict = { |
| "Polyacrylamide": """ |
| Polyacrylamide (PAM) is a synthetic polymer used in water treatment. |
| Types: Anionic, Cationic, Non-ionic. |
| Properties: Water-soluble, high molecular weight, charge varies by type. |
| Applications: Flocculation and coagulation. |
| Advantages: Efficient particle aggregation. |
| Disadvantages: Potential toxicity from residual monomers. |
| """, |
| "Chitosan": """ |
| Chitosan is a natural polymer derived from chitin. |
| Properties: Biodegradable, non-toxic, cationic in acidic pH. |
| Applications: Heavy metal and dye adsorption. |
| Advantages: Eco-friendly and renewable. |
| Disadvantages: Performance sensitive to pH. |
| """, |
| "Polyamine": """ |
| Polyamine is a synthetic cationic polymer. |
| Applications: Water treatment and papermaking. |
| Advantages: Effective on negative charge suspensions. |
| Disadvantages: Limited scope. |
| """, |
| "Polyacrylic Acid": """ |
| Synthetic anionic polymer with strong chelating properties. |
| Applications: Dye and pollutant adsorption. |
| Advantages: Customizable and strong chelation. |
| Disadvantages: Cost and potential gel formation. |
| """, |
| "Cellulose": """ |
| Natural polymer from plants. |
| Applications: Metal removal and wastewater treatment. |
| Advantages: Eco-friendly, low-cost. |
| Disadvantages: Limited strength and purity variability. |
| """ |
| } |
|
|
| |
| |
| |
| def get_polymer_details(polymer): |
| return details_dict.get(polymer, "No details available.") |
|
|
| def evaluate_suitability(polymer, treatment): |
| if Groq is None: |
| return "❌ Error: The 'groq' module is not installed. Please ensure it’s listed in requirements.txt and rebuild." |
|
|
| client = Groq(api_key=os.getenv("GROQ_API_KEY")) |
| properties = details_dict.get(polymer, "Unknown properties") |
|
|
| prompt = f""" |
| Evaluate if the polymer {polymer} is suitable for {treatment} applications. |
| Consider its chemical properties: {properties}. |
| Provide pros, cons, and reasoning based on known literature. |
| """ |
|
|
| try: |
| response = client.chat.completions.create( |
| messages=[{"role": "user", "content": prompt}], |
| model="llama3-70b-8192", |
| temperature=0.7, |
| max_tokens=500 |
| ) |
| return response.choices[0].message.content |
| except Exception as e: |
| return f"⚠️ Error while evaluating: {str(e)}" |
|
|
| |
| |
| |
| with gr.Blocks(title="Polymer Evaluation Tool") as demo: |
| gr.Markdown("# 🧪 Polymer Selection and Evaluation Tool") |
|
|
| polymer = gr.Dropdown(choices=polymer_choices, label="Select Polymer") |
| details_output = gr.Textbox(label="Polymer Details", lines=10, interactive=False) |
| treatment = gr.Dropdown(choices=["Water Treatment"], label="Select Treatment Type") |
| eval_output = gr.Textbox(label="AI Suitability Evaluation", lines=15, interactive=False) |
|
|
| polymer.change(fn=get_polymer_details, inputs=polymer, outputs=details_output) |
| submit_btn = gr.Button("Evaluate Suitability") |
| submit_btn.click(fn=evaluate_suitability, inputs=[polymer, treatment], outputs=eval_output) |
|
|
| demo.launch() |
|
|