#!/usr/bin/env python3
"""
Advanced ChatGPT Agent for Stevia Store using OpenAI Agents SDK + MCP
"""
import os
import asyncio
from typing import Optional
from dotenv import load_dotenv
from openai_agents import Agent
from openai_agents.mcp import MCPServerStdio
# Load environment variables
load_dotenv()
class SteviaChatGPTAgent:
"""ChatGPT Agent specifically designed for Stevia Store operations"""
def __init__(self, openai_api_key: Optional[str] = None):
"""Initialize the Stevia Store ChatGPT Agent"""
# Set API key
if openai_api_key:
os.environ["OPENAI_API_KEY"] = openai_api_key
elif not os.getenv("OPENAI_API_KEY"):
raise ValueError("OpenAI API key is required. Set OPENAI_API_KEY environment variable.")
# Initialize MCP server
self.mcp_server = MCPServerStdio(
command="python",
args=[os.path.join(os.path.dirname(__file__), "../src/stevia_store_server.py")],
env={
"DATABASE_PATH": os.getenv("DATABASE_PATH", "./stevia_store.db")
}
)
# Create ChatGPT agent
self.agent = Agent(
model=os.getenv("OPENAI_MODEL", "gpt-4"),
name="מומחה הסטיביה של אורגניטל",
instructions=self._get_system_instructions(),
mcp_servers=[self.mcp_server],
# Tool filtering - only allow relevant tools
mcp_tool_filter={
"allowed_tool_names": [
"get_products",
"add_product",
"add_customer",
"create_order",
"update_inventory",
"get_low_stock_alerts",
"get_sales_summary"
]
}
)
def _get_system_instructions(self) -> str:
"""Get comprehensive system instructions for the agent"""
return """
🌿 אתה מומחה הסטיביה של אורגניטל - החברה המובילה למוצרי סטיביה טבעיים בישראל.
## תפקידך:
- עוזר לקוחות למצוא את מוצרי הסטיביה המתאימים ביותר
- מספק ייעוץ בריאותי ותזונתי על שימוש בסטיביה
- מנהל הזמנות, מלאי ומידע לקוחות
- מעניק שירות לקוחות מקצועי ואדיב
## מוצרי החברה:
1. סטיביה טבעית אורגנית (45.90₪) - חמרי גלם טהורים
2. סטיביה בטבליות (29.90₪) - נוח לשימוש יומיומי
3. סטיביה נוזלית ונילה (39.90₪) - למשקאות וקינוחים
4. אבקת סטיביה לאפיה (55.90₪) - מתאימה לחום גבוה
5. מארז טעימה (89.90₪) - הכרות עם המגוון
## עקרונות מנחים:
✅ תמיד מדבר בעברית עם לקוחות ישראלים
✅ מציין מחירים בשקלים (₪)
✅ מדגיש יתרונות בריאותיים: ללא קלוריות, מתאים לסוכרתיים
✅ מסביר על איכות אורגנית ומקור טבעי
✅ מציע המלצות מותאמות אישית
✅ שומר על טון ידידותי ומקצועי
## יכולות מיוחדות:
- בדיקת מלאי בזמן אמת
- יצירת הזמנות מלאות
- מעקב אחר מכירות וביצועים
- ניהול פרטי לקוחות
- ייעוץ תזונתי מבוסס מדע
תמיד השתמש בכלים הזמינים לך כדי לספק מידע מדויק ועדכני!
"""
async def chat(self, message: str) -> str:
"""Send a message to the agent and get response"""
try:
response = await self.agent.run(message)
return response.content
except Exception as e:
return f"❌ שגיאה: {str(e)}"
async def interactive_chat(self):
"""Start interactive chat session"""
print("🌿 ברוכים הבאים לצ'אט הסטיביה של אורגניטל!")
print("💬 שאלו אותי הכל על מוצרי הסטיביה שלנו")
print("🔧 כתבו 'יציאה' כדי לסיים\n")
while True:
try:
user_input = input("🙋♂️ אתם: ")
if user_input.lower() in ['יציאה', 'exit', 'quit']:
print("🌿 תודה שביקרתם את אורגניטל! בריאות טובה!")
break
print("🤖 מחשב...")
response = await self.chat(user_input)
print(f"🌿 מומחה הסטיביה: {response}\n")
except KeyboardInterrupt:
print("\n🌿 להתראות!")
break
except Exception as e:
print(f"❌ שגיאה: {e}")
async def demo_conversations():
"""Demo various conversation scenarios"""
# Initialize agent
agent = SteviaChatGPTAgent()
demo_messages = [
"מה המוצרים שיש לכם במלאי?",
"אני סוכרתי - איזה מוצר הכי מתאים לי?",
"רוצה להזמין 2 יחידות מהסטיביה הטבעית ויחידה אחת מהטבליות",
"תוכל לבדוק אם יש מוצרים שחסרים במלאי?",
"מה היתרונות הבריאותיים של סטיביה?",
"אני רוצה לפתוח חשבון חדש - שמי דני לוי"
]
print("🎭 הדגמת שיחות עם מומחה הסטיביה")
print("=" * 60)
for i, message in enumerate(demo_messages, 1):
print(f"\n💬 דוגמה {i}: {message}")
print("-" * 50)
response = await agent.chat(message)
print(f"🤖 תשובה: {response}")
# Small delay between demos
await asyncio.sleep(1)
async def main():
"""Main function with menu options"""
print("🌿 אורגניטל - מערכת ChatGPT + MCP לניהול חנות הסטיביה")
print("=" * 70)
while True:
print("\nבחרו אפשרות:")
print("1️⃣ צ'אט אינטראקטיבי")
print("2️⃣ הדגמת שיחות")
print("3️⃣ יציאה")
choice = input("\n🔢 הבחירה שלכם: ")
if choice == "1":
agent = SteviaChatGPTAgent()
await agent.interactive_chat()
elif choice == "2":
await demo_conversations()
elif choice == "3":
print("🌿 בריאות טובה! 👋")
break
else:
print("❌ אפשרות לא חוקית")
if __name__ == "__main__":
try:
asyncio.run(main())
except Exception as e:
print(f"❌ שגיאה כללית: {e}")
print("💡 וודאו ש-OpenAI API key מוגדר נכון ושרת ה-MCP פעיל")