RakeshChat / app.py
SRVCP's picture
Initial commit - Gradio chatbot with Groq integration
a8e5626
"""
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()