Skip to main content

חבילת Python לחיבור סוכני AI למערכות ימות המשיח

Project description

yemot-ai 🤖📞

חבילת Python לחיבור סוכני AI למערכות ימות המשיח

Python Version License Build Status

חבילת yemot-ai מספקת שכבת אינטגרציה פשוטה וחזקה בין מערכות IVR של ימות המשיח לבין סוכני AI מתקדמים. החבילה בנויה כעטיפה מעל yemot-flow ומאפשרת ליצור בקלות מערכות טלפוניות חכמות עם שיחות AI רציפות.

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

  • 🔄 ניהול סשנים אוטומטי - שמירת הקשר השיחה ללא טיפול ידני
  • 🎯 תמיכה במספר ספקי AI - Codex CLI, OpenAI API, ועוד
  • 💾 אחסון גמיש - זיכרון, JSON מקומי, או Redis
  • 🛡️ טיפול חכם בשגיאות - הודעות ידידותיות למשתמש
  • 🔧 ממשק פשוט - מתודה אחת לכל הפעולות
  • 📱 מספר שיחות במקביל - תמיכה מלאה בריבוי משתמשים
  • 🧪 ספק מדומה לבדיקות - MockAI לפיתוח ללא תלויות חיצוניות

🚀 התקנה מהירה

pip install yemot-ai

או להתקנה עם תלויות פיתוח:

pip install yemot-ai[dev]

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

בסיסי

  • Python 3.8+
  • yemot-flow (מותקן אוטומטית)

לשימוש עם Codex CLI

# התקנת Codex CLI (לפי ההוראות של OpenAI)
# ודאו שהפקודה 'codex' זמינה ב-PATH

לשימוש עם OpenAI API

pip install openai

לאחסון ב-Redis

pip install redis

🎯 שימוש בסיסי

דוגמה מהירה

from flask import Flask, request, Response
from yemot_flow import Flow
from yemot_ai import YemotAI, handle_yemot_hangup

app = Flask(__name__)
flow = Flow()

# יצירת מנהל AI
ai = YemotAI.create_codex_ai()  # או create_mock_ai() לבדיקות

@flow.get("ai_chat")
def ai_conversation(call):
    call_id = call.params.get("ApiCallId")
    user_text = call.params.get("RecordingText")
    
    if not user_text:
        call.play_message([("text", "דבר אחרי הצפצוף")])
        call.record(max_seconds=10, silence_timeout=3)
        return
    
    # קבלת תשובה מ-AI (ניהול סשן אוטומטי!)
    ai_response = ai.reply(call_id, user_text)
    
    # השמעת התשובה
    call.play_message([("text", ai_response)])
    call.record(max_seconds=10, silence_timeout=3)

@app.route("/yemot", methods=["POST"])
def yemot_handler():
    params = request.values.to_dict()
    xml = flow.handle_request(params)
    
    # ניקוי סשנים אוטומטי בסיום שיחה
    handle_yemot_hangup(ai, params)
    
    return Response(xml, mimetype="text/xml")

if __name__ == "__main__":
    app.run(debug=True)

זהו! עם הקוד הזה יש לך מערכת IVR חכמה ופועלת עם AI.

🔧 תצורות מתקדמות

בחירת ספק AI

# Codex CLI (ברירת מחדל)
ai = YemotAI.create_codex_ai()

# OpenAI API
ai = YemotAI.create_openai_ai(
    api_key="your-openai-api-key",
    model="gpt-4"
)

# ספק מדומה לבדיקות
ai = YemotAI.create_mock_ai(responses=[
    "שלום! איך אפשר לעזור?",
    "מעניין, ספר לי עוד.",
    "אני מבין את השאלה שלך."
])

בחירת אחסון סשנים

from yemot_ai import MemorySessionStore, JSONSessionStore

# אחסון בזיכרון (ברירת מחדל)
ai = YemotAI.create_codex_ai(
    session_store=MemorySessionStore()
)

# אחסון בקובץ JSON (נשמר בין הפעלות)
ai = YemotAI.create_codex_ai(
    session_store=JSONSessionStore("my_sessions.json")
)

# אחסון ב-Redis (מבוזר)
from yemot_ai.session_store import RedisSessionStore
ai = YemotAI.create_codex_ai(
    session_store=RedisSessionStore()
)

יצירה מותאמת אישית

from yemot_ai import YemotAI

