File size: 2,364 Bytes
b3c589d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()