File size: 7,101 Bytes
395afb7
 
 
 
00553ad
395afb7
 
 
 
 
9c30c74
1c23b7c
9c30c74
bf7bcb9
9c30c74
bf7bcb9
9c30c74
 
 
bf7bcb9
9c30c74
 
 
 
 
bf7bcb9
9c30c74
4010059
9c30c74
4010059
9c30c74
9a7cb3e
4010059
9a7cb3e
e405ff6
 
 
9c30c74
4010059
 
9c30c74
4010059
9c30c74
4010059
9c30c74
1c23b7c
 
4010059
9c30c74
 
 
 
 
4010059
9c30c74
 
1c23b7c
4010059
9c30c74
 
 
4010059
 
1c23b7c
 
 
9c30c74
4010059
9c30c74
1c23b7c
9c30c74
1c23b7c
9c30c74
1c23b7c
9c30c74
 
 
 
1c23b7c
9c30c74
1c23b7c
9c30c74
1c23b7c
 
9c30c74
f073efc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9c30c74
f073efc
1c23b7c
 
9c30c74
1c23b7c
9c30c74
 
 
 
 
 
 
 
 
 
 
1da3dc8
9c30c74
1c23b7c
 
9c30c74
1c23b7c
9c30c74
 
 
 
 
1c23b7c
9c30c74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c23b7c
9c30c74
 
 
 
 
 
 
 
 
 
 
 
1c23b7c
 
9c30c74
 
 
 
 
1c23b7c
9c30c74
 
 
 
 
 
 
 
 
1c23b7c
 
9c30c74
1c23b7c
9c30c74
 
 
1c23b7c
9c30c74
 
 
 
 
 
 
 
 
395afb7
f073efc
1c23b7c
9c30c74
1c23b7c
9c30c74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
---
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)

## רישיון

[לעדכן]