|
|
--- |
|
|
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` או העלה את הקובץ עם התאריכים הנכונים. |
|
|
|
|
|
### התקנה |
|
|
|
|
|
```bash |
|
|
# יצירת סביבה וירטואלית |
|
|
python -m venv .venv |
|
|
source .venv/bin/activate # ב-Windows: .venv\Scripts\activate |
|
|
|
|
|
# התקנת תלויות |
|
|
pip install -r requirements.txt |
|
|
``` |
|
|
|
|
|
### הגדרת API Keys |
|
|
|
|
|
צור קובץ `.env` בשורש הפרויקט: |
|
|
|
|
|
```env |
|
|
GEMINI_API_KEY=your_gemini_key_here |
|
|
# או |
|
|
OPENAI_API_KEY=your_openai_key_here |
|
|
``` |
|
|
|
|
|
**הערה**: לפחות אחד מה-API keys חייב להיות מוגדר. |
|
|
|
|
|
### הרצה |
|
|
|
|
|
```bash |
|
|
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](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 |
|
|
|
|
|
```bash |
|
|
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 |
|
|
|
|
|
```bash |
|
|
docker build -t feedback-analysis . |
|
|
docker run -p 8000:8000 feedback-analysis |
|
|
``` |
|
|
|
|
|
### Runpod |
|
|
|
|
|
ראה [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) לפרטים. |
|
|
|
|
|
## שינויים והתאמות |
|
|
|
|
|
### שינוי מודל LLM |
|
|
|
|
|
ערוך ב-`app/sql_service.py`: |
|
|
```python |
|
|
model = genai.GenerativeModel("gemini-2.0-flash") # שנה כאן |
|
|
``` |
|
|
|
|
|
### שינוי סף איכות |
|
|
|
|
|
ערוך ב-`app/sql_service.py`: |
|
|
```python |
|
|
if score < 80: # שנה כאן (0-100) |
|
|
``` |
|
|
|
|
|
### הוספת עמודות חדשות |
|
|
|
|
|
ערוך ב-`app/sql_service.py` → `_get_schema_info()`: |
|
|
```python |
|
|
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()` |
|
|
|
|
|
## קישורים |
|
|
|
|
|
- **GitHub**: [https://github.com/galbendavids/Feedback_Analysis_RAG_Agent_runpod](https://github.com/galbendavids/Feedback_Analysis_RAG_Agent_runpod) |
|
|
- **קורות חיים**: [https://github.com/galbendavids/Feedback_Analysis_RAG_Agent_runpod/blob/main/0_preprocessing/Gal%20Shlomo%20Ben%20David%20Ohayone_e-1.pdf](https://github.com/galbendavids/Feedback_Analysis_RAG_Agent_runpod/blob/main/0_preprocessing/Gal%20Shlomo%20Ben%20David%20Ohayone_e-1.pdf) |
|
|
|
|
|
## רישיון |
|
|
|
|
|
[לעדכן] |
|
|
|