Engineer786/Environmental-Assessment
0
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 