galbendavids's picture
Fix README metadata: change colorTo to blue
00553ad
metadata
title: Feedback Analysis Agent
emoji: 📊
colorFrom: blue
colorTo: blue
sdk: docker
pinned: false
license: mit

Feedback Analysis Agent

מערכת ניתוח משובי משתמשים מבוססת SQL ו-LLM.

סקירה כללית

המערכת מאפשרת לשאול שאלות בשפה טבעית על משובי משתמשים ולקבל תשובות מפורטות ומבוססות נתונים. המערכת משתמשת בגישה מבוססת SQL - LLM יוצר שאילתות SQL, הן מבוצעות על הנתונים, ו-LLM נוסף יוצר תשובה מפורטת מהתוצאות.

תכונות עיקריות

  • שאילתות בשפה טבעית - שאל שאלות בעברית על המשובים
  • ניתוח אוטומטי - המערכת יוצרת שאילתות SQL אוטומטית
  • בדיקת איכות אוטומטית - תשובות נבדקות אוטומטית ומשופרות אם נדרש
  • ויזואליזציות - גרפים אוטומטיים של התוצאות
  • ממשק משתמש מודרני - UI צבעוני ואינטואיטיבי

התקנה והרצה

דרישות מקדימות

  • Python 3.10+
  • קובץ feedback_transformed_2.csv עם העמודות: ID, ServiceName, Level, Text, ReferenceNumber, RequestID, ProcessID, Year, Month, DayInMonth, DayOfWeek, Hour, DayOrNight

המערכת משתמשת ב-feedback_transformed_2.csv כברירת מחדל.

הערה: אם יש לך תאריכים אמיתיים, עדכן את CSV_PATH ב-.env או העלה את הקובץ עם התאריכים הנכונים.

התקנה

# יצירת סביבה וירטואלית
python -m venv .venv
source .venv/bin/activate  # ב-Windows: .venv\Scripts\activate

# התקנת תלויות
pip install -r requirements.txt

הגדרת API Keys

צור קובץ .env בשורש הפרויקט:

GEMINI_API_KEY=your_gemini_key_here
# או
OPENAI_API_KEY=your_openai_key_here

הערה: לפחות אחד מה-API keys חייב להיות מוגדר.

הרצה

python run.py

השרת יעלה על http://127.0.0.1:8000

פתח את הדפדפן וגש ל-http://127.0.0.1:8000

ארכיטקטורה

המערכת מבוססת על 4 שלבים:

  1. ניתוח שאילתה - LLM מנתח את שאלת המשתמש
  2. יצירת שאילתות SQL - LLM יוצר 1-5 שאילתות SQL רלוונטיות
  3. ביצוע שאילתות - שאילתות SQL מבוצעות על הנתונים (SQLite in-memory)
  4. סינתזה ותשובה - LLM יוצר תשובה מפורטת מהתוצאות, כולל בדיקת איכות אוטומטית

לקריאה מפורטת יותר, ראה ARCHITECTURE.md

מבנה הפרויקט

.
├── 0_preprocessing/        # עיבוד מקדים וקבצים משלימים
│   ├── scripts/            # סקריפטים לעיבוד נתונים
│   ├── tests/              # בדיקות
│   ├── feedback_transformed_2.csv  # נתוני המשובים המעובדים (לא ב-git)
│   └── *.md, *.pdf         # מסמכי תכנון ותיעוד
├── 1_frontend/             # האפליקציה והחלק הפרונטי
│   ├── index.html          # ממשק משתמש
│   └── app.js              # לוגיקת frontend
├── 2_backend_llm/          # הלוגיקה והארכיטקטורה ה-LLM
│   ├── app/
│   │   ├── api.py          # FastAPI endpoints
│   │   ├── sql_service.py  # לוגיקת SQL ו-LLM
│   │   ├── config.py       # הגדרות
│   │   └── data_loader.py  # טעינת נתונים מ-CSV
│   ├── run.py              # נקודת כניסה
│   └── app.py              # wrapper
├── .env                    # API keys (לא ב-git)
└── requirements.txt        # תלויות Python

שימוש

דרך הממשק

  1. פתח http://127.0.0.1:8000 בדפדפן
  2. הזן שאלה בשדה הטקסט
  3. לחץ על "🔍 שאל"
  4. צפה בתשובה, שאילתות SQL, תוצאות, וגרפים

דרך API

curl -X POST http://127.0.0.1:8000/query-sql \
  -H "Content-Type: application/json" \
  -d '{"query": "כמה משתמשים כתבו תודה?", "top_k": 5}'

דוגמאות שאלות

  • "כמה משתמשים כתבו תודה?"
  • "מה הנושא המרכזי של המשובים שקיבלו ציון נמוך מ-3?"
  • "חלק את המשובים ל-5 נושאים מרכזיים"
  • "כמה משובים התקבלו בחודש האחרון?"
  • "איך המשתמשים מרגישים כלפי השירות?"

Quality Assurance

המערכת כוללת בדיקת איכות אוטומטית:

  • כל תשובה מקבלת ציון 0-100
  • אם הציון < 80, המערכת מנסה לשפר את התשובה אוטומטית
  • הקריטריונים: רלוונטיות, דיוק, מפורטות, בהירות, תובנות עסקיות

Visualizations

המערכת יוצרת גרפים אוטומטיים:

  • Bar Charts - להשוואות
  • Line Charts - למגמות לאורך זמן
  • Scatter Plots - לקשרים בין משתנים
  • Histograms - להתפלגות נתונים

Deployment

Docker

docker build -t feedback-analysis .
docker run -p 8000:8000 feedback-analysis

Runpod

ראה DEPLOYMENT_GUIDE.md לפרטים.

שינויים והתאמות

שינוי מודל LLM

ערוך ב-app/sql_service.py:

model = genai.GenerativeModel("gemini-2.0-flash")  # שנה כאן

שינוי סף איכות

ערוך ב-app/sql_service.py:

if score < 80:  # שנה כאן (0-100)

הוספת עמודות חדשות

ערוך ב-app/sql_service.py_get_schema_info():

schema_info = f"""
טבלת Feedback מכילה את השדות הבאים:
- NewColumn: ...  # הוסף כאן
"""

Troubleshooting

שגיאת "No feedback data available"

  • ודא שקובץ Feedback.csv קיים
  • ודא שהעמודות הנדרשות קיימות: ID, ServiceName, Level, Text

שגיאת API Key

  • ודא שקובץ .env קיים עם GEMINI_API_KEY או OPENAI_API_KEY

תשובות לא איכותיות

  • בדוק את הלוגים - המערכת מדפיסה ציוני איכות
  • נסה לשנות את ה-prompt ב-_synthesize_answer()

קישורים

רישיון

[לעדכן]