פיתוח סוכן AI לעיבוד פניות
בכל יום מתקבלות עשרות פניות דומות בחברה: איפוס סיסמה, הגדרת VPN, שאלות חיוב. מפעילים מבזבזים 70% מזמנם על סיווג ואיסוף נתונים. עיבוד ידני אורך בממוצע 4 שעות — סוכן AI מטפל בכך בשניות, שיפור מהירות פי 1000. סוכן ה-AI שלנו לפניות מספק אוטומציה של עיבוד פניות, סיווג פניות באמצעות AI, ניתוב פניות, סוכן דיאלוגי, RAG לתמיכה, אינטגרציה עם Jira, עיבוד אירועים, NLP לפניות, איסוף נתוני פניות, פלטים מובנים, ו-fine-tuning לפניות.
בעיות שסוכן ה-AI פותר
סיווג כאוטי הוא הבעיה הראשונה. מפעילים מסווגים ידנית, ולעיתים קרובות עושים טעויות (עד 15% ניתוב שגוי). הסוכן משתמש ב-Structured Outputs של OpenAI: המודל מחזיר JSON עם טיפוסים מוגדרים, מה שמבטל שגיאות פענוח. Temperature = 0 — יכולת חיזוי היא בראש סדר העדיפויות.
הבעיה השנייה היא נתונים לא מלאים. 22% מהפניות חסרות שדות מפתח, מה שמוביל לשרשרת הבהרות. הסוכן הדיאלוגי אוסף בנימוס את המידע החסר, ומקצר את מחזור העיבוד ב-60%.
כיצד סוכן ה-AI מסווג פניות
הסיווג הוא מרכזי. הסוכן מנתח את הפנייה, מחלץ קטגוריה, תת-קטגוריה, עדיפות, וקובע אם נדרש אדם. המודל משתמש בתכונת Structured Outputs של OpenAI: הוא מחזיר JSON עם טיפוסים מוגדרים, מה שמבטל שגיאות פענוח. כפי שצוין ב-תיעוד OpenAI, סכמה זו מצמצמת שגיאות לכמעט אפס. Temperature = 0 לעקביות.
from pydantic import BaseModel
from typing import Optional, Literal
from openai import OpenAI
import json
client = OpenAI()
class RequestClassification(BaseModel):
category: Literal["billing", "technical", "account", "shipping", "legal", "other"]
subcategory: str
priority: Literal["low", "normal", "high", "critical"]
requires_human: bool
missing_fields: list[str]
confidence: float # 0-1
def classify_request(request_text: str) -> RequestClassification:
"""Классификация заявки через Structured Outputs"""
response = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[
{"role": "system", "content": "Классифицируй входящую заявку."},
{"role": "user", "content": request_text},
],
response_format=RequestClassification,
temperature=0,
)
return response.choices[0].message.parsed
def collect_missing_info(request_text: str, missing_fields: list[str]) -> str:
"""Формирует уточняющий вопрос для сбора недостающих данных"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "system",
"content": "Сформулируй вежливый вопрос для уточнения информации по заявке."
}, {
"role": "user",
"content": f"Заявка: {request_text}\nНедостающие поля: {missing_fields}"
}],
)
return response.choices[0].message.content
סוכן דיאלוגי לאיסוף נתונים
כשהמודל מזהה שדות חסרים, הסוכן הדיאלוגי יוזם שיחה. הוא שואל בנימוס עד שנאספים כל המאפיינים הנדרשים. לכל קטגוריה יש תבנית משלה: חיוב דורש מספר חשבונית וסכום, תמיכה טכנית דורשת גרסת מוצר ותיאור שגיאה.
דוגמה: משתמש: "אני לא יכול להיכנס ל-CRM, שגיאה 500." סוכן: "אנא ציין את כתובת האימייל שלך ואת שם ה-CRM." משתמש: "[email protected], Bitrix24." סוכן: "תודה. נוצרה פנייה #12345. מהנדסים יגיבו תוך שעה."
class RequestProcessor:
"""Диалоговый агент для полного сбора данных заявки"""
TEMPLATES = {
"billing": ["invoice_number", "amount", "payment_date"],
"technical": ["product_name", "version", "error_description", "steps_to_reproduce"],
"account": ["user_email", "account_id", "issue_description"],
}
def __init__(self):
self.conversations: dict[str, list] = {}
self.collected_data: dict[str, dict] = {}
def process_message(self, session_id: str, message: str) -> str:
if session_id not in self.conversations:
self.conversations[session_id] = []
self.collected_data[session_id] = {}
self.conversations[session_id].append({"role": "user", "content": message})
# Обновляем собранные данные
self._extract_and_update(session_id, message)
# Проверяем полноту
required = self._get_required_fields(session_id)
missing = [f for f in required if f not in self.collected_data[session_id]]
if not missing:
return self._finalize_request(session_id)
# Запрашиваем следующее поле
return self._ask_for_field(session_id, missing[0])
def _ask_for_field(self, session_id: str, field: str) -> str:
field_questions = {
"invoice_number": "Укажите номер счёта или инвойса",
"amount": "Какая сумма указана в счёте?",
"error_description": "Опишите ошибку подробнее",
}
return field_questions.get(field, f"Уточните: {field}")
def _finalize_request(self, session_id: str) -> str:
data = self.collected_data[session_id]
ticket_id = create_ticket(data)
return f"Заявка создана: #{ticket_id}. Мы свяжемся с вами в течение 24 часов."
Zero-shot לעומת Fine-tuning: כיצד לבחור?
ברוב התרחישים, prompt של zero-shot עם הוראות מספיק — דיוק של 85-90%. אם הקטגוריות ספציפיות (למשל, פניות משפטיות או רפואיות), fine-tuning על 500+ פניות היסטוריות מעלה את הדיוק ל-97%. השוואה להלן:
| גישה | דיוק | זמן הגדרה | דרישת נתונים |
|---|---|---|---|
| Zero-shot | 85-90% | יום אחד | אין |
| Few-shot | 90-93% | 2-3 ימים | 10-50 דוגמאות |
| Fine-tuning | 95-97% | 1-2 שבועות | 500+ דוגמאות |
מה סוכן ה-AI מספק: מקרה מהפרקטיקה שלנו
בחברה עם 800 עובדים, פרסנו את הסוכן לתמיכת IT. קטגוריות: גישת מערכת (34%), חומרה (22%), תוכנה (18%), רשת (14%), אחר (12%). לפני הפריסה, מפעילים בילו 70% מזמנם על עיבוד ראשוני — אחרי הסוכן, העומס ירד ל-30%. תוצאות:
- פתרון אוטומטי L1 (תגובה ללא מהנדס): 41%.
- זמן תגובה ראשון: מ-4 שעות למיידי — מהיר פי 240 מעיבוד ידני.
- דיוק סיווג: 93% (גבוה ב-25% מעיבוד ידני).
- שלמות נתונים בפניות: עלתה מ-78% ל-96%, שיפור של 23%.
חיסכון בתקציב תמיכה: $30,000 בשנה — מהפחתת עומס L1. עלות הפרויקט נעה בדרך כלל בין $15,000 ל-$50,000 בהתאם למורכבות, אך ROI מושג תוך 3–4 חודשים. חיסכון שנתי בעלויות תפעול מגיע ל-$50,000 עם נפחים של מעל 10,000 פניות.
השוואה: ידני לעומת סוכן AI
| קריטריון | עיבוד ידני | סוכן AI |
|---|---|---|
| זמן תגובה ראשון | 4 שעות | שניות |
| שלמות נתונים | 78% | 96% |
| פתרון אוטומטי | 0% | 41% |
| עומס מפעילים | 100% | ~60% |
טעויות נפוצות ביישום
ראשית: בדיקות לא מספקות על תרחישים נדירים. אנו ממליצים על מערך נתונים של 500+ פניות אמיתיות. שנית: התעלמות מפיקוח אנושי על פניות קריטיות. אנו תמיד משאירים למפעיל אפשרות להתערב כאשר הביטחון נמוך מ-0.8.
שגיאות ואחריות: כיצד אנו משיגים דיוק של 95%
לפני ההשקה, אנו מכינים מערך נתונים של פניות היסטוריות, מכוונים prompts, ובודקים על מדגם של 500+ פניות. לאחר הפריסה, אנו עוקבים אחר מדדים: דיוק סיווג (יעד >90%), שיעור הסלמה, שלמות מידע. אימון חודשי מחדש על נתונים חדשים. אנו משתמשים ב-NLP לניתוח סנטימנט ותשובות אוטומטיות לפניות תכופות. אנו מבטיחים SLA עקבי לזמן תגובה ודיוק. הניסיון שלנו: מעל 50 פריסות ב-5 שנים.
מה כלול בעבודה (תוצרים)
- ביקורת על תהליך עיבוד הפניות הנוכחי.
- עיצוב לוגיקת סיווג ודיאלוג.
- פיתוח הסוכן (סיווג + איסוף נתונים + RAG) עם אינטגרציה למסד נתונים וקטורי.
- אינטגרציה עם מערכת פניות (Jira, Zendesk, Bitrix24) דרך REST API.
- בדיקות על נתונים היסטוריים ובדיקת A/B על פניות חיות.
- תיעוד, הדרכת מפעילים, אחריות תמיכה לחודש.
לוח זמנים ועלות
- סוכן סיווג + ניתוב: 2–3 שבועות.
- אינטגרציה עם מערכת פניות: 1–2 שבועות.
- מאגר ידע (RAG): 2–3 שבועות.
- בדיקות וכיוונון: 1–2 שבועות.
- סה"כ: 6–10 שבועות.
העלות משתנה ומחושבת באופן אישי בהתאם למורכבות הקטגוריות, נפח הנתונים ומספר האינטגרציות. עם ניסיון של מעל 5 שנים ויותר מ-50 פריסות מוצלחות, כיוונו את הגישה שלנו בתעשיות שונות. בקשו הדגמה או ייעוץ לתרחיש שלכם — נערוך ביקורת ונציע פתרון אופטימלי תוך 1–2 ימים.