# יצירה עם פרמטרים מותאמים
ai = YemotAI(
    provider_type="openai",
    api_key="your-key",
    model="gpt-4",
    session_store=JSONSessionStore("sessions.json")
)

# או עם ספק מותאם אישית
from yemot_ai.providers import MockAIProvider
custom_provider = MockAIProvider(session_store, custom_responses)
ai = YemotAI(provider=custom_provider)

📖 מדריך מפורט

ניהול שיחות

ai = YemotAI.create_mock_ai()
call_id = "unique_call_id_from_yemot"

# התחלת שיחה או המשכה (אוטומטי)
response = ai.reply(call_id, "שלום, איך אתה?")
print(response)  # "שלום! איך אפשר לעזור?"

# המשך השיחה (השמירת הקשר אוטומטית)
response = ai.reply(call_id, "יש לי שאלה על Python")
print(response)  # "מעניין, ספר לי עוד."

# בדיקת מצב שיחה
if ai.has_active_conversation(call_id):
    print("השיחה פעילה")

# סיום מפורש (אופציונלי - קורה אוטומטית בניתוק)
ai.end_conversation(call_id)

טיפול בשגיאות

try:
    response = ai.reply(call_id, user_text)
    call.play_message([("text", response)])
except ValueError as e:
    # שגיאה בפרמטרים
    call.play_message([("text", "שגיאה בקלט")])
except RuntimeError as e:
    # שגיאה בתקשורת עם AI
    call.play_message([("text", "בעיה זמנית, נסה שוב")])

מידע ומעקב

# מידע על סשן
info = ai.get_session_info(call_id)
print(f"ספק: {info['provider_type']}")
print(f"פעיל: {info['has_active_session']}")

# ניקוי כל הסשנים (תחזוקה)
ai.clear_all_sessions()

# הצגת סשנים פעילים (אם נתמך)
if hasattr(ai.session_store, 'get_all_sessions'):
    sessions = ai.session_store.get_all_sessions()
    print(f"סשנים פעילים: {len(sessions)}")

🌟 דוגמאות מתקדמות

ראה קבצים בתיקיית examples/:

הרצת דוגמה

# מהתיקיה הראשית של הפרויקט
cd examples
python simple_demo.py

# עם Flask (דורש yemot-flow)
python flask_basic.py

🧪 הרצת טסטים

# התקנת תלויות בדיקה
pip install pytest pytest-cov

# הרצת כל הטסטים
pytest

# הרצה עם כיסוי
pytest --cov=yemot_ai

# הרצת טסט ספציפי
pytest tests/test_core.py::TestYemotAI::test_reply_basic

📚 תיעוד API

מחלקה ראשית: YemotAI

מתודות יצירה

# יצירה כללית
YemotAI(provider_type="codex", **kwargs)

# יצירה מהירה
YemotAI.create_codex_ai(cli_command="codex", session_store=None)
YemotAI.create_openai_ai(api_key, model="gpt-3.5-turbo", session_store=None) 
YemotAI.create_mock_ai(responses=None, session_store=None)

מתודות עיקריות

מתודה תיאור פרמטרים החזרה
reply(call_id, user_text) שליחת הודעה וקבלת תשובה call_id: str, user_text: str str
has_active_conversation(call_id) בדיקת מצב שיחה call_id: str bool
end_conversation(call_id) סיום שיחה call_id: str None
get_session_info(call_id) מידע על סשן call_id: str Dict
clear_all_sessions() ניקוי כל הסשנים - None

ספקי AI זמינים

ספק מחלקה תיאור דרישות
codex CodexCLIProvider Codex CLI של OpenAI Codex CLI מותקן
openai OpenAIProvider OpenAI API pip install openai
mock MockAIProvider ספק מדומה לבדיקות אין

סוגי אחסון

סוג מחלקה תיאור מתאים ל
memory MemorySessionStore זיכרון בלבד פיתוח, שרת יחיד
json JSONSessionStore קובץ JSON מקומי פיתוח, השרדות נתונים
redis RedisSessionStore Redis DB פרודקשן, מבוזר

⚙️ הגדרות סביבה

# עבור OpenAI
export OPENAI_API_KEY="your-api-key"

# עבור Redis
export REDIS_URL="redis://localhost:6379/0"

# הגדרות כלליות
export AI_PROVIDER="codex"          # codex, openai, mock
export SESSION_STORE_TYPE="json"    # memory, json, redis
export SESSION_FILE_PATH="sessions.json"
export FLOW_TIMEOUT="60000"

