ربط ONNX Runtime وتشغيل الخبيرين معاً
في هذه المرحلة، اكتملت البنية التحتية الكاملة للمشروع — كلا المحركين يعملان ويُنظَّفان بشكل صحيح.
ما تم إنجازه
vision_engine (ONNX Runtime)
- اكتشاف
libonnxruntime.so.1.21.0موجودة في النظام (/usr/lib/x86_64-linux-gnu/) - تثبيت
libonnxruntime-devللحصول على الـ symlink المطلوب للربط - كتابة
pz_vision_engine_wrapper.cpp— واجهة C فوق ONNX Runtime C API تعرض:pz_vision_init()— تهيئة ORT بـ API version 21pz_ocr_run(bytes, len, buf, buf_size)— تشغيل OCR (stub مؤقت)pz_vision_free()— تحرير الموارد
- حل تعارض API version (header = 30، library = 21)
FFI الكاملة
src/ffi/llama.rsيحتوي الآن على bindings للمحركين معاًOcrExpertيستدعيpz_vision_*عبر unsafe FFI ويُطبّقDropللتنظيف التلقائي
build.rs
يبني الآن ملفي wrapper دفعة واحدة ويربط بـ:
| المكتبة | النوع | المصدر |
|---|---|---|
libllama.a | static | text_engine/build |
libggml*.a | static | text_engine/build |
libonnxruntime.so | dynamic | النظام |
libstdc++ / libgomp | dynamic | النظام |
نتيجة التشغيل النهائية ✅
[llama] ✅ Backend جاهز
[pz_wrapper] تم تحميل النموذج بنجاح ✅
[pz_vision] ✅ ONNX Runtime v1.21 API جاهز
المدير جاهز — 2 خبير مسجل
النتيجة: عاصمة المملكة العربية السعودية هي الرياض. (الخبير: llama-text)
[llama] 🧹 Backend أُفرغ بنجاح
[pz_wrapper] تم تحرير النموذج 🧹
[pz_vision] 🧹 ONNX Runtime أُفرغالبنية الكاملة الحالية
Rust (main)
├── Manager ──► routes Input::Text ──► LlamaExpert
│ └─► pz_llama_complete() [C++]
│ └─► llama.cpp inference
│ └─► Qwen2.5-0.5B GGUF
│
└── Manager ──► routes Input::Image ──► OcrExpert
└─► pz_ocr_run() [C++]
└─► ONNX Runtime v1.21
└─► [نموذج OCR قيد الإضافة]الخطوة التالية
- تنزيل نموذج OCR عربي (ONNX) وتوصيله بـ
pz_ocr_run()