Navya-Sree's picture
Create app.py
42db53f verified
Raw
History Blame Contribute Delete
3.13 kB
import os
import gradio as gr
import openai
# Fix Matplotlib permission issues
os.environ['MPLCONFIGDIR'] = '/tmp/matplotlib'
# Initialize OpenAI
openai.api_key = os.environ.get("OPENAI_API_KEY", "your-api-key")
def generate_prompt(manager, peer, self_review):
return f"""
Act as an expert HR coach analyzing 360° feedback. Generate a structured development report with these sections:
1. Key Strengths (3-5 bullet points) 💪
2. Growth Areas (3-5 actionable items) 📈
3. Development Plan (2-3 concrete suggestions) 🚀
Feedback Sources:
Manager: {manager or 'No input'}
Peer: {peer or 'No input'}
Self: {self_review or 'No input'}
Guidelines:
- Use empathetic, professional tone
- Connect insights across feedback sources
- Focus on measurable improvements
- Include both technical and soft skills
- Highlight 1 'quick win' priority
- Avoid generic advice - be specific
- Format in markdown with emojis
- Keep output under 300 words
"""
def generate_feedback(manager, peer, self_review):
"""Generate AI feedback summary from all inputs"""
try:
prompt = generate_prompt(manager, peer, self_review)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
except Exception as e:
return f"⚠️ Error generating feedback: {str(e)}"
with gr.Blocks(theme=gr.themes.Soft(), title="360° Feedback AI Coach") as app:
gr.Markdown("# 🚀 360° Feedback AI Coach")
gr.Markdown("Get personalized development insights from manager, peer, and self feedback")
with gr.Row():
with gr.Column():
manager_input = gr.Textbox(label="Manager Feedback", lines=5, placeholder="Manager's comments...")
peer_input = gr.Textbox(label="Peer Feedback", lines=5, placeholder="Peer's comments...")
self_input = gr.Textbox(label="Self Review", lines=5, placeholder="Your self-assessment...")
with gr.Column():
output = gr.Markdown(label="AI Feedback Summary")
with gr.Row():
submit_btn = gr.Button("Generate Report", variant="primary")
clear_btn = gr.Button("Clear")
gr.Examples(
examples=[
["Strong technical skills but needs improvement in communication", "Always helpful with technical problems", "I need to work on presentation skills"],
["Excellent leadership, should delegate more", "Great team player", "Want to improve time management"],
],
inputs=[manager_input, peer_input, self_input],
label="Example Inputs"
)
submit_btn.click(
fn=generate_feedback,
inputs=[manager_input, peer_input, self_input],
outputs=output
)
clear_btn.click(lambda: [None, None, None, None], None, [manager_input, peer_input, self_input, output])
if __name__ == "__main__":
app.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)))