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