Spaces:
Sleeping
Sleeping
| """ | |
| Rakesh Kumar Portfolio Chatbot | |
| Gradio app with Groq LLM integration and session management | |
| """ | |
| import os | |
| import uuid | |
| import time | |
| import gradio as gr | |
| from groq import Groq | |
| # Session management with 1-hour TTL | |
| sessions = {} | |
| SESSION_TTL = 3600 # 1 hour in seconds | |
| def cleanup_expired_sessions(): | |
| """Remove sessions older than TTL""" | |
| current_time = time.time() | |
| expired = [sid for sid, data in sessions.items() if current_time - data['created_at'] > SESSION_TTL] | |
| for sid in expired: | |
| del sessions[sid] | |
| def get_or_create_session(session_id: str) -> list: | |
| """Get existing session or create new one""" | |
| cleanup_expired_sessions() | |
| if session_id not in sessions: | |
| sessions[session_id] = { | |
| 'history': [], | |
| 'created_at': time.time() | |
| } | |
| return sessions[session_id]['history'] | |
| # System prompt with Rakesh's background | |
| SYSTEM_PROMPT = """You are a helpful AI assistant representing Rakesh Kumar's portfolio. Answer questions about Rakesh's experience, skills, projects, and background. | |
| ## About Rakesh Kumar | |
| - **Current Role**: AI Product Manager & AI Lead at Dr. Reddy's (Svaas Wellness) since Feb 2023 | |
| - **Experience**: 7+ years in AI, healthcare, and e-commerce | |
| - **Education**: MBA from IIM Ahmedabad (2018-2020), B.Tech from IIT Ropar (2011-2015) | |
| - **Location**: India | |
| - **Contact**: p18rakeshk@iima.ac.in | +91-9004260456 | |
| ## Key Projects | |
| ### AI Playground | |
| Low-code platform for business owners to create prototype AI agents. Features RAG pipeline creation, evaluation frameworks, orchestration layer, database integration hooks, and configuration layer for validating model responses. | |
| ### Medical Deep Research Agent | |
| Secondary research tool for pharma teams covering epidemiology, clinical trials, pharmacokinetics, safety, unmet needs. Built with RAG + Knowledge Graph, multi-agent architecture using SLMs and TinyLLM for knowledge extraction. | |
| ### SemaAI Agent | |
| Fully on-premise enterprise chatbot using TinyLLM, LoRA fine-tuning, RAG-grounded responses, and custom MLP layer for intent classification. | |
| ### Recommendation Engine (eShakti) | |
| Hybrid recommendation system using User-User, Item-Item, User-Item collaborative filtering with SVD, dimensionality reduction, and neural networks. Achieved +$50k/month revenue, +7% conversion. | |
| ## Key Achievements | |
| - 70%+ manual tasks reduced using agentic AI workflows | |
| - 80% faster insight generation with BI dashboards | |
| - 10× clinical research turnaround acceleration | |
| - 85% ML + LLM diet engine accuracy | |
| - 20k+ users onboarded in 90 days | |
| ## Skills | |
| Product Strategy, Roadmapping, AI/ML, LLM & RAG, GenAI Voice, Experimentation, SQL, Python, Data Platforms, Health Tech, E-commerce | |
| ## Certifications | |
| IBM AI Product Manager, IBM AI Developer, Google Digital Marketing, Six Sigma Green Belt | |
| Be concise, professional, and helpful. If asked something not about Rakesh, politely redirect to portfolio-related topics.""" | |
| # Initialize Groq client | |
| client = Groq(api_key=os.environ.get("GROQ_API_KEY")) | |
| def chat(message: str, history: list, request: gr.Request) -> str: | |
| """Process chat message with Groq LLM""" | |
| # Get session ID from cookies or create new one | |
| session_id = str(uuid.uuid4()) if not hasattr(request, 'session_hash') else request.session_hash | |
| # Get session history | |
| session_history = get_or_create_session(session_id) | |
| # Build messages for Groq | |
| messages = [{"role": "system", "content": SYSTEM_PROMPT}] | |
| # Add session history | |
| for h in session_history: | |
| messages.append({"role": "user", "content": h[0]}) | |
| messages.append({"role": "assistant", "content": h[1]}) | |
| # Add current message | |
| messages.append({"role": "user", "content": message}) | |
| try: | |
| # Call Groq API | |
| completion = client.chat.completions.create( | |
| model="llama-3.3-70b-versatile", | |
| messages=messages, | |
| temperature=0.7, | |
| max_tokens=1024, | |
| ) | |
| response = completion.choices[0].message.content | |
| # Update session history | |
| session_history.append((message, response)) | |
| return response | |
| except Exception as e: | |
| return f"I apologize, but I encountered an error. Please try again. Error: {str(e)}" | |
| # Create Gradio interface | |
| with gr.Blocks( | |
| title="Chat with Rakesh's Portfolio", | |
| ) as demo: | |
| gr.Markdown(""" | |
| # 💬 Ask About Rakesh Kumar | |
| *AI Product Manager & AI Lead* | |
| Ask me anything about Rakesh's experience, projects, skills, or background! | |
| """) | |
| chatbot = gr.ChatInterface( | |
| fn=chat, | |
| examples=[ | |
| "What is Rakesh's current role?", | |
| "Tell me about the AI Playground project", | |
| "What are Rakesh's key achievements?", | |
| "What is his educational background?", | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |