|
|
|
|
|
|
|
|
|
import os |
|
import pandas as pd |
|
from sentence_transformers import SentenceTransformer |
|
import faiss |
|
import numpy as np |
|
import gradio as gr |
|
from groq import Groq |
|
from langchain.chains import RetrievalQA |
|
from langchain.prompts import PromptTemplate |
|
from langchain.document_loaders import DataFrameLoader |
|
from langchain.vectorstores import FAISS |
|
from langchain.embeddings import HuggingFaceEmbeddings |
|
from langchain_groq import ChatGroq |
|
|
|
|
|
os.environ["GROQ_API_KEY"] = "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" |
|
|
|
|
|
llm = ChatGroq( |
|
groq_api_key=os.environ.get("GROQ_API_KEY"), |
|
model="llama3-8b-8192" |
|
) |
|
|
|
|
|
df = pd.read_csv('environmental_impact_assessment.csv') |
|
|
|
|
|
|
|
df['text'] = ( |
|
"Project Type: " + df['Project Type'].astype(str) + "; " + |
|
"Land Use: " + df['Land Use (sq km)'].astype(str) + "; " + |
|
"Emissions: " + df['Emissions (tons/year)'].astype(str) + "; " + |
|
"Water Requirement: " + df['Water Requirement (liters/day)'].astype(str) + "; " + |
|
"Mitigation Measures: " + df['Mitigation Measures'].astype(str) + "; " + |
|
"Legal Compliance: " + df['Legal Compliance'].astype(str) |
|
) |
|
|
|
|
|
loader = DataFrameLoader(df, page_content_column="text") |
|
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") |
|
vectorstore = FAISS.from_documents(loader.load(), embeddings) |
|
|
|
|
|
qa_chain = RetrievalQA.from_chain_type( |
|
llm=llm, |
|
chain_type="stuff", |
|
retriever=vectorstore.as_retriever() |
|
) |
|
|
|
|
|
def generate_report(project_type, land_use, emissions, water_requirement): |
|
""" |
|
Generate Environmental Impact Assessment Report using GEN AI. |
|
""" |
|
query = ( |
|
f"Generate an environmental impact assessment report for a project with the following details:\n" |
|
f"Project Type: {project_type}, Land Use: {land_use} sq km, Emissions: {emissions} tons/year, " |
|
f"Water Requirement: {water_requirement} liters/day." |
|
) |
|
try: |
|
response = qa_chain.run(query) |
|
return response |
|
except Exception as e: |
|
return f"An error occurred: {e}" |
|
|
|
|
|
iface = gr.Interface( |
|
fn=generate_report, |
|
inputs=[ |
|
gr.Textbox(label="Project Type"), |
|
gr.Number(label="Land Use (sq km)"), |
|
gr.Number(label="Emissions (tons/year)"), |
|
gr.Number(label="Water Requirement (liters/day)") |
|
], |
|
outputs=gr.Textbox(label="Generated Report"), |
|
title="Environmental Impact Assessment Report Generator", |
|
description="Enter project details to generate an environmental impact assessment report using RAG and Groq's API." |
|
) |
|
|
|
|
|
iface.launch() |
|
|