Spaces:
Build error
Build error
| import gradio as gr | |
| import pandas as pd | |
| import lightgbm as lgb | |
| import numpy as np | |
| import google.generativeai as genai | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.preprocessing import LabelEncoder | |
| # --------------------------- | |
| # HARDCODED GEMINI API KEY | |
| # --------------------------- | |
| GOOGLE_API_KEY = "AIzaSyAju28ijKpMNxr1kh4Ml5GPNmI7reBN7FE" # Replace with your actual Gemini API key | |
| genai.configure(api_key=GOOGLE_API_KEY) | |
| # Load Gemini model | |
| gemini_model = genai.GenerativeModel(model_name="models/gemini-pro") | |
| # --------------------------- | |
| # CROP RECOMMENDATION SETUP | |
| # --------------------------- | |
| url = "https://raw.githubusercontent.com/89911384/CSV-Files/refs/heads/main/crop_cleaned%20data.csv" | |
| data = pd.read_csv(url) | |
| X = data.drop('label', axis=1) | |
| y = data['label'] | |
| le = LabelEncoder() | |
| y_encoded = le.fit_transform(y) | |
| X_train, X_test, y_train, y_test = train_test_split(X, y_encoded, test_size=0.3, random_state=0) | |
| model = lgb.LGBMClassifier() | |
| model.fit(X_train, y_train) | |
| def predict_crop(N, P, K, temperature, humidity, ph, rainfall): | |
| input_data = np.array([[N, P, K, temperature, humidity, ph, rainfall]]) | |
| pred = model.predict(input_data)[0] | |
| crop_name = le.inverse_transform([pred])[0] | |
| return f"๐พ Recommended Crop: *{crop_name}*" | |
| # --------------------------- | |
| # CHATBOT FUNCTION (GEMINI ONLY) | |
| # --------------------------- | |
| def chat_with_gemini(prompt): | |
| try: | |
| response = gemini_model.generate_content(prompt) | |
| return response.text | |
| except Exception as e: | |
| return f"โ Error from Gemini: {str(e)}" | |
| # --------------------------- | |
| # GRADIO APP UI | |
| # --------------------------- | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# ๐ฑ **AgroVision: Smart Assistant for Farmers**") | |
| with gr.Tabs(): | |
| # TAB 1: CROP RECOMMENDATION | |
| with gr.TabItem("๐พ Crop Recommendation"): | |
| gr.Markdown("### Enter Soil & Climate Details to Predict Suitable Crop") | |
| with gr.Row(): | |
| N = gr.Slider(minimum=0, maximum=300, step=1, label="Nitrogen (N) in kg/ha") | |
| P = gr.Slider(minimum=0, maximum=200, step=1, label="Phosphorus (P) in kg/ha") | |
| K = gr.Slider(minimum=0, maximum=200, step=1, label="Potassium (K) in kg/ha") | |
| with gr.Row(): | |
| temperature = gr.Slider(minimum=-10, maximum=50, step=0.1, label="Temperature (ยฐC)") | |
| humidity = gr.Slider(minimum=0, maximum=100, step=1, label="Humidity (%)") | |
| with gr.Row(): | |
| ph = gr.Slider(minimum=0, maximum=14, step=0.1, label="Soil pH") | |
| rainfall = gr.Slider(minimum=0, maximum=500, step=1, label="Rainfall (mm)") | |
| predict_btn = gr.Button("Predict Crop") | |
| output_crop = gr.Markdown() | |
| predict_btn.click( | |
| fn=predict_crop, | |
| inputs=[N, P, K, temperature, humidity, ph, rainfall], | |
| outputs=output_crop | |
| ) | |
| # TAB 2: CROP DISEASE PREDICTION (Placeholder) | |
| with gr.TabItem("๐ฟ Crop Disease Detection"): | |
| gr.Markdown("### Upload an image of a crop leaf to detect disease (Coming Soon)") | |
| gr.Image(label="Upload Crop Image", type="filepath") | |
| gr.Button("Predict Disease (Coming Soon)") | |
| gr.Textbox(label="Prediction Output", placeholder="Model response will appear here...") | |
| # TAB 3: SMART CHATBOT (Gemini Only) | |
| with gr.TabItem("๐ฌ Farmer's Chatbot"): | |
| gr.Markdown("### Ask any question related to farming ๐จโ๐พ") | |
| user_input = gr.Textbox(label="Your Question") | |
| chatbot_output = gr.Textbox(label="AgroVision Bot Response") | |
| chatbot_btn = gr.Button("Ask Gemini") | |
| chatbot_btn.click(fn=chat_with_gemini, inputs=user_input, outputs=chatbot_output) | |
| # Run the app | |
| demo.launch() | |