🚀 פריסה לפרודקשן

הגדרות מומלצות

import os
from yemot_ai import YemotAI, JSONSessionStore

# הגדרות מסביבת המערכת
ai_provider = os.getenv("AI_PROVIDER", "codex")
store_type = os.getenv("SESSION_STORE_TYPE", "json")

if store_type == "redis":
    from yemot_ai.session_store import RedisSessionStore
    session_store = RedisSessionStore()
else:
    session_store = JSONSessionStore(
        os.getenv("SESSION_FILE_PATH", "sessions.json")
    )

if ai_provider == "openai":
    ai = YemotAI.create_openai_ai(
        api_key=os.getenv("OPENAI_API_KEY"),
        session_store=session_store
    )
else:
    ai = YemotAI.create_codex_ai(session_store=session_store)

ביצועים

  • זיכרון: מהיר ביותר, אבל לא מבוזר
  • JSON: טוב לשרת יחיד עם השרדות
  • Redis: מומלץ למספר workers או שרתים

אבטחה

  • 🔐 הגן על מפתחות API (משתני סביבה)
  • 🛡️ הגבל גישה לendpoints ניהול (/admin/*)
  • ⏰ הגדר timeout מתאים לסביבת הפרודקשן
  • 📝 הפעל לוגים מתאימים

🤝 תרומה לפרויקט

אנו מזמינים אתכם לתרום לפרויקט!

הגדרת סביבת פיתוח

# שכפול הפרויקט
git clone https://github.com/your-username/yemot-ai.git
cd yemot-ai

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

# התקנת תלויות פיתוח
pip install -e ".[dev]"

# הרצת טסטים
pytest

# בדיקת קוד
black yemot_ai/
flake8 yemot_ai/

הוספת ספק AI חדש

  1. צור מחלקה חדשה שיורשת מ-AIProvider
  2. מימש את המתודות start_session ו-continue_session
  3. הוסף לבחירה ב-YemotAI._create_provider
  4. כתוב טסטים ב-tests/

🐛 דיווח על בעיות

נתקלת בבעיה? אנא פתח issue עם:

  • תיאור הבעיה
  • קוד לשחזור
  • הודעת השגיאה המלאה
  • גירסת Python וגירסאות החבילות

🔄 מה חדש

גירסה 0.1.0

  • 🎉 גירסה ראשונית
  • ✅ תמיכה ב-Codex CLI
  • ✅ תמיכה ב-OpenAI API
  • ✅ ספק מדומה לבדיקות
  • ✅ שלושה סוגי אחסון
  • ✅ אינטגרציה עם yemot-flow
  • ✅ טסטים מקיפים

📜 רישיון

פרויקט זה מופץ תחת רישיון MIT. ראה קובץ LICENSE לפרטים.

🙏 תודות

  • צוות ימות המשיח על הפלטפורמה המעולה
  • מפתחי yemot-flow על הספרייה הנהדרת
  • OpenAI על Codex ו-GPT
  • קהילת הפיתוח בישראל 🇮🇱

עשה בישראל 🇮🇱 עם ❤️ לקהילה

🌟 תן כוכב לפרויקט | 📚 תיעוד מלא | 💬 דיונים

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yemot_ai-0.1.1.tar.gz (145.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yemot_ai-0.1.1-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file yemot_ai-0.1.1.tar.gz.

File metadata

  • Download URL: yemot_ai-0.1.1.tar.gz
  • Upload date:
  • Size: 145.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.13

File hashes

Hashes for yemot_ai-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6a11f1829e85ae4233efb2c6870f95376cde4f63fba846c2e8bdb28a893767e3
MD5 f7d38200a5e5d42497f9809fd4425942
BLAKE2b-256 f0d7ee0a99b420cc3507197554b978183c4bb84997c3752231d1b0ece3eda4c5

See more details on using hashes here.

File details

Details for the file yemot_ai-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: yemot_ai-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.13

File hashes

Hashes for yemot_ai-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f9b7962c1541a7b6526adc04af89680419ee81e0cedc164d279758d99ee9f57
MD5 8ba933a9308a76c8ff6c7b16b54f38e5
BLAKE2b-256 0d3652839bd5ffb0ff0c19f3838fa3967894cbe2905b16389518408e75e2a804

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page