Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
import random | |
# Initialize the Hugging Face text generation pipeline with distilgpt2 | |
generator = pipeline("text-generation", model="distilgpt2") | |
# Function to generate checklists, tips, and engagement score | |
def generate_project_data(project_input): | |
# Generate checklists (3 tasks) | |
checklist_prompt = f"Generate a list of 3 safety and productivity tasks for a construction project: {project_input}" | |
checklist_response = generator(checklist_prompt, max_length=100, num_return_sequences=1, truncation=True)[0]["generated_text"] | |
# Extract tasks (simple parsing assuming the model returns a list-like structure) | |
tasks = checklist_response.replace(checklist_prompt, "").split(".")[:3] | |
tasks = [task.strip() for task in tasks if task.strip()] | |
if len(tasks) < 3: | |
# Fallback tasks if the model doesn't generate enough | |
tasks.extend([ | |
"Conduct a safety briefing with the team.", | |
"Inspect all equipment before use.", | |
"Ensure all workers are wearing PPE." | |
][:3 - len(tasks)]) | |
# Generate a tip | |
tip_prompt = f"Provide a productivity tip for a construction project supervisor: {project_input}" | |
tip_response = generator(tip_prompt, max_length=50, num_return_sequences=1, truncation=True)[0]["generated_text"] | |
tip = tip_response.replace(tip_prompt, "").strip() | |
if not tip: | |
tip = "Schedule regular breaks to maintain team focus." | |
# Generate a mock engagement score (rule-based for simplicity) | |
# In a real scenario, this could be generated by a model trained on engagement data | |
engagement_score = random.randint(70, 90) # Random score between 70 and 90 | |
# Return the data in the expected JSON format | |
return { | |
"checklists": [{"task": task} for task in tasks], | |
"tips": tip, | |
"engagementScore": engagement_score | |
} | |
# Create a Gradio interface | |
interface = gr.Interface( | |
fn=generate_project_data, | |
inputs=gr.Textbox(label="Project Input", placeholder="Enter project details (e.g., Project: Highway Construction, Start Date: 2025-05-01)"), | |
outputs=gr.JSON(label="Generated Data"), | |
title="AI Coach Data Generator", | |
description="Generates daily checklists, tips, and engagement scores for construction projects." | |
) | |
# Launch the app | |
interface.launch() |