Metadata-Version: 2.4
Name: bxlai
Version: 1.0.5
Summary: A small, self-contained Python client for selected OpenRouter models
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.25.0

# bxlai

حزمة Python خفيفة باسم تثبيت `bxlai` واسم استيراد `bxAI`. قائمة النماذج مضمنة في `bxAI.py`؛ لا يوجد اعتماد على `models.json` أو ملفات خارج الـwheel وقت التشغيل.

> **مهم حول FREE:** تعني `FREE` أن كلفة الإدخال والإخراج للنموذج كانت صفراً في كتالوج OpenRouter عند بناء هذا الإصدار. لا تعني وجود API مجهول بلا مصادقة: OpenRouter يتطلب API key لكل طلب. قد تتغير الأسعار أو الإتاحة أو حدود الاستخدام بعد الإصدار.

## التثبيت

```bash
pip install bxlai
```

يتطلب Python 3.9+، ويعمل على Android/Pydroid وTermux وWindows وLinux. الاعتماد التشغيلي الوحيد هو `requests`.

## الاستخدام

```python
from bxAI import *

print(version())
print(model_info(1))
MODLES()

# FREE: لا تمرر المفتاح في الدالة؛ ضعه في متغير البيئة أولاً.
# Linux/macOS/Termux: export BXAI_API_KEY="YOUR_OPENROUTER_KEY"
# Windows PowerShell: $env:BXAI_API_KEY = "YOUR_OPENROUTER_KEY"
print(Ai(1, "Hello"))

# TOKEN: مرر مفتاح OpenRouter الذي تملكه أنت.
print(AiT("YOUR_TOKEN", 25, "Hello"))
```

يمكن استخدام متغير البيئة `OPENROUTER_API_KEY` بديلاً عن `BXAI_API_KEY` في `Ai()`. المفتاح لا يُخزن في المكتبة أو يطبع أو يسجل. لا تضع مفتاحك داخل ملف منشور.

## الدوال

- `Ai(model_number, question)`: للنماذج المصنفة `FREE`؛ يقرأ المفتاح من `BXAI_API_KEY` أو `OPENROUTER_API_KEY`. من دون متغير بيئة يعيد رسالة خطأ واضحة.
- `AiT(token, model_number, question)`: يرسل المفتاح المعطى ويعيد نص الإجابة؛ صُمم للنماذج المصنفة `TOKEN`، ويقبل كذلك نموذجاً مجانياً عند الحاجة إلى تمرير المفتاح مباشرة.
- `MODLES()`: الاسم التاريخي المطلوب كما هو؛ يعرض الصفحات التفاعلية من FREE ثم TOKEN. اضغط Enter للمتابعة أو `q` للخروج. لا تستخدم مكتبات طرفية إضافية.
- `models()`: اسم بديل لـ`MODLES()`.
- `version()`: يعيد `1.0.5`.
- `model_info(number)`: يعيد قاموساً بمعلومات عامة دون كشف المعرّف الحقيقي للنموذج. الرقم غير المعروف يعيد قاموساً يحتوي رسالة خطأ.

تستخدم الطلبات واجهة OpenRouter المتوافقة مع Chat Completions. قد تترتب رسوم على نماذج TOKEN، وتظل الأسعار وسياسات الخصوصية والحدود خاضعة لمزود الخدمة. لا ترسل بيانات حساسة إلى نماذج مجانية أو خدمات لا تثق بها.

## الكتالوج

يتضمن هذا الإصدار 97 معرّفاً من عناصر الملف المرفق التي أمكن مطابقتها مع كتالوج OpenRouter وقت البناء: 9 بسعر صفري و88 ذات تسعير/توجيه يتطلب token. أسماء العرض `BXCode-001` و`BXL-002` وما يليها أسماء مستعارة ثابتة؛ معرفات API الحقيقية داخلية. استُبعدت عناصر لم تكن موجودة في كتالوج OpenRouter أو كانت معلّمة بالتقاعد في تاريخ بناء الإصدار.

الأرقام ثابتة داخل الإصدار؛ لا يُعاد ترتيبها تلقائياً عند التثبيت.

## الأخطاء والتشخيص

تعيد `Ai()` و`AiT()` نص الإجابة، أو رسالة قصيرة تبدأ بـ`[BXAI ERROR]` عند الخطأ (مثل HTTP 401/403/404/429/5xx، timeout، اتصال/DNS، أو JSON غير صالح). لتفعيل تشخيص المطور على `stderr`، اضبط `BXAI_DEBUG=1`. لا تسجل المكتبة الرؤوس أو نص الطلب أو قيمة token.

## بناء وفحص ونشر PyPI

من مجلد المشروع:

```bash
rm -rf build dist *.egg-info
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
python -m zipfile -l dist/bxlai-1.0.5-py3-none-any.whl
python -m twine upload --username __token__ dist/*
```

الأمر الأخير يرفع الملفات إلى PyPI؛ لم يتم تنفيذ رفع من هذا المشروع.
