CoolFace
Apppublic

Engineer786/Environmental-Assessment

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py81 linesDownload Raw Back to root
1# Import necessary libraries2import os3import pandas as pd4from sentence_transformers import SentenceTransformer5import faiss6import numpy as np7import gradio as gr8from groq import Groq9 10# Set up Groq API11api = os.environ.get('GroqApi')12client = Groq(api_key=api)13 14# # Load environmental dataset (upload to Colab)15# from google.colab import files16# uploaded = files.upload()  # Upload 'environmental_impact_assessment_dataset.csv'17 18# Load the dataset19df = pd.read_csv('environmental_impact_assessment_dataset.csv')  # Replace with the uploaded file name20 21# Combine relevant text columns for embeddings22text_column = df['Project Type'] + ' ' + df['Mitigation Measures']  # Adjust based on your dataset columns23 24# Use SentenceTransformers to generate text embeddings25embedding_model = SentenceTransformer('all-MiniLM-L6-v2')  # Lightweight embedding model26embeddings = embedding_model.encode(text_column.tolist())27 28# Convert embeddings to numpy array29embeddings_np = np.array(embeddings).astype(np.float32)30 31# Build FAISS index for document retrieval32index = faiss.IndexFlatL2(embeddings_np.shape[1])  # L2 distance for similarity search33index.add(embeddings_np)  # Add the document embeddings to the FAISS index34 35# Function to retrieve the most relevant document from the dataset36def retrieve_relevant_document(query):37    # Generate query embedding38    query_embedding = embedding_model.encode([query])39    query_embedding_np = np.array(query_embedding).astype(np.float32)40 41    # Perform similarity search in FAISS42    _, indices = index.search(query_embedding_np, k=1)  # Top 1 match43    retrieved_text = text_column.iloc[indices[0][0]]  # Retrieve corresponding text44 45    return retrieved_text46 47# Function to generate an EIA report using Groq's API48def generate_report(user_input):49    # Check if input is empty50    if not user_input.strip():51        return "Please provide project details to generate the Environmental Impact Assessment report."52 53    # Retrieve relevant information using FAISS54    relevant_document = retrieve_relevant_document(user_input)55 56    # Use Groq API to generate a report based on the retrieved document57    chat_completion = client.chat.completions.create(58        messages=[59            {"role": "user",60             "content": f"Generate an environmental impact assessment report based on the following details:\n\n{relevant_document}\n\nUser Query: {user_input}"}61        ],62        model="llama3-8b-8192",  # Groq model63    )64 65    # Return the Groq-generated content66    return chat_completion.choices[0].message.content67 68# Gradio interface for user interaction69def gradio_interface(project_details):70    return generate_report(project_details)71 72# Launch Gradio app73iface = gr.Interface(74    fn=gradio_interface,75    inputs="text",  # Input: text box for project details76    outputs="text",  # Output: text box for the generated report77    live=False  # Set to False for non-live mode78)79 80iface.launch()81