File size: 3,148 Bytes
6b77a2d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ea5440
6b77a2d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62795a8
6b77a2d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Install Required Libraries (if not already installed)
# !pip install groq sentence-transformers faiss-cpu gradio pandas numpy langchain langchain-community langchain-groq python-dotenv

# Import Necessary Libraries
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  # Updated Import

# Step 1: Set up API Key for Groq
os.environ["GROQ_API_KEY"] = "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"

# Initialize Groq Client using LangChain Wrapper
llm = ChatGroq(
    groq_api_key=os.environ.get("GROQ_API_KEY"),
    model="llama3-8b-8192"
)

# Step 2: Load Dataset
df = pd.read_csv('environmental_impact_assessment.csv')

# Step 3: Prepare Text Data for RAG
# Create a 'text' column combining relevant columns
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)
)

# Step 4: Create Vector Store for Retrieval
loader = DataFrameLoader(df, page_content_column="text")
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")  # Explicit model specified
vectorstore = FAISS.from_documents(loader.load(), embeddings)

# Step 5: Build RAG QA Chain
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# Step 6: Define Gradio Interface
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}"

# Step 7: Build Gradio Interface
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."
)

# Step 8: Launch the Gradio App
iface.launch()