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()
|