llmxray 0.4.7 → 0.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.ar.md +301 -0
  2. package/README.fr.md +297 -0
  3. package/README.md +8 -0
  4. package/README.sr.md +297 -0
  5. package/README.zh-CN.md +297 -0
  6. package/dist/assets/{AITrainingPage-CsvXVCl4.js → AITrainingPage-E1g8rBQe.js} +1 -1
  7. package/dist/assets/{AnalyticsPage-vkaPSUTM.js → AnalyticsPage-B-axxCjX.js} +1 -1
  8. package/dist/assets/{BenchmarkPage-D0OBLy2p.js → BenchmarkPage-CMa0Q0wR.js} +1 -1
  9. package/dist/assets/{ComparisonPage-yjlQyMSr.js → ComparisonPage-phs59_G2.js} +1 -1
  10. package/dist/assets/{CostDashboardPage--NlorE5h.js → CostDashboardPage-DmXvNxoW.js} +1 -1
  11. package/dist/assets/{DashboardPage-C7HpWzo0.js → DashboardPage-CFydBLae.js} +1 -1
  12. package/dist/assets/{EmbeddingsPage-BjI-MRAa.js → EmbeddingsPage-Dr4zAK3P.js} +1 -1
  13. package/dist/assets/{FimPlaygroundPage-DFbVhKk_.js → FimPlaygroundPage-DuzUaxaO.js} +1 -1
  14. package/dist/assets/{GoogleCallbackPage-CtnaMbov.js → GoogleCallbackPage-B_wKPxTY.js} +1 -1
  15. package/dist/assets/{JsonTreeNode-D4tXijI2.js → JsonTreeNode-C3GvpFIv.js} +1 -1
  16. package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-Cj2LskB0.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-tkg1H--1.js} +1 -1
  17. package/dist/assets/{ProtocolObservatoryPage-BCBMa4BZ.js → ProtocolObservatoryPage-C5NU7kv4.js} +1 -1
  18. package/dist/assets/{RAGPage-DhajwBAP.js → RAGPage-DGFy-b60.js} +1 -1
  19. package/dist/assets/{SessionPage-D9yVmDvL.js → SessionPage-C4oWNW2u.js} +1 -1
  20. package/dist/assets/{SettingsPage-CMAnCevk.js → SettingsPage-CFSn9lUW.js} +1 -1
  21. package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-n7TTYhNJ.js → StatusBadge.vue_vue_type_script_setup_true_lang-W3vS9xKq.js} +1 -1
  22. package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-BKb4VKNU.js → StorageGauge.vue_vue_type_style_index_0_lang-NsFsiU2e.js} +1 -1
  23. package/dist/assets/{SystemPage-D4Zziyum.js → SystemPage-tBgC5G3-.js} +2 -2
  24. package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-DQpdkass.js → TabBar.vue_vue_type_script_setup_true_lang-DL7akl1T.js} +1 -1
  25. package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-Bkp4Zqzc.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-B2xlTJuS.js} +1 -1
  26. package/dist/assets/{ToolWorkshopPage-Bi-P9pPj.js → ToolWorkshopPage-BAQPeIGP.js} +1 -1
  27. package/dist/assets/{agent-store-uNRCwO3m.js → agent-store-CPoOtsp1.js} +1 -1
  28. package/dist/assets/{canvas-ai-db-vwusn4PB.js → canvas-ai-db-DkGslnpm.js} +1 -1
  29. package/dist/assets/{download-CE6FVTgu.js → download-ChpH3xF_.js} +1 -1
  30. package/dist/assets/{generate-service-CYQ8kwVP.js → generate-service-CzzxTSzU.js} +1 -1
  31. package/dist/assets/{google-auth-store-Dz06BePf.js → google-auth-store-CWJyfJot.js} +1 -1
  32. package/dist/assets/{index-FRDa6LAg.js → index-BkYEc6g3.js} +1 -1
  33. package/dist/assets/{index-Dv-x214f.js → index-BqaWqS5R.js} +1 -1
  34. package/dist/assets/{index-BwnEclbR.js → index-CE4LM5vl.js} +8 -8
  35. package/dist/assets/{info-DnW3KRin.js → info-D5-JTLE0.js} +1 -1
  36. package/dist/assets/{metrics-store-BDn0738m.js → metrics-store--HW_Yktg.js} +1 -1
  37. package/dist/assets/{papaparse.min-DzDO_wBU.js → papaparse.min-B9Ijd5eE.js} +1 -1
  38. package/dist/assets/{pencil-clhQxwX0.js → pencil-CsKrNJEo.js} +1 -1
  39. package/dist/assets/{play-4DIDJWWS.js → play-nicSMl5X.js} +1 -1
  40. package/dist/assets/{rag-store-Do5yRDAH.js → rag-store-CEuRiXlx.js} +3 -3
  41. package/dist/assets/{session-store-DRoQgYmX.js → session-store-Dt5jLOgV.js} +1 -1
  42. package/dist/assets/{share-2-DmfX3XRE.js → share-2-BdqfbjHE.js} +1 -1
  43. package/dist/assets/{square-BSrc21IW.js → square-KUkPfYFT.js} +1 -1
  44. package/dist/assets/{storage-store-BNeLgzhr.js → storage-store-ColSqJM3.js} +1 -1
  45. package/dist/assets/{stream-handler-m2cr76ko.js → stream-handler-DHKXR5XU.js} +1 -1
  46. package/dist/assets/{tool-workshop-store-CvrmwDRz.js → tool-workshop-store-CpWKGa76.js} +1 -1
  47. package/dist/assets/{toolcall-store-EOcmOTQ4.js → toolcall-store-C3ghhPw3.js} +1 -1
  48. package/dist/assets/{trash-2-DghOHCMp.js → trash-2-DnAmbFuB.js} +1 -1
  49. package/dist/index.html +1 -1
  50. package/package.json +89 -89
package/README.ar.md ADDED
@@ -0,0 +1,301 @@
1
+ <div dir="rtl">
2
+
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/LogneBudo/llmxray/master/public/favicon.svg" alt="LLMxRay" width="80" />
5
+ </p>
6
+
7
+ <h1 align="center">LLMxRay</h1>
8
+ <p align="center"><strong>اطّلع على ما يفعله الذكاء الاصطناعي لديك فعلاً.</strong></p>
9
+ <p align="center">
10
+ بث الرموز في الوقت الفعلي، وتحليل الجودة، وتوصيف الأداء، وتتبّع التكاليف<br/>
11
+ للنماذج اللغوية الكبيرة المحلية. بدون سحابة. بدون مفاتيح API. بدون تكلفة.
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="https://www.npmjs.com/package/llmxray"><img src="https://img.shields.io/npm/v/llmxray?color=cb3837&logo=npm&logoColor=white" alt="npm" /></a>
16
+ <a href="https://hub.docker.com/r/djovaneli/llmxray"><img src="https://img.shields.io/docker/pulls/djovaneli/llmxray?color=2496ED&logo=docker&logoColor=white" alt="Docker" /></a>
17
+ <img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="License" />
18
+ <img src="https://img.shields.io/badge/ollama-local-000?logo=ollama&logoColor=white" alt="Ollama" />
19
+ </p>
20
+
21
+ <p align="center">
22
+ 🌐 <a href="README.md">English</a> &bull;
23
+ <a href="README.fr.md">Français</a> &bull;
24
+ <a href="README.zh-CN.md">中文</a> &bull;
25
+ <strong>العربية</strong> &bull;
26
+ <a href="README.sr.md">Srpski</a>
27
+ </p>
28
+
29
+ <p align="center">
30
+ <a href="#البدء-السريع">البدء السريع</a> &bull;
31
+ <a href="#الميزات">الميزات</a> &bull;
32
+ <a href="#لقطات-الشاشة">لقطات الشاشة</a> &bull;
33
+ <a href="#لمن-هذه-الأداة">لمن هذه الأداة</a> &bull;
34
+ <a href="CHANGELOG.md">سجل التغييرات</a>
35
+ </p>
36
+
37
+ <p align="center">
38
+ <img src="docs/public/screenshots/demo.gif" alt="عرض LLMxRay — بث الرموز في الوقت الفعلي مع تلوين الثقة" width="800" />
39
+ </p>
40
+
41
+ ---
42
+
43
+ ## البدء السريع
44
+
45
+ **أمر واحد. ٣٠ ثانية.**
46
+
47
+ ```bash
48
+ npx llmxray
49
+ ```
50
+
51
+ أو باستخدام Docker:
52
+
53
+ ```bash
54
+ docker run -p 5174:5174 djovaneli/llmxray
55
+ ```
56
+
57
+ افتح **http://localhost:5174** وابدأ المحادثة. هذا كل شيء.
58
+
59
+ > **متطلّب مسبق:** [Ollama](https://ollama.com/download) يعمل محلياً مع تنزيل نموذج واحد على الأقل (`ollama pull llama3.2`).
60
+
61
+ ---
62
+
63
+ ## لماذا LLMxRay؟
64
+
65
+ أنت تشغّل نموذجاً لغوياً محلياً. تتحدث معه. لكن ما الذي حدث فعلياً؟
66
+
67
+ - ما سرعة كل رمز؟ وأيها كان النموذج واثقاً منه؟
68
+ - هل تتدهور جودة الاستجابة عبر المحادثات الطويلة؟
69
+ - كم كان سيكلّف هذا لو شغّلته على السحابة؟
70
+ - هل يكرر النموذج نفسه؟ يرفض؟ يولّد كلاماً غير مفهوم؟
71
+ - كيف تختلف درجة الحرارة 0.3 عن 0.9 على *نفس* المطالبة؟
72
+
73
+ **يجيب LLMxRay على كل ذلك، بصرياً، في الوقت الفعلي، مجاناً.**
74
+
75
+ ---
76
+
77
+ ## الميزات
78
+
79
+ ### دردشة لحظية بذكاء على مستوى الرمز
80
+ تحدّث مع أي نموذج Ollama وراقب وصول الرموز مع **تلوين الثقة** — كل رمز يُلوَّن وفق سرعة توليده. يدعم Markdown، والمحادثات متعددة الأدوار، ومرفقات الملفات، ونماذج الرؤية، والأوامر بالشرطة المائلة.
81
+
82
+ ### بوّابات جودة الاستجابة
83
+ كل استجابة تُحلَّل تلقائياً. تظهر شارات ملوّنة فقط حين يحدث خطأ:
84
+ - **التكرار** — عبارات متكرّرة بإفراط (تحليل رباعي الجرامات)
85
+ - **الرفض** — "بوصفي نموذجاً لغوياً" و٧ أنماط أخرى
86
+ - **الكلام غير المفهوم** — نسبة عالية من الرموز غير الـ ASCII
87
+ - **استجابة فارغة** — أقل من ١٠ كلمات
88
+ - **البتر** — بلوغ حدّ الرموز قبل الانتهاء
89
+
90
+ ### طاولة عمل لمقارنة النماذج
91
+ حتى **٤ شرائح** بنموذج ودرجة حرارة وموجّه نظام مستقلّة. تشمل الميزات البث جنباً إلى جنب، وإبراز الفروق على مستوى الكلمة، ومقارنة المقاييس، وقوالب جاهزة بنقرة واحدة (مسح درجات الحرارة، الزوج الحتمي، مقارنة اللغات مع تصوير ضريبة الرموز).
92
+
93
+ ### تحليلات الأداء
94
+ - **النسب المئوية للتأخير** (P50/P95/P99) للمدّة وزمن أول رمز
95
+ - **استخبارات الأخطاء** — مصنّف من ٧ فئات مع خطّ زمني
96
+ - **خريطة حرارية للاستخدام** — شبكة ٧×٢٤ لساعاتك النشطة
97
+ - **أثر الإعدادات** — مخطّطات تشتّت لدرجة الحرارة مقابل الرموز/الثانية
98
+ - تتبّع **البداية الباردة مقابل الدافئة** مع سجلّ تحميل النموذج
99
+
100
+ ### لوحة التكاليف
101
+ استهلاك الرموز لكل نموذج/يوم مع تقدير السعر المكافئ على السحابة. شاهد كم *توفّر* بتشغيلها محلياً.
102
+
103
+ ### معيار جراحي
104
+ اختبر معرفة النموذج بحزم أسئلة متعدّدة الاختيار. يستخدم logprobs حقيقية عبر النقطة المتوافقة مع OpenAI لقياس دقيق للثقة. ابنِ حزماً مخصّصة بصرياً أو دع الذكاء الاصطناعي يولّدها من موضوع.
105
+
106
+ ### مختبر التضمينات وخط أنابيب RAG
107
+ ضمّن النصوص، وصوّر المتجهات، وقِس تشابه جيب التمام. ابنِ قاعدة معرفة محلية من ملفات PDF و DOCX و CSV — مقطَّعة، مضمَّنة، وقابلة للبحث. كل ذلك مخزَّن في IndexedDB. بلا تكلفة.
108
+
109
+ ### ورشة الأدوات (لوحة بصرية)
110
+ لوحة عُقَد بالسحب والإفلات لبناء تعريفات الأدوات. مزامنة كود ثنائية الاتجاه (تحرير العُقَد أو TypeScript — كلاهما يتحدّث). اسبر واجهات API، ولّد المخططات تلقائياً، واختبر بتنفيذ مباشر.
111
+
112
+ ### ساحة الإكمال في الوسط *(جديد في v0.4.7)*
113
+ إكمال الكود لـ Qwen-Coder و CodeLlama و Codestral و DeepSeek-Coder و StarCoder. حقلا نص (بادئة / لاحقة)، والنموذج يملأ الفراغ. يستخدم حقل `suffix` في `/api/generate` من Ollama. معاينة مدمجة تُظهر النتيجة كما ستبدو في محرّرك.
114
+
115
+ ### مرصد البروتوكولات *(جديد في v0.4.7)*
116
+ أطلق نفس المطالبة عبر بروتوكولات Ollama الثلاثة للتقديم — **الأصلي** `/api/chat`، **المتوافق مع OpenAI** `/v1/chat/completions`، و **المتوافق مع Anthropic** `/v1/messages` — بالتوازي ضد نموذجك المحلي. بثّ جنباً إلى جنب، ومقاييس لكل بروتوكول، وعلامة تبويب لفروق الأظرف تُظهر كيف يصوغ كل بروتوكول أسباب الإنهاء وعدّ الرموز وأظرف الأخطاء. بلا سحابة، بلا مفاتيح API — النقاط الثلاث جميعها محلية على `localhost:11434`.
117
+
118
+ ### خط أنابيب تدريب الذكاء الاصطناعي
119
+ نسّق بيانات التدريب من محادثاتك. وسِم، وراجِع، وصدِّر بصيغة JSONL للضبط الدقيق.
120
+
121
+ ### قاعدة بيانات تاريخ الذكاء الاصطناعي المحلية
122
+ تُؤرشَف كل تجربة (معايير، مقارنات، محادثات، أزواج تدريب) تلقائياً في قاعدة بيانات IndexedDB قابلة للاستعلام مع فلاتر واتجاهات وتصدير وسياسات احتفاظ.
123
+
124
+ ### متعدّد اللغات
125
+ ترجمات كاملة بالإنجليزية والفرنسية والصربية (لاتيني + سيريلي) والصينية والعربية. دعم تخطيط RTL. هياكل مجتمعية للعبرية واليابانية.
126
+
127
+ ---
128
+
129
+ ## التوافق مع Ollama
130
+
131
+ تم اختبارها والتحقّق منها مع **Ollama 0.24.0** (أحدث إصدار مستقرّ حالياً في مايو ٢٠٢٦). يستخدم LLMxRay نقاط Ollama التالية:
132
+
133
+ | النقطة | الاستخدام |
134
+ |---|---|
135
+ | `/api/chat` | دردشة متدفّقة (NDJSON، مع `tools` و `think` ومخطّط `format`) |
136
+ | `/api/generate` | التوليد والإكمال في الوسط عبر `suffix` |
137
+ | `/api/tags`، `/api/show` | قائمة النماذج واكتشاف القدرات (`thinking`، `tools`، `vision`) |
138
+ | `/api/embed` | تضمينات متّجهة لـ RAG |
139
+ | `/api/pull`، `/api/delete`، `/api/ps`، `/api/version` | إدارة النماذج وحالتها |
140
+ | `/v1/chat/completions` | مسار متوافق مع OpenAI يستخدمه المعيار الجراحي للحصول على logprobs حقيقية |
141
+ | `/v1/messages` | مسار متوافق مع Anthropic يستخدمه مرصد البروتوكولات |
142
+
143
+ **متوافق مع:** Ollama 0.20 وما بعده (الإصدارات الأقدم تعمل للدردشة/التوليد لكن تفتقر إلى `think` ومخطّط `format` بصيغة JSON Schema). **مُوصى به:** Ollama 0.24+ للحصول على تكافؤ كامل للميزات، بما في ذلك النقطة المتوافقة مع Anthropic (أُضيفت في 0.23) ووضع `think: "max"` (أُضيف في 0.21.3).
144
+
145
+ ---
146
+
147
+ ## لقطات الشاشة
148
+
149
+ <table>
150
+ <tr>
151
+ <td width="50%">
152
+
153
+ **دردشة ببث الرموز ومؤشّر الثقة**
154
+ ![Chat](docs/public/screenshots/chat-diagnostics.png)
155
+
156
+ </td>
157
+ <td width="50%">
158
+
159
+ **مقارنة النماذج — جنباً إلى جنب**
160
+ ![Compare](docs/public/screenshots/compare-sidebyside.png)
161
+
162
+ </td>
163
+ </tr>
164
+ <tr>
165
+ <td width="50%">
166
+
167
+ **تشريح الجلسة — مقاييس وتوقيت**
168
+ ![Session](docs/public/screenshots/session-details.png)
169
+
170
+ </td>
171
+ <td width="50%">
172
+
173
+ **معيار مع رادار الثقة**
174
+ ![Benchmark](docs/public/screenshots/benchmark.png)
175
+
176
+ </td>
177
+ </tr>
178
+ <tr>
179
+ <td width="50%">
180
+
181
+ **التضمينات — تشابه جيب التمام**
182
+ ![Embeddings](docs/public/screenshots/embed-similarity.png)
183
+
184
+ </td>
185
+ <td width="50%">
186
+
187
+ **مراقب النظام — العتاد وحالة Ollama**
188
+ ![System](docs/public/screenshots/my-system.png)
189
+
190
+ </td>
191
+ </tr>
192
+ </table>
193
+
194
+ ---
195
+
196
+ ## لمن هذه الأداة
197
+
198
+ | أنت... | LLMxRay يساعدك على... |
199
+ |---|---|
200
+ | **مطوّر** | تنقيح المطالبات، توصيف التأخير، مقارنة النماذج، فحص استدعاءات الأدوات، تتبّع التكاليف |
201
+ | **باحث** | إجراء تجارب مضبوطة بإعدادات متناسقة عبر النماذج ودرجات الحرارة |
202
+ | **طالب / معلّم** | استكشاف سلوك النموذج بصرياً — حزمة المعلّمين المدمجة بـ ٩ وحدات تفاعلية |
203
+ | **قائد فريق ذكاء اصطناعي** | فهم اتجاهات الجودة وأنماط الأخطاء واستخدام الموارد عبر أسطولك المحلي |
204
+
205
+ ---
206
+
207
+ ## خيارات التثبيت
208
+
209
+ ### npx (مُوصى به)
210
+ ```bash
211
+ npx llmxray
212
+ npx llmxray --port 3000
213
+ npx llmxray --ollama-url http://192.168.1.50:11434
214
+ ```
215
+
216
+ ### Docker
217
+ ```bash
218
+ docker run -p 5174:5174 djovaneli/llmxray
219
+ docker run -p 5174:5174 -e OLLAMA_URL=http://host.docker.internal:11434 djovaneli/llmxray
220
+ ```
221
+
222
+ ### من الكود المصدري
223
+ ```bash
224
+ git clone https://github.com/LogneBudo/llmxray.git
225
+ cd llmxray
226
+ npm install
227
+ npm run dev # http://localhost:5173
228
+ ```
229
+
230
+ ---
231
+
232
+ ## الحزمة التقنية
233
+
234
+ | الطبقة | التقنية |
235
+ |---|---|
236
+ | إطار العمل | Vue 3.5 + Composition API |
237
+ | اللغة | TypeScript 5.9 (وضع صارم) |
238
+ | البناء | Vite 7.3 |
239
+ | التنسيق | Tailwind CSS 4.2 |
240
+ | إدارة الحالة | Pinia 3 (متجر لكل اهتمام) |
241
+ | الرسوم البيانية | Chart.js 4، D3.js 7 |
242
+ | اللوحة | Vue Flow (محرّر عُقَد بصري) |
243
+ | محرّر الكود | CodeMirror 6 |
244
+ | التخزين | IndexedDB (أصلي للمتصفّح) |
245
+ | واجهة LLM الخلفية | Ollama (محلي) |
246
+
247
+ ---
248
+
249
+ ## المعمارية
250
+
251
+ **البثّ** — يقرأ NDJSON من Ollama عبر `fetch()` + `ReadableStream`. تحدّث الرموز الواجهة تفاعلياً عبر متاجر Pinia.
252
+
253
+ **ثقة الرمز** — تُقدَّر من التأخير بين الرموز (الأسرع = الأكثر ثقة). موسومة بوضوح على أنها تقريب. تستخدم المعايير logprobs حقيقية عبر النقطة المتوافقة مع OpenAI.
254
+
255
+ **متجر لكل اهتمام** — لكل مجال متجر Pinia خاص به: tokens و sessions و metrics و reasoning و comparison و embeddings و quality و cost وغيرها.
256
+
257
+ **اكتشاف العتاد** — مكوّن Vite مخصّص يستعلم نظام التشغيل مباشرة (PowerShell/proc/sysctl) للحصول على مواصفات دقيقة للعتاد.
258
+
259
+ ---
260
+
261
+ ## التطوير
262
+
263
+ | الأمر | ما يفعله |
264
+ |---|---|
265
+ | `npm run dev` | خادم تطوير (المنفذ 5173) |
266
+ | `npm run build` | فحص الأنواع + بناء الإنتاج |
267
+ | `npm run test` | اختبارات وحدة (Vitest) |
268
+ | `npm run test:e2e` | اختبارات شاملة (Playwright) |
269
+
270
+ ---
271
+
272
+ ## المساهمة
273
+
274
+ المساهمات مرحَّب بها! راجِع [CONTRIBUTING.md](CONTRIBUTING.md) للإعداد والإرشادات.
275
+
276
+ **ترجمات المجتمع مرحَّب بها بصفة خاصّة** — ملفات الهياكل جاهزة للعبرية واليابانية.
277
+
278
+ ---
279
+
280
+ ## الرخصة
281
+
282
+ [Apache License 2.0](LICENSE)
283
+
284
+ ## العلامة التجارية
285
+
286
+ **LLMxRay** علامة تجارية لـ Ivan Stankovic ([LogneBudo](https://github.com/LogneBudo)). راجِع [TRADEMARK.md](TRADEMARK.md).
287
+
288
+ ---
289
+
290
+ <p align="center">
291
+ <strong>إن ساعدك LLMxRay على فهم ذكائك الاصطناعي بشكل أفضل، فكّر في منح المشروع نجمة.</strong><br/>
292
+ هذا يساعد آخرين على اكتشاف المشروع.
293
+ </p>
294
+
295
+ <p align="center">
296
+ <a href="https://github.com/LogneBudo/llmxray">
297
+ <img src="https://img.shields.io/github/stars/LogneBudo/llmxray?style=social" alt="GitHub stars" />
298
+ </a>
299
+ </p>
300
+
301
+ </div>
package/README.fr.md ADDED
@@ -0,0 +1,297 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/LogneBudo/llmxray/master/public/favicon.svg" alt="LLMxRay" width="80" />
3
+ </p>
4
+
5
+ <h1 align="center">LLMxRay</h1>
6
+ <p align="center"><strong>Voyez ce que votre IA fait réellement.</strong></p>
7
+ <p align="center">
8
+ Streaming de tokens en temps réel, analyse de qualité, profilage des performances et suivi des coûts<br/>
9
+ pour les LLM locaux. Pas de cloud. Pas de clés API. Pas de coût.
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/llmxray"><img src="https://img.shields.io/npm/v/llmxray?color=cb3837&logo=npm&logoColor=white" alt="npm" /></a>
14
+ <a href="https://hub.docker.com/r/djovaneli/llmxray"><img src="https://img.shields.io/docker/pulls/djovaneli/llmxray?color=2496ED&logo=docker&logoColor=white" alt="Docker" /></a>
15
+ <img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="License" />
16
+ <img src="https://img.shields.io/badge/ollama-local-000?logo=ollama&logoColor=white" alt="Ollama" />
17
+ </p>
18
+
19
+ <p align="center">
20
+ 🌐 <a href="README.md">English</a> &bull;
21
+ <strong>Français</strong> &bull;
22
+ <a href="README.zh-CN.md">中文</a> &bull;
23
+ <a href="README.ar.md">العربية</a> &bull;
24
+ <a href="README.sr.md">Srpski</a>
25
+ </p>
26
+
27
+ <p align="center">
28
+ <a href="#démarrage-rapide">Démarrage rapide</a> &bull;
29
+ <a href="#fonctionnalités">Fonctionnalités</a> &bull;
30
+ <a href="#captures-décran">Captures d'écran</a> &bull;
31
+ <a href="#à-qui-ça-sadresse">À qui ça s'adresse</a> &bull;
32
+ <a href="CHANGELOG.md">Changelog</a>
33
+ </p>
34
+
35
+ <p align="center">
36
+ <img src="docs/public/screenshots/demo.gif" alt="Démo LLMxRay — streaming de tokens en temps réel avec coloration selon la confiance" width="800" />
37
+ </p>
38
+
39
+ ---
40
+
41
+ ## Démarrage rapide
42
+
43
+ **Une commande. 30 secondes.**
44
+
45
+ ```bash
46
+ npx llmxray
47
+ ```
48
+
49
+ Ou avec Docker :
50
+
51
+ ```bash
52
+ docker run -p 5174:5174 djovaneli/llmxray
53
+ ```
54
+
55
+ Ouvrez **http://localhost:5174** et commencez à discuter. C'est tout.
56
+
57
+ > **Prérequis :** [Ollama](https://ollama.com/download) lancé localement avec au moins un modèle téléchargé (`ollama pull llama3.2`).
58
+
59
+ ---
60
+
61
+ ## Pourquoi LLMxRay ?
62
+
63
+ Vous lancez un LLM local. Vous discutez avec lui. Mais que s'est-il réellement passé ?
64
+
65
+ - À quelle vitesse chaque token a-t-il été généré ? Pour lesquels le modèle était-il confiant ?
66
+ - La qualité des réponses se dégrade-t-elle au fil des longues conversations ?
67
+ - Combien ça aurait coûté en cloud ?
68
+ - Le modèle se répète-t-il ? Refuse-t-il ? Génère-t-il du charabia ?
69
+ - Comment la température 0,3 se compare-t-elle à 0,9 sur *le même* prompt ?
70
+
71
+ **LLMxRay répond à tout ça, visuellement, en temps réel, gratuitement.**
72
+
73
+ ---
74
+
75
+ ## Fonctionnalités
76
+
77
+ ### Chat en temps réel avec intelligence par token
78
+ Discutez avec n'importe quel modèle Ollama et observez les tokens arriver avec une **coloration selon la confiance** — chaque token est teinté selon sa vitesse de génération. Supporte Markdown, conversations multi-tours, pièces jointes, modèles vision et commandes slash.
79
+
80
+ ### Filtres qualité des réponses
81
+ Chaque réponse est analysée automatiquement. Des badges colorés n'apparaissent que lorsqu'il y a un problème :
82
+ - **Répétition** — phrases répétées excessivement (analyse 4-gram)
83
+ - **Refus** — "en tant que modèle de langage" et 7 autres motifs
84
+ - **Charabia** — taux élevé de caractères non-ASCII
85
+ - **Vide** — moins de 10 mots
86
+ - **Tronqué** — limite de tokens atteinte sans conclusion
87
+
88
+ ### Atelier de comparaison de modèles
89
+ Jusqu'à **4 emplacements** avec modèle, température et prompt système indépendants. Streaming côte à côte, surlignage des différences au niveau du mot, comparaison de métriques, et préréglages en un clic (Balayage de température, Paire déterministe, Comparaison de langues avec visualisation de la taxe sur les tokens).
90
+
91
+ ### Analytiques de performance
92
+ - **Percentiles de latence** (P50/P95/P99) pour la durée et le TTFT
93
+ - **Intelligence des erreurs** — classificateur en 7 catégories avec timeline
94
+ - **Heatmap d'utilisation** — grille 7×24 de vos heures actives
95
+ - **Impact des paramètres** — nuages de points température vs tokens/sec
96
+ - Suivi **démarrage à froid vs à chaud** avec historique de chargement des modèles
97
+
98
+ ### Tableau de bord des coûts
99
+ Consommation de tokens par modèle/jour avec estimation du prix équivalent en cloud. Voyez ce que vous *économisez* en restant local.
100
+
101
+ ### Benchmark chirurgical
102
+ Testez les connaissances d'un modèle avec des suites de questions à choix multiples. Utilise les vrais logprobs via l'endpoint compatible OpenAI pour une mesure précise de la confiance. Créez des suites personnalisées visuellement ou laissez l'IA les générer à partir d'un sujet.
103
+
104
+ ### Laboratoire d'embeddings et pipeline RAG
105
+ Embeddez du texte, visualisez les vecteurs, mesurez la similarité cosinus. Construisez une base de connaissances locale à partir de PDF, DOCX et CSV — découpée, embeddée, recherchable. Stockée dans IndexedDB. Coût zéro.
106
+
107
+ ### Atelier d'outils (canvas visuel)
108
+ Canvas à nœuds en drag-and-drop pour construire des définitions d'outils. Synchronisation bidirectionnelle du code (modifiez les nœuds ou le TypeScript — les deux se mettent à jour). Sondez des APIs, générez des schémas automatiquement, testez avec exécution en direct.
109
+
110
+ ### Aire de jeu Fill-in-the-Middle *(nouveau en v0.4.7)*
111
+ Complétion de code pour Qwen-Coder, CodeLlama, Codestral, DeepSeek-Coder et StarCoder. Deux zones de texte (préfixe / suffixe), le modèle remplit le trou. Utilise le champ `suffix` d'Ollama sur `/api/generate`. L'aperçu assemblé montre le résultat tel qu'il apparaîtrait dans votre éditeur.
112
+
113
+ ### Observatoire de protocoles *(nouveau en v0.4.7)*
114
+ Envoyez le même prompt à travers les trois protocoles de service d'Ollama — **natif** `/api/chat`, **compatible OpenAI** `/v1/chat/completions`, et **compatible Anthropic** `/v1/messages` — en parallèle contre votre modèle local. Streaming côte à côte, métriques par protocole, et onglet « envelope diff » qui montre comment chaque protocole encode les raisons de fin, le comptage de tokens et les enveloppes d'erreur. Pas de cloud, pas de clés API — les trois endpoints sont locaux sur `localhost:11434`.
115
+
116
+ ### Pipeline d'entraînement IA
117
+ Préparez des données d'entraînement à partir de vos conversations. Étiquetez, révisez et exportez en JSONL pour le fine-tuning.
118
+
119
+ ### Base de données d'historique IA locale
120
+ Chaque expérience (benchmarks, comparaisons, chats, paires d'entraînement) est archivée automatiquement dans une base IndexedDB requêtable avec filtres, tendances, exports et politiques de rétention.
121
+
122
+ ### Multilingue
123
+ Traductions complètes en anglais, français, serbe (latin + cyrillique), chinois et arabe. Support du layout RTL. Scaffolds communautaires pour l'hébreu et le japonais.
124
+
125
+ ---
126
+
127
+ ## Compatibilité Ollama
128
+
129
+ Testé et vérifié avec **Ollama 0.24.0** (la version stable la plus récente en mai 2026). LLMxRay utilise les endpoints Ollama suivants :
130
+
131
+ | Endpoint | Utilisation |
132
+ |---|---|
133
+ | `/api/chat` | Chat streaming (NDJSON, avec `tools`, `think`, schema `format`) |
134
+ | `/api/generate` | Génération + Fill-in-the-Middle via `suffix` |
135
+ | `/api/tags`, `/api/show` | Liste des modèles + détection des capacités (`thinking`, `tools`, `vision`) |
136
+ | `/api/embed` | Embeddings vectoriels pour RAG |
137
+ | `/api/pull`, `/api/delete`, `/api/ps`, `/api/version` | Gestion et statut des modèles |
138
+ | `/v1/chat/completions` | Chemin compatible OpenAI utilisé par le Benchmark chirurgical pour les vrais logprobs |
139
+ | `/v1/messages` | Chemin compatible Anthropic utilisé par l'Observatoire de protocoles |
140
+
141
+ **Compatible avec :** Ollama 0.20 et plus récent (les versions antérieures fonctionnent pour chat/generate mais sans `think` ni `format` JSON-schema). **Recommandé :** Ollama 0.24+ pour une parité fonctionnelle complète, y compris l'endpoint compatible Anthropic (ajouté en 0.23) et le mode `think: "max"` (ajouté en 0.21.3).
142
+
143
+ ---
144
+
145
+ ## Captures d'écran
146
+
147
+ <table>
148
+ <tr>
149
+ <td width="50%">
150
+
151
+ **Chat avec streaming de tokens et confiance**
152
+ ![Chat](docs/public/screenshots/chat-diagnostics.png)
153
+
154
+ </td>
155
+ <td width="50%">
156
+
157
+ **Comparaison de modèles — côte à côte**
158
+ ![Compare](docs/public/screenshots/compare-sidebyside.png)
159
+
160
+ </td>
161
+ </tr>
162
+ <tr>
163
+ <td width="50%">
164
+
165
+ **Analyse approfondie d'une session — métriques et timing**
166
+ ![Session](docs/public/screenshots/session-details.png)
167
+
168
+ </td>
169
+ <td width="50%">
170
+
171
+ **Benchmark avec radar de confiance**
172
+ ![Benchmark](docs/public/screenshots/benchmark.png)
173
+
174
+ </td>
175
+ </tr>
176
+ <tr>
177
+ <td width="50%">
178
+
179
+ **Embeddings — similarité cosinus**
180
+ ![Embeddings](docs/public/screenshots/embed-similarity.png)
181
+
182
+ </td>
183
+ <td width="50%">
184
+
185
+ **Moniteur système — matériel et statut Ollama**
186
+ ![System](docs/public/screenshots/my-system.png)
187
+
188
+ </td>
189
+ </tr>
190
+ </table>
191
+
192
+ ---
193
+
194
+ ## À qui ça s'adresse
195
+
196
+ | Vous êtes... | LLMxRay vous aide à... |
197
+ |---|---|
198
+ | **Développeur** | Déboguer des prompts, profiler la latence, comparer des modèles, inspecter des appels d'outils, suivre les coûts |
199
+ | **Chercheur** | Mener des expériences contrôlées avec des paramètres cohérents entre modèles et températures |
200
+ | **Étudiant / Enseignant** | Explorer le comportement des modèles visuellement — Kit Éducateurs intégré avec 9 modules interactifs |
201
+ | **Responsable d'équipe IA** | Comprendre les tendances de qualité, les motifs d'erreurs et l'utilisation des ressources sur votre parc local |
202
+
203
+ ---
204
+
205
+ ## Options d'installation
206
+
207
+ ### npx (recommandé)
208
+ ```bash
209
+ npx llmxray
210
+ npx llmxray --port 3000
211
+ npx llmxray --ollama-url http://192.168.1.50:11434
212
+ ```
213
+
214
+ ### Docker
215
+ ```bash
216
+ docker run -p 5174:5174 djovaneli/llmxray
217
+ docker run -p 5174:5174 -e OLLAMA_URL=http://host.docker.internal:11434 djovaneli/llmxray
218
+ ```
219
+
220
+ ### Depuis les sources
221
+ ```bash
222
+ git clone https://github.com/LogneBudo/llmxray.git
223
+ cd llmxray
224
+ npm install
225
+ npm run dev # http://localhost:5173
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Stack technique
231
+
232
+ | Couche | Technologie |
233
+ |---|---|
234
+ | Framework | Vue 3.5 + Composition API |
235
+ | Langage | TypeScript 5.9 (strict) |
236
+ | Build | Vite 7.3 |
237
+ | Style | Tailwind CSS 4.2 |
238
+ | État | Pinia 3 (store par domaine) |
239
+ | Graphiques | Chart.js 4, D3.js 7 |
240
+ | Canvas | Vue Flow (éditeur de nœuds visuel) |
241
+ | Éditeur de code | CodeMirror 6 |
242
+ | Stockage | IndexedDB (natif au navigateur) |
243
+ | Backend LLM | Ollama (local) |
244
+
245
+ ---
246
+
247
+ ## Architecture
248
+
249
+ **Streaming** — Lit le NDJSON d'Ollama via `fetch()` + `ReadableStream`. Les tokens mettent à jour l'UI de manière réactive à travers les stores Pinia.
250
+
251
+ **Confiance des tokens** — Approximée à partir de la latence inter-tokens (plus rapide = plus confiant). Clairement étiquetée comme approximation. Les benchmarks utilisent les vrais logprobs via l'endpoint compatible OpenAI.
252
+
253
+ **Store par domaine** — Chaque domaine a son propre store Pinia : tokens, sessions, métriques, raisonnement, comparaison, embeddings, qualité, coût et plus.
254
+
255
+ **Détection matérielle** — Plugin Vite personnalisé qui interroge l'OS directement (PowerShell/proc/sysctl) pour des spécifications matérielles précises.
256
+
257
+ ---
258
+
259
+ ## Développement
260
+
261
+ | Commande | Ce qu'elle fait |
262
+ |---|---|
263
+ | `npm run dev` | Serveur de dev (port 5173) |
264
+ | `npm run build` | Vérification de types + build de production |
265
+ | `npm run test` | Tests unitaires (Vitest) |
266
+ | `npm run test:e2e` | End-to-end (Playwright) |
267
+
268
+ ---
269
+
270
+ ## Contribuer
271
+
272
+ Les contributions sont les bienvenues ! Voir [CONTRIBUTING.md](CONTRIBUTING.md) pour la configuration et les directives.
273
+
274
+ **Les traductions communautaires sont particulièrement bienvenues** — fichiers scaffolds prêts pour l'hébreu et le japonais.
275
+
276
+ ---
277
+
278
+ ## Licence
279
+
280
+ [Apache License 2.0](LICENSE)
281
+
282
+ ## Marque
283
+
284
+ **LLMxRay** est une marque d'Ivan Stankovic ([LogneBudo](https://github.com/LogneBudo)). Voir [TRADEMARK.md](TRADEMARK.md).
285
+
286
+ ---
287
+
288
+ <p align="center">
289
+ <strong>Si LLMxRay vous aide à mieux comprendre votre IA, pensez à lui donner une étoile.</strong><br/>
290
+ Ça aide d'autres personnes à découvrir le projet.
291
+ </p>
292
+
293
+ <p align="center">
294
+ <a href="https://github.com/LogneBudo/llmxray">
295
+ <img src="https://img.shields.io/github/stars/LogneBudo/llmxray?style=social" alt="GitHub stars" />
296
+ </a>
297
+ </p>
package/README.md CHANGED
@@ -16,6 +16,14 @@
16
16
  <img src="https://img.shields.io/badge/ollama-local-000?logo=ollama&logoColor=white" alt="Ollama" />
17
17
  </p>
18
18
 
19
+ <p align="center">
20
+ 🌐 <strong>English</strong> &bull;
21
+ <a href="README.fr.md">Français</a> &bull;
22
+ <a href="README.zh-CN.md">中文</a> &bull;
23
+ <a href="README.ar.md">العربية</a> &bull;
24
+ <a href="README.sr.md">Srpski</a>
25
+ </p>
26
+
19
27
  <p align="center">
20
28
  <a href="#quick-start">Quick Start</a> &bull;
21
29
  <a href="#features">Features</a> &bull;