|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
api = os.environ.get('GroqApi') |
|
|
client = Groq(api_key=api) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
df = pd.read_csv('environmental_impact_assessment_dataset.csv') |
|
|
|
|
|
|
|
|
text_column = df['Project Type'] + ' ' + df['Mitigation Measures'] |
|
|
|
|
|
|
|
|
embedding_model = SentenceTransformer('all-MiniLM-L6-v2') |
|
|
embeddings = embedding_model.encode(text_column.tolist()) |
|
|
|
|
|
|
|
|
embeddings_np = np.array(embeddings).astype(np.float32) |
|
|
|
|
|
|
|
|
index = faiss.IndexFlatL2(embeddings_np.shape[1]) |
|
|
index.add(embeddings_np) |
|
|
|
|
|
|
|
|
def retrieve_relevant_document(query): |
|
|
|
|
|
query_embedding = embedding_model.encode([query]) |
|
|
query_embedding_np = np.array(query_embedding).astype(np.float32) |
|
|
|
|
|
|
|
|
_, indices = index.search(query_embedding_np, k=1) |
|
|
retrieved_text = text_column.iloc[indices[0][0]] |
|
|
|
|
|
return retrieved_text |
|
|
|
|
|
|
|
|
def generate_report(user_input): |
|
|
|
|
|
if not user_input.strip(): |
|
|
return "Please provide project details to generate the Environmental Impact Assessment report." |
|
|
|
|
|
|
|
|
relevant_document = retrieve_relevant_document(user_input) |
|
|
|
|
|
|
|
|
chat_completion = client.chat.completions.create( |
|
|
messages=[ |
|
|
{"role": "user", |
|
|
"content": f"Generate an environmental impact assessment report based on the following details:\n\n{relevant_document}\n\nUser Query: {user_input}"} |
|
|
], |
|
|
model="llama3-8b-8192", |
|
|
) |
|
|
|
|
|
|
|
|
return chat_completion.choices[0].message.content |
|
|
|
|
|
|
|
|
def gradio_interface(project_details): |
|
|
return generate_report(project_details) |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=gradio_interface, |
|
|
inputs="text", |
|
|
outputs="text", |
|
|
live=False |
|
|
) |
|
|
|
|
|
iface.launch() |
|
|
|