איך מטמיעים מערכת בינה מלאכותית בקו
-
@המייבין-770
אני לא יכול להרשות לעצמי לשלם למישהו שיפתח לי את זה בעוד אני לא מרוויח על זה כלום...
הרעיון הוא מיזם התנדבותי בסגנון קוד פתוח -
פוסט זה נמחק! -
@נתנאל-היוצר מה יעזור לך קוד פתוח?, מה תעשה עם זה?
-
@CUBASE נראה שלא הבנת את כוונתי
לא התכוונתי שהמודל AI או הקישור אליו יהיה דווקא בקוד פתוח
התכוונתי לסגנון הרעיון של 'קוד פתוח' כמושג
שקהילת קוד פתוח מפתחים קוד ותוכנות שלא למטרת רווח
כך גם כאן
מקווה שהבנת את הרעיון -
@נתנאל-היוצר עכ"פ, אם הרעיון ה"פנטסטי" שלך זה מערכת AI שתעבוד חלק בלי תקלות כמו שיש היום בשאר המערכות, אז.. זה לא בחינם.
-
@CUBASE
לא הבנתי מה הולך פה
הרי כמו שהזכרתי פיתחו כבר כמה וכמה מערכות טלפוניות שמקשרות לבינה מלאכותית
הרי שכבר כמה וכמה אנשים כתבו את הקוד ואת כל התהליך שהזכרת עבור הקו שלהם
ומכיוון שהם הרי לא מרוויחים שקל מהקו ואין להם לכאורה מה לפחד ממתחרים
אני כאן מבקש ממישהו כזה, לשתף את מה שהוא עשה כדי לפתח את המערכת
זה הכל! -
@נתנאל-היוצר אם תפרט מה המטרה שלך.
יכול להיות שאני אוכל להתאים את המודול הקיים שלי לצרכים שלך חינם.
אבל אני לא מתחייב. -
@נתנאל-היוצר זה לא עניין של כסף, אם היית עובד על פיתוח שעות על גבי שעות - היית מבין את הקושי שבדבר..
@ivrפון לפי מה שהבנתי הוא לא מחפש מטרה ספציפית אלא מערכת שתענה תשובות ב-AI, מה שכבר יש לך.
@נתנאל-היוצר עדיין לא הצלחתי להבין מה הסיבה שאתה רוצה שישתפו את הקוד, בין כה לא תדע איך לטפל בזה בשבילך..
-
@ivrפון
קודם כל תודה רבה
יפה לראות שיש כאן בפורום אנשים שאוהבים לעזור.
המטרה שלי היא מאוד פשוטה
להקים קו שיהיה אפשר לשאול שאלות את צ'אט GPT ואחרים בצורה הטובה ביותר
ואני חושב שברגע שכל המפתחים שבנו כבר קווים בסגנון הזה
אבל הקווים האלה לא ממש עובדים בצורה מיטבית...
יעזרו אחד לשני, שהרי ממילא היום רוב הקווים הם ללא כוונות רווח
יהיה אפשר להגיע למודל פתוח, טוב ואיכותי שיעבוד בצורה טובה ללא תקלות, לטובת כולם.
תודה לכולם! -
@נתנאל-היוצר הסיבה שהמערכות האלו לא עובדות בצורה המיטבית היא בגלל שבנו אותם במסגרת המגבלות החינמיות של מודלי ה-AI השונים, אף אחד לא יוציא כסף על מערכת שלא תכניס כסף.
-
@CUBASE
ממה שאני מכיר יש מספיק מודלי AI שההתכתבות איתם היא ללא הגבלה או אפילו בקוד פתוח
כמו דיפסיק, קלוד ואחרים.
בנוסף הסיבה שהקווים האלה לא עובדים בצורה מיטבית קשורה לעוד דברים חוץ מהנקודה שהעלת, כמו העומס על השרת וכו'. -
@נתנאל-היוצר יש להתכתב עם המודל במחשב ללא הגבלה, ויש להתממשק עם המודל ב-API בשביל להשתמש בו במערכת טלפונית - זה שני דברים שונים.
-
טוב, אז ככה שאלתי את הבינה המלאכותית.... זה מה שענתה, לא בדקתי אותה ולא עברתי עליה בכלל... אז.:
# מדריך | שילוב בינה מלאכותית (ChatGPT/Claude/Gemini) בקו תוכן ימות המשיחהסברים מסודרים ממשתמשים
מדריך מעשי ומרוכז המיועד למנהלי קווים המעוניינים לשלב מנועי AI בקו – בלי סודות ועם דוגמאות תכל'ס.
תקציר
המטרה: לאפשר למתקשר לדבר בקו, שהמערכת תבין את הדיבור (Speech‑to‑Text), תשלח את הטקסט למנוע AI (ChatGPT/Claude/Gemini), תקבל תשובה, תהפוך אותה לקול (Text‑to‑Speech), ותשמיע למתקשר – הכל מתוך שלוחות ימות המשיח.
כדי שזה יעבוד צריך שרת ביניים (Backend) קטן שמקשר בין ימות למשאבי ה‑AI ו‑TTS/STT. במדריך תמצאו אילו שלוחות להשתמש, איך נראה הזרימה, אילו קבצים/תיקיות יופיעו, וקובצי הגדרה לדוגמה.
מה צריך לדעת מראש
- ידע בסיסי בהקמת שרת Node.js/Python (או שירות ללא שרת, לדוג' Cloud Functions).
- חשבונות API: ספק AI (OpenAI/Anthropic/Google), ספק STT/TTS שתומך בעברית (Google/Azure/IBM וכד').
- הבנת שלוחות ימות: type=api, type=stt_dir_all_file, type=playfile/ play_and_return, type=menu_voice.
תרשים זרימה (בקיצור)
- המתקשר נכנס לשלוחה ייעודית ("שאל את העוזר").
- המערכת מקליטה דיבור → ממירה לטקסט (STT).
- הטקסט נשלח דרך שלוחת API לשרת הביניים.
- השרת פונה למנוע AI ומקבל תשובה טקסטואלית.
- השרת ממיר את התשובה לקובץ שמע (TTS) ומחזיר לימות.
- ימות משמיע למתקשר ומאפשר שאלה נוספת/חזרה לתפריט.
שלוחות מומלצות לבנייה
1) שלוחת כניסה עם זיהוי דיבור (לא חובה)
- type=menu_voice
- שימוש: למי שמעדיף לנתב לפי דיבור ("חשבוניות", "שאל שאלה" וכו').
2) שלוחת הקלטה והמרה לטקסט
- type=stt_dir_all_file
- תפקיד: המאזין מדבר, נוצר קובץ קול ומיד מופק ממנו טקסט.
- טיפ: אפשר להגביל משך הקלטה, לשמור את הקובץ למחקר, או למחוק אוטומטית (GDPR/פרטיות).
3) שלוחת API (הלב)
- type=api
- שלוחה שקוראת ל‑Webhook שלך ומחזירה בחזרה תוצאה (קובץ שמע/טקסט).
- מכאן מתבצעת הפניה ל‑AI + המרת טקסט‑לקול.
4) שלוחת השמעה וחזרה
- type=play_and_return או type=playfile
- מנגנת את תשובת הבוט ומחזירה לשאלה נוספת/תפריט.
הקמה: צעד‑אחר‑צעד (ימות המשיח)
-
צרו תת‑תיקיה לקו ה‑AI (למשל:
AI
). -
ב‑AI/ הגדרות שלוחה:
type=stt_dir_all_file
– המרת דיבור לטקסט.- הגדירו הודעת פתיחה קצרה: "אפשר לשאול שאלה לאחר הצפצוף".
-
לאחר ה‑STT – קבעו "העברה אוטומטית" לשלוחה הבאה:
type=api
– כתובת ה‑Webhook לשרת שלכם (ראה בהמשך).
-
בשלוחת ה‑API הגדירו:
- שיטה:
POST
. - פורמט:
application/x-www-form-urlencoded
אוJSON
(לבחירתכם – להתאים בצד השרת). - שדות שיוצאים: מזהה המתקשר, טקסט מה‑STT, קבצי ההקלטה (קישור/שם קובץ), מזהה שיחה.
- צפו לקבל חזרה: URL/קובץ MP3 לניגון + אינדיקציה אם לחזור לשאלה נוספת.
- שיטה:
-
שלוחת השמעה:
type=play_and_return
– נגן את ה‑MP3 שה‑API החזיר, ואז חזור לשלב 2 לשאלה נוספת, או סיים.
אפשרות חלופית: לדלג על
stt_dir_all_file
ולהשתמש בהקלטה רגילה + שליחת הקובץ ל‑STT בצד השרת.
מבנה קבצים/תיקיות שימושי
AI/Recordings
– הקלטות הגולמיות (אופציונלי).AI/TTS
– תשובות שהומרו לקול (ניקיון אוטומטי אחת ל‑X שעות מומלץ).AI/Logs
– לוגים בסיסיים לאבחון תקלות.
שרת ביניים – שתי דוגמאות מלאות
אופציה A: Python (FastAPI)
from fastapi import FastAPI, Form from fastapi.responses import FileResponse, JSONResponse import os, tempfile, uuid from google.cloud import texttospeech from openai import OpenAI app = FastAPI() openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) tts_client = texttospeech.TextToSpeechClient() @app.post("/ivr") async def ivr( caller_id: str = Form(None), stt_text: str = Form("") ): # 1) שליחה ל‑AI chat = openai_client.chat.completions.create( model="gpt-4o-mini", # לבחירתכם messages=[{"role": "system", "content": "תענה בעברית ברורה וקצרה."}, {"role": "user", "content": stt_text or ""}] ) answer = chat.choices[0].message.content.strip() # 2) המרת טקסט לקול (Google TTS – עברית) synthesis_input = texttospeech.SynthesisInput(text=answer) voice = texttospeech.VoiceSelectionParams(language_code="he-IL") audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3) response = tts_client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config) # 3) שמירת קובץ זמני והחזרה out_path = os.path.join(tempfile.gettempdir(), f"ai_{uuid.uuid4().hex}.mp3") with open(out_path, "wb") as f: f.write(response.audio_content) # החזרה כקובץ או כ‑URL לפי איך שהגדרת בימות return FileResponse(out_path, media_type="audio/mpeg")
אם שלוחת ה‑API דורשת שתחזירו JSON עם כתובת קובץ בענן – העלו ל‑S3/GCS והחזירו JSON:
{"play_url": "https://...mp3", "continue": true}
.אופציה B: Node.js (Express)
import express from "express"; import multer from "multer"; import crypto from "crypto"; import fs from "fs"; import { TextToSpeechClient } from "@google-cloud/text-to-speech"; import OpenAI from "openai"; const app = express(); const upload = multer(); const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const tts = new TextToSpeechClient(); app.post("/ivr", upload.none(), async (req, res) => { const sttText = req.body.stt_text || ""; const chat = await openai.chat.completions.create({ model: "gpt-4o-mini", messages: [ { role: "system", content: "ענה בעברית קצר ולעניין." }, { role: "user", content: sttText } ] }); const answer = chat.choices?.[0]?.message?.content?.trim() || ""; const [audio] = await tts.synthesizeSpeech({ input: { text: answer }, voice: { languageCode: "he-IL" }, audioConfig: { audioEncoding: "MP3" } }); const file = `/tmp/ai_${crypto.randomBytes(6).toString("hex")}.mp3`; fs.writeFileSync(file, audio.audioContent, { encoding: "binary" }); res.type("audio/mpeg").send(fs.readFileSync(file)); }); app.listen(3000);
הגדרות שלוחה לדוגמה (ini)
שלוחת STT (
AI/stt/ivr2.ini
type=stt_dir_all_file max_seconds=30 success_go_to_folder=../api failure_go_to_folder=../error
שלוחת API (
AI/api/ivr2.ini
type=api method=post post_format=form url=https://your-domain.com/ivr timeout_sec=20 on_error_go_to_folder=../error on_success_save_file=../tts/last.mp3 success_go_to_folder=../play
שלוחת השמעה (
AI/play/ivr2.ini
type=play_and_return playfile=../tts/last.mp3 return_folder=../stt return_message=לשאלה נוספת, דבר לאחר הצפצוף.
השמות/הנתיבים דוגמה בלבד – להתאים למבנה הקו שלכם.
אבטחה ויציבות
- חתימת בקשה: השתמשו ב‑
secret
ובדקו Header חתום כדי לוודא שהבקשה הגיעה באמת מימות. - הגבלת קצב: מנעו הצפות (Rate Limit) בשרת.
- Timeouts: הגדירו זמני קצה קצרים והודעות גיבוי.
- ניקוי קבצים: Cron שמוחק קבצי TTS ישנים.
- לוגים: לוג יומי קצר (שאלה→תשובה, ללא מזהים רגישים).
עלויות משוערות (גבוהות‑נמוכות)
- AI (תלוי מודל): אגורות עד שקלים לשיחה.
- STT/TTS: לפי שניות אודיו.
- שרת/אחסון: תלוי ענן. התחילו קטן והגדילו לפי הצורך.
בדיקות לפני עליה לאוויר
- הטמעת הודעות שגיאה אנושיות ("לא שמעתי טוב, נסו שוב").
- בדקו מבטא/דיבור מהיר (כוונו רגישות STT).
- מדדו זמני תגובה – יעד: עד ~3–6 שניות.
- נסו שיחות במקביל (2–10) ובדקו עומסים.
- כתבו ״שאלות דמה״ כדי לוודא שהתשובות קצרות וברורות בטלפון.
פתרון תקלות נפוצות
- קובץ ריק מתנגן – בדקו שמדיה מוחזרת עם
audio/mpeg
ותוכן לא ריק. - שקט ארוך לפני תשובה – קצרו את הטקסט ושקלו TTS מהיר/נמוך‑איכות.
- עברית עילגת – החליפו מנוע TTS/שנו Voice. לעיתים Azure/Google נותנים תוצאה טובה יותר בעברית.
- שגיאות 401/403 – מפתחות API/הרשאות ענן.
- ניתוקים אקראיים – האריכו
timeout_sec
או עשו Pre‑warm לשרת.
שאלות ותשובות (FAQ)
האם אפשר בלי STT של ימות?
כן. אפשר להקליט רגיל, לשלוח לשרת, לבצע STT בענן ואז להמשיך כרגיל.אפשר לשמור הקלטות ללמידה עתידית?
כן, אבל עמדו במדיניות פרטיות. הוסיפו הודעה למשתמש והציעו אפשרות אי‑שמירה.יש תמיכה בשיחה דו‑צדדית רציפה (barge‑in/שידור חי)?
למקסם רציפות – קצרו חלונות הקלטה, והחזירו תשובות קצרות.
טמפלייט "העתק‑הדבק" לפרסום במתמחים טופ
כותרת: מדריך | איך לחבר בינה מלאכותית (ChatGPT/Claude/Gemini) לקו ימות המשיח – צעד‑אחר‑צעד
פתיח:
אספתי מדריך מרוכז למנהלי קווים שרוצים לאפשר למתקשרים לשאול שאלה ולקבל תשובה קולית מ‑AI. יש כאן תרשים זרימה, שלוחות מומלצות, קבצי ini לדוגמה, וקוד שרת מוכן להתחלה (Python/Node). אשמח לתיקונים מהקהילה.
עיקרי השלבים:
- בונים שלוחות:
stt_dir_all_file
→api
→play_and_return
. - מקימים שרת ביניים קטן (Python FastAPI / Node Express).
- מחברים ל‑OpenAI/Anthropic/Google + מנוע TTS עברית (Google/Azure/IBM).
- מחזירים MP3 לימות ומשמיעים למתקשר.
קבצי דוגמה: מצורפים במדריך (ini + קוד).
שאלות/הארות – בתגובות.
בהצלחה! אפשר לשכפל, לשנות ולחלוק חזרה לקהילה.
-
הסמיילים בטעות...
-
פוסט זה נמחק! -
מקווה שעזר..