Skip to main content

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
  • קהילת הפיתוח בישראל 🇮🇱

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

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

Metadata

Release files for yemot-ai 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yemot-ai 0.1.1
File Size Uploaded Provenance Actions
yemot_ai-0.1.1.tar.gz 145.8 kB Without provenance Details for yemot_ai-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for yemot-ai 0.1.1
File Interpreter ABI Platform Actions
yemot_ai-0.1.1-py3-none-any.whl Python 3 none any Details for yemot_ai-0.1.1-py3-none-any.whl

Total release size: 161.2 kB

Release files / yemot_ai-0.1.1.tar.gz

Download URL yemot_ai-0.1.1.tar.gz
Size 145.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6a11f1829e85ae4233efb2c6870f95376cde4f63fba846c2e8bdb28a893767e3
BLAKE2b-256 checksum
How to use checksums
f0d7ee0a99b420cc3507197554b978183c4bb84997c3752231d1b0ece3eda4c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Release files / yemot_ai-0.1.1-py3-none-any.whl

Download URL yemot_ai-0.1.1-py3-none-any.whl
Size 15.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f9b7962c1541a7b6526adc04af89680419ee81e0cedc164d279758d99ee9f57
BLAKE2b-256 checksum
How to use checksums
0d3652839bd5ffb0ff0c19f3838fa3967894cbe2905b16389518408e75e2a804
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Security for yemot-ai 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page