Spaces:
Sleeping
Sleeping
File size: 4,550 Bytes
137ab15 febc6cf 137ab15 febc6cf 137ab15 d6f27d0 137ab15 d6f27d0 137ab15 d6f27d0 137ab15 d6f27d0 137ab15 febc6cf 137ab15 d6f27d0 137ab15 d6f27d0 137ab15 d6f27d0 137ab15 |
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
import gradio as gr
from transformers import pipeline
from simple_salesforce import Salesforce
import datetime
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Initialize Hugging Face model
generator = pipeline("text-generation", model="distilgpt2")
# Initialize Salesforce connection using environment variables
sf = Salesforce(
username=os.getenv("SF_USERNAME"),
password=os.getenv("SF_PASSWORD"),
security_token=os.getenv("SF_SECURITY_TOKEN")
)
def generate_ai_data(supervisor_id, project_id, supervisor_data, project_data):
"""
Generate AI coaching data and reports based on supervisor and project data.
Args:
supervisor_id (str): ID of the supervisor from Supervisor_Profile__c
project_id (str): ID of the project from Project_Details__c
supervisor_data (dict): Contains Role__c, Location__c
project_data (dict): Contains Name, Start_Date__c, End_Date__c, Milestones__c, Project_Schedule__c
Returns:
dict: Status and generated data
"""
try:
# Construct prompt for AI generation
prompt = (
f"Generate daily checklist, tips, risk alerts, upcoming milestones, and performance trends for a "
f"{supervisor_data['Role__c']} at {supervisor_data['Location__c']} working on project "
f"{project_data['Name']} with milestones {project_data['Milestones__c']} and schedule "
f"{project_data['Project_Schedule__c']}."
)
# Generate AI output
ai_response = generator(prompt, max_length=500, num_return_sequences=1)[0]['generated_text']
# Parse AI response (simplified parsing for this example)
# In a real scenario, you'd use more sophisticated NLP to extract structured data
daily_checklist = (
"1. Conduct safety inspection of site (Safety, Pending)\n"
"2. Ensure team wears protective gear (Safety, Pending)\n"
"3. Schedule team briefing (General, Pending)"
)
suggested_tips = (
"1. Prioritize safety checks due to upcoming weather risks.\n"
"2. Focus on delayed tasks.\n"
"3. Schedule a team review."
)
risk_alerts = "Risk of delay: Rain expected on May 22, 2025."
upcoming_milestones = project_data['Milestones__c'].split(';')[0] # Take the first milestone
performance_trends = "Task completion rate: 75% this week (initial estimate)."
# Save AI data to AI_Coaching_Data__c
ai_data = {
'Supervisor_ID__c': supervisor_id,
'Project_ID__c': project_id,
'Daily_Checklist__c': daily_checklist,
'Suggested_Tips__c': suggested_tips,
'Risk_Alerts__c': risk_alerts,
'Upcoming_Milestones__c': upcoming_milestones,
'Performance_Trends__c': performance_trends,
'Generated_Date__c': datetime.datetime.now().strftime('%Y-%m-%d')
}
sf.AI_Coaching_Data__c.create(ai_data)
# Generate a report for Report_Download__c
report_data = {
'Supervisor_ID__c': supervisor_id,
'Project_ID__c': project_id,
'Report_Type__c': 'Performance',
'Report_Data__c': f"Performance Report: Task completion rate: 75% this week (initial estimate). Engagement score: 80%.",
'Download_Link__c': 'https://salesforce-site.com/reports/RPT-0001.pdf', # Update with actual Salesforce Site URL
'Generated_Date__c': datetime.datetime.now().strftime('%Y-%m-%d')
}
sf.Report_Download__c.create(report_data)
return {
"status": "success",
"message": "AI data and report generated successfully",
"ai_data": ai_data,
"report_data": report_data
}
except Exception as e:
return {
"status": "error",
"message": f"Error generating AI data: {str(e)}"
}
# Create Gradio interface
iface = gr.Interface(
fn=generate_ai_data,
inputs=[
gr.Textbox(label="Supervisor ID"),
gr.Textbox(label="Project ID"),
gr.JSON(label="Supervisor Data"),
gr.JSON(label="Project Data")
],
outputs=gr.JSON(label="Result"),
title="AI Coach Data Generator",
description="Generate AI coaching data and reports based on supervisor and project details."
)
# Launch the Gradio app
if __name__ == "__main__":
iface.launch(server_name="0.0.0.0", server_port=7860) |