File size: 126,464 Bytes
6ee8535
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>API Testing Report</title>
        <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
        <style>

            body {

                font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;

                line-height: 1.6;

                margin: 0;

                padding: 0;

                background-color: #f5f5f5;

            }

            .container {

                max-width: 1200px;

                margin: 0 auto;

                padding: 20px;

            }

            .header {

                background-color: #37536d;

                color: white;

                padding: 20px;

                margin-bottom: 30px;

                border-radius: 8px;

            }

            .stats-grid {

                display: grid;

                grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));

                gap: 20px;

                margin-bottom: 30px;

            }

            .stat-card {

                background: white;

                padding: 20px;

                border-radius: 8px;

                box-shadow: 0 2px 4px rgba(0,0,0,0.1);

            }

            .plot-container {

                background: white;

                padding: 20px;

                margin-bottom: 30px;

                border-radius: 8px;

                box-shadow: 0 2px 4px rgba(0,0,0,0.1);

            }

            .table-container {

                background: white;

                padding: 20px;

                margin-bottom: 30px;

                border-radius: 8px;

                box-shadow: 0 2px 4px rgba(0,0,0,0.1);

                overflow-x: auto;

            }

            table {

                width: 100%;

                border-collapse: collapse;

                margin-top: 10px;

            }

            th, td {

                padding: 12px;

                text-align: left;

                border-bottom: 1px solid #ddd;

            }

            th {

                background-color: #37536d;

                color: white;

            }

            tr:nth-child(even) {

                background-color: #f9f9f9;

            }

            .success-badge {

                background-color: #4CAF50;

                color: white;

                padding: 4px 8px;

                border-radius: 4px;

                font-size: 0.9em;

            }

            .failure-badge {

                background-color: #f44336;

                color: white;

                padding: 4px 8px;

                border-radius: 4px;

                font-size: 0.9em;

            }

            @media (max-width: 768px) {

                .container {

                    padding: 10px;

                }

                .stats-grid {

                    grid-template-columns: 1fr;

                }

            }

        </style>
    </head>
    <body>
        <div class="container">
            <div class="header">
                <h1>API Testing Report</h1>
                <p>Generated on: 2025-02-27 15:47:54</p>
            </div>
            
            <div class="stats-grid">
                <div class="stat-card">
                    <h3>Total Tests</h3>
                    <h2>72</h2>
                </div>
                <div class="stat-card">
                    <h3>Success Rate</h3>
                    <h2>56.94%</h2>
                </div>
                <div class="stat-card">
                    <h3>Avg Response Time</h3>
                    <h2>76.547s</h2>
                </div>
                <div class="stat-card">
                    <h3>Total Endpoints</h3>
                    <h2>8</h2>
                </div>
            </div>

            <div class="plot-container">
                <h2>Success Rates by Endpoint</h2>
                <div>                            <div id="7a9a1310-2935-4d8b-b447-c5efa2fef892" class="plotly-graph-div" style="height:100%; width:100%;"></div>            <script type="text/javascript">                window.PLOTLYENV=window.PLOTLYENV || {};                                if (document.getElementById("7a9a1310-2935-4d8b-b447-c5efa2fef892")) {                    Plotly.newPlot(                        "7a9a1310-2935-4d8b-b447-c5efa2fef892",                        [{"marker":{"color":"rgb(55, 83, 109)"},"name":"Success Rate","x":["\u002fapi\u002fIngestion_File","\u002fapi\u002fchat-bot","\u002fapi\u002fcoqui-text-to-speech","\u002fapi\u002ffaster_whisper_speech_to_text","\u002fapi\u002fplayht-text-to-speech","\u002fapi\u002fresponse-regeneration","\u002fapi\u002fspeech-to-text","\u002fapi\u002ftext-to-speech"],"y":{"dtype":"f8","bdata":"AAAAAADAUkAAAAAAAABTQAAAAAAAAElAAAAAAAAAAAAAAAAAAAApQAAAAAAAAFlA7FG4HoXbUUAAAAAAAABZQA=="},"type":"bar"}],                        {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"yaxis":{"title":{"text":"Success Rate (%)"},"range":[0,100]},"title":{"text":"API Endpoint Success Rates"},"xaxis":{"title":{"text":"Endpoint"}}},                        {"responsive": true}                    )                };            </script>        </div>
            </div>

            <div class="plot-container">
                <h2>Response Time Distribution</h2>
                <div>                            <div id="91d2fc3f-2488-4da3-93ef-1d6747735e42" class="plotly-graph-div" style="height:100%; width:100%;"></div>            <script type="text/javascript">                window.PLOTLYENV=window.PLOTLYENV || {};                                if (document.getElementById("91d2fc3f-2488-4da3-93ef-1d6747735e42")) {                    Plotly.newPlot(                        "91d2fc3f-2488-4da3-93ef-1d6747735e42",                        [{"alignmentgroup":"True","hovertemplate":"Endpoint=%{x}\u003cbr\u003eResponse Time (s)=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"","marker":{"color":"rgb(55, 83, 109)"},"name":"","notched":false,"offsetgroup":"","orientation":"v","showlegend":false,"x":["\u002fapi\u002fIngestion_File","\u002fapi\u002fIngestion_File","\u002fapi\u002fIngestion_File","\u002fapi\u002fIngestion_File"],"x0":" ","xaxis":"x","y":{"dtype":"f8","bdata":"fT81XrrZV0C+nxov3fBoQGq8dJMYhBpAarx0kxiEEkA="},"y0":" ","yaxis":"y","type":"box"}],                        {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"Endpoint"}},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"Response Time (s)"}},"legend":{"tracegroupgap":0},"title":{"text":"API Response Time Distribution"},"boxmode":"group"},                        {"responsive": true}                    )                };            </script>        </div>
            </div>

            <div class="plot-container">
                <h2>Test Case Distribution</h2>
                <div>                            <div id="54e85e68-4ab5-40a9-9bab-564917b192e5" class="plotly-graph-div" style="height:100%; width:100%;"></div>            <script type="text/javascript">                window.PLOTLYENV=window.PLOTLYENV || {};                                if (document.getElementById("54e85e68-4ab5-40a9-9bab-564917b192e5")) {                    Plotly.newPlot(                        "54e85e68-4ab5-40a9-9bab-564917b192e5",                        [{"labels":["TTS","STT","Ingestion","Security","Coqui TTS","Complex Question (English)","Definition Request (Arabic)","Edge Case","Arabic Regeneration","Basic Regeneration","PlayHT Female","PlayHT Male","Arabic TTS","English TTS","Basic Question (English)","Complex Question (Arabic)","Mixed Image Generation Query and Information Request","Greeting (English)","Greeting (Arabic)","Special Characters","Basic Question (Arabic)","Code Generation Request (English)","Code Generation Request (Arabic)","Very Long Query (English)","Very Long Query (Arabic)","Multi-language Query","Image Generation Request (English)","Image Generation Request (Arabic)","Example Request (English)","Example Request (Arabic)","Definition Request (English)","Empty Query"],"marker":{"colors":["rgb(55, 83, 109)","rgb(26, 118, 255)","rgb(178, 223, 138)","rgb(51, 160, 44)","rgb(251, 154, 153)","rgb(227, 26, 28)"]},"values":{"dtype":"i1","bdata":"FQ4EBAIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE="},"type":"pie"}],                        {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"title":{"text":"Distribution of Test Cases"}},                        {"responsive": true}                    )                };            </script>        </div>
            </div>

            <div class="table-container">
                <h2>Response Time Summary</h2>
                <table border="1" class="dataframe summary-table">
  <thead>
    <tr style="text-align: right;">
      <th>Endpoint</th>
      <th>Average Response Time (s)</th>
      <th>Max Response Time (s)</th>
      <th>Min Response Time (s)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>/api/Ingestion_File</td>
      <td>76.54675</td>
      <td>199.527</td>
      <td>4.629</td>
    </tr>
  </tbody>
</table>
            </div>

            <div class="table-container">
                <h2>Detailed Results</h2>
                <table border="1" class="dataframe results-table">
  <thead>
    <tr style="text-align: right;">
      <th>Timestamp</th>
      <th>Endpoint</th>
      <th>Test Case</th>
      <th>Input</th>
      <th>Expected Status</th>
      <th>Actual Status</th>
      <th>Response</th>
      <th>Success</th>
      <th>Error</th>
      <th>Response Time (s)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2025-02-27 15:06:20</td>
      <td>/api/Ingestion_File</td>
      <td>Ingestion - النيابة في صيغ الأسماء(2) - Copy.pdf (33.63MB)</td>
      <td>{'file': 'test_docs/النيابة في صيغ الأسماء(2) - Copy.pdf', 'form_data': {'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'chunk_size': 1500, 'chunk_overlap': 200, 'embeddings_model': 'openai', 'vectorstore_name': 'qdrant', 'llm': 'openai'}}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Ingestion Successful!', 'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51'}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>95.402</td>
    </tr>
    <tr>
      <td>2025-02-27 15:09:40</td>
      <td>/api/Ingestion_File</td>
      <td>Ingestion - Hands_On_Machine_Learning_with_Scikit_Learn_and_TensorFlow.pdf (43.88MB)</td>
      <td>{'file': 'test_docs/Hands_On_Machine_Learning_with_Scikit_Learn_and_TensorFlow.pdf', 'form_data': {'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'chunk_size': 1500, 'chunk_overlap': 200, 'embeddings_model': 'openai', 'vectorstore_name': 'qdrant', 'llm': 'openai'}}</td>
      <td>200</td>
      <td>500</td>
      <td>{'message': "An error occurred: Error serializing to JSON: UnicodeEncodeError: 'utf-8' codec can't encode character '\\ud835' in position 2012: surrogates not allowed"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>199.527</td>
    </tr>
    <tr>
      <td>2025-02-27 15:09:47</td>
      <td>/api/Ingestion_File</td>
      <td>Ingestion - الشات بوت الخاص بأوقاف نورة الملاحي - Copy.docx (0.02MB)</td>
      <td>{'file': 'test_docs/الشات بوت الخاص بأوقاف نورة الملاحي - Copy.docx', 'form_data': {'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'chunk_size': 1500, 'chunk_overlap': 200, 'embeddings_model': 'openai', 'vectorstore_name': 'qdrant', 'llm': 'openai'}}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Ingestion Successful!', 'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51'}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>6.629</td>
    </tr>
    <tr>
      <td>2025-02-27 15:09:51</td>
      <td>/api/Ingestion_File</td>
      <td>Ingestion - sample.txt (0.00MB)</td>
      <td>{'file': 'test_docs/sample.txt', 'form_data': {'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'chunk_size': 1500, 'chunk_overlap': 200, 'embeddings_model': 'openai', 'vectorstore_name': 'qdrant', 'llm': 'openai'}}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Ingestion Successful!', 'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51'}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>4.629</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:03</td>
      <td>/api/chat-bot</td>
      <td>Basic Question (Arabic)</td>
      <td>ما هي النيابة في صيغ الأسماء؟</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'النيابة في صيغ الأسماء تعني أن تقوم صيغة معينة بدور صيغة أخرى في نقل المعنى، وقد تكون هذه النيابة مصحوبة بزيادة في المعنى أو دون ذلك. \n\nيتعلق الموضوع بمدى وقوع ذلك في اللغة العربية، حيث يتم استخدام مصطلح "النيابة" للإشارة إلى هذا المفهوم. وقد أشار الباحثون إلى أن الصيغ النائبة يمكن أن تشمل عدة أنواع، مثل نيابة (فعول) و(مفعال) و(فعَّال) عن (فَاعِّل) في بعض الحالات.\n\nتتضمن دراسة النيابة في صيغ الأسماء أيضًا حصر الصيغ المنوب عنها واستقصاء الصيغ النائبة، ويعتبر هذا الموضوع جديرًا بالبحث والدراسة في مجال النحو العربي. \n\nيهدف البحث في هذا الموضوع إلى تحقيق عدة أهداف، منها الكشف عن مدى وقوع النيابة في اللغة العربية، وحصر الصيغ المنوب عنها، وتبيان حكم تلك النيابة وفق آراء النحاة. \n\nإذا كان لديك أي استفسار آخر أو تحتاج إلى معلومات إضافية، فلا تتردد في طرحها.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 2, 3, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:18</td>
      <td>/api/chat-bot</td>
      <td>Basic Question (English)</td>
      <td>What is substitution in noun forms in Arabic grammar?</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'In Arabic grammar, substitution refers to the concept of "النيابة" (niyābah), which means to replace one form with another while maintaining its grammatical role. This concept is often discussed in relation to noun forms. \n\nSubstitution involves one form of a word taking the place of another form in expressing its meaning, sometimes with an added nuance. For example, certain morphological patterns like (فعول), (مفعال), and (فعَّال) can substitute for (فَاعِل) in conveying meanings related to the frequency or nature of an action, as seen in words like "صبور" (patient), "معطار" (fragrant), and "شراب" (drink), which indicate various meanings associated with the root form. \n\nAdditionally, substitution can occur with the noun forms themselves. For instance, the use of the active participle (اسم الفاعل) may occasionally substitute for the verbal noun (المصدر) in specific instances, though this is noted to happen infrequently in classical texts.\n\nThe discussion of substitution in Arabic grammar highlights the flexibility and richness of the language, allowing for nuanced expressions while maintaining grammatical integrity.\n\n---\nI provided a detailed explanation of the concept of substitution in Arabic grammar, focusing on noun forms and their relationships, as described in the context. If you need a more specific aspect or further details, feel free to ask!', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 8, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:29</td>
      <td>/api/chat-bot</td>
      <td>Complex Question (Arabic)</td>
      <td>ما هي الفروق بين النيابة عن اسم الفاعل واسم المفعول في اللغة العربية؟</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'تتعلق النيابة في اللغة العربية بكيفية قيام صيغة معينة مقام صيغة أخرى في أداء المعنى. فيما يلي الفروق بين النيابة عن اسم الفاعل واسم المفعول:\n\n1. **النيابة عن اسم الفاعل**:\n   - النيابة عن اسم الفاعل يمكن أن تتم بواسطة صيغ مختلفة مثل (أفعل) التفضيل و(فاعِل) و(مُفعِل) وغيرها. \n   - أمثلة على ذلك تشمل: "عَمَّ الرجل بمعروفه فهو مُعِّم"، حيث يُستخدم (مُعِّم) كنيابة عن "عام".\n\n2. **النيابة عن اسم المفعول**:\n   - النيابة عن اسم المفعول تتضمن استعمال صيغ مثل (مفعول) و(مفعَل) و(مَفعُول) و(فَعيل) وغيرها. \n   - مثال على ذلك هو استخدام (محبوب) كاسم مفعول وهو في الأصل (أحببته فهو محبوب)، حيث تُستخدم صيغة اسم المفعول.\n\n3. **القياس والسماع**:\n   - النيابة عن اسم الفاعل تعتبر أكثر شيوعًا وقياسًا مقارنة بالنيابة عن اسم المفعول، حيث يُعتبر السماعي هو الأساس في بعض الحالات.\n\n4. **الاشتقاق والتطبيق**:\n   - يمكن أن تكون هناك صيغ تنوب عن اسم الفاعل من غير الثلاثي، بينما في حالة اسم المفعول، لا يحدث ذلك بنفس القدر.\n\n5. **الاختلاف في المعنى**:\n   - غالبًا ما تحمل أسماء الفاعل دلالات على الفعل في حالة حدوثه، بينما تحمل أسماء المفعول دلالات على وقوع الفعل على المفعول به.\n\nباختصار، النيابة عن اسم الفاعل واسم المفعول تختلف من حيث الصيغ المستخدمة، وشيوع الاستخدام، والمبادئ التي تحدد قياسها.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [2, 3, 4, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:38</td>
      <td>/api/chat-bot</td>
      <td>Complex Question (English)</td>
      <td>What are the differences between the substitution of active and passive participles in Arabic grammar?</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'In Arabic grammar, the substitution of active and passive participles involves understanding their roles and how they can interchange in certain contexts.\n\n1. **Active Participles**: Active participles in Arabic denote the doer of the action. For example, the active participle is often formed using the pattern (فَاعِل) for verbs, indicating someone who performs the action. This can be seen in the use of names like "كاتب" (writer) from the verb "كتب" (to write).\n\n2. **Passive Participles**: Conversely, passive participles signify the receiver of the action and are typically formed using the pattern (مَفعول). For instance, "مكتوب" (written) comes from the same root as the verb "كتب" (to write), indicating something that has been acted upon.\n\n3. **Substitution**: The text notes that there is a notable substitution of forms, where certain participles can replace each other depending on the context. This may happen when the intended meaning can be conveyed through a different form, reflecting different nuances of the action. For example, a passive participle might be used in place of an active one when the focus shifts from the doer to the action itself or its result.\n\n4. **Examples and Observations**: The text illustrates that this substitution is not uniform and varies across different usages and contexts. It notes that the frequency of substitution can differ, with active participles often being more commonly used than passive ones, and vice versa in specific situations.\n\nIn conclusion, the differences between the substitution of active and passive participles in Arabic grammar lie in their function as doers or receivers of action, the patterns used to form them, and the contexts in which they can interchangeably be used based on the intended meaning.\n\nIf you have a specific image or visual representation in mind related to this topic, I must inform you that I\'m unable to generate, create, edit, manipulate, or produce images.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [19, 29]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:46</td>
      <td>/api/chat-bot</td>
      <td>Definition Request (Arabic)</td>
      <td>عرف النيابة في الصيغ مع التمثيل.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'النيابة في اللغة تعني قيام شيء مقام شيء آخر. في الاصطلاح النحوي، النيابة تشير إلى إقامة صيغة واحدة مقام صيغة أخرى في الأداء المعنوي. \n\nيمكن تعريف النيابة بأنها: "إقامة شيء مقام شيء آخر"، كما عرّفها الدكتور محمد سمير نجيب البلدي. \n\n### أمثلة على النيابة في الصيغ:\n\n1. **نيابة (أفعل) التفضيل**: يُقال إن (أفعل) يمكن أن ينوب عن الصفة المشبهة، كما في قوله تعالى: (هُوَ أَعْلَمُ بِّكُمْ) (النجم: 32) حيث (أعلم) هنا نائب عن (عالم).\n\n2. **نيابة الصيغ الأخرى**: مثل صيغة (فعول) التي قد تُستخدم بمعنى (فاعل)، كما في قولهم: "امرأة صبور" و"ناقة حلوبة".\n\n3. **نيابة اسم المفعول من الثلاثي عن غير الثلاثي**: كقولهم: "أحببته فهو محبوب"، حيث (محبوب) يأتي كاسم مفعول من الفعل الثلاثي (أحب).\n\nهذه الأمثلة توضح كيفية استخدام النيابة في اللغة العربية وكيف يمكن أن تنوب صيغة عن أخرى في أداء معناها.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [2, 3, 4, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:10:54</td>
      <td>/api/chat-bot</td>
      <td>Definition Request (English)</td>
      <td>Define substitution in noun forms with examples.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'Substitution in noun forms refers to the phenomenon where one grammatical form is used in place of another, particularly in the context of Arabic grammar. This concept includes various instances where nouns can replace or take the role of other nouns, such as the substitution of the name of the doer (اسم الفاعل) with the name of the acted upon (اسم المفعول), and vice versa.\n\nFor example, in the context of Arabic grammar:\n\n1. **Substitution of اسم الفاعل (name of the doer)**: This is when a noun that indicates the one performing the action can be replaced by another noun that indicates the action being performed on someone or something. \n\n2. **Substitution of اسم المفعول (name of the acted upon)**: An example given in the context is the use of "محبوب" (beloved) from the verb "أحب" (to love). Here, the noun "محبوب" can substitute for the context where the subject is being referenced without the need to specify the action directly.\n\nFurther, the text mentions that many forms in Arabic are flexible and can substitute for others based on context, meaning that the speaker can manipulate these forms according to their needs and the meanings they wish to convey.\n\nIn conclusion, substitution in noun forms can involve various relationships among nouns, allowing for a dynamic use of language where meanings and grammatical roles can shift based on usage.\n\nIf you would like me to create an image illustrating this concept, I apologize but I cannot generate, create, edit, manipulate or produce images.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [19, 29]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:02</td>
      <td>/api/chat-bot</td>
      <td>Example Request (Arabic)</td>
      <td>أعطني أمثلة على النيابة عن الصفة المشبهة.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'من الأمثلة على النيابة عن الصفة المشبهة:\n\n1. قوله تعالى: (هُوَ أَعْلَمُ بِّكُمْ إذْ أَنشَأَكُم مِّنَ الأَرْضِ) (النجم: 32).\n2. قوله تعالى: (نَحْنُ أَعْلَمُ بِمَا يَسْتَمِّعُونَ بِهِ) (الإسراء: 47).\n3. قوله تعالى: (نَحْنُ أَعْلَمُ بِمَا يَقُولُونَ) (طه: 114).\n\nومن الأمثلة الأخرى قول العرب: "الناقص والأشج أعدلا بني مروان" حيث يُفهم أن "أعدلا" ناب عن "عادلاهم". \n\nكما يُمكن الإشارة إلى قوله تعالى: (هَؤُلاءِ بَنَاتِي هُنَّ أَطْهَرُ لَكُمْ) (هود: 78) على تقدير نيابة "أطهر" عن "طاهرات". \n\nتوضح هذه الأمثلة كيف يمكن أن تنوب صيغ معينة عن الصفة المشبهة في السياقات المختلفة.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [2, 3, 4, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:20</td>
      <td>/api/chat-bot</td>
      <td>Example Request (English)</td>
      <td>Give me examples of substitution in adjective-like nouns.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'In the context of substitution in adjective-like nouns, also referred to as "نيابة" in Arabic grammar, several examples illustrate how one form can substitute for another while conveying a similar meaning.\n\n1. **Substituting "أفعَل" for the adjective**: The term "أفعَل" can serve in place of an adjective that denotes a superior quality. For example, in the Quranic verse: \n   - "هُوَ أَعْلَمُ بِّكُمْ" (He is more knowledgeable about you) uses "أَعْلَمُ" as a substitution for a relative adjective.\n\n2. **Substituting "مُفعِّل" and "مِفعَل" for "فاعِل"**: An example includes the usage of "مُعِّم" as a substitute for "عام"، where "مُعِّم" takes on the meaning of one who is generous or charitable.\n\n3. **Substituting "فَعِيل" for "مُفاعِل"**: Another instance is the use of "محُب" as a substitute for "حاب"، indicating one who loves.\n\nThese examples showcase how different forms can serve as substitutes for each other, maintaining the essence of their meanings while adhering to the rules of Arabic grammar.\n\nIf you have any requests for image generation related to this topic, I appreciate your understanding that I cannot generate, create, edit, manipulate, or produce images.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:22</td>
      <td>/api/chat-bot</td>
      <td>Image Generation Request (Arabic)</td>
      <td>قم بإنشاء صورة توضح مفهوم النيابة في صيغ الأسماء.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'I am not able to generate images. I can help you with other questions though!', 'source': [{'documents': {'filename': 'No Source Is Available', 'pages': []}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:23</td>
      <td>/api/chat-bot</td>
      <td>Image Generation Request (English)</td>
      <td>Generate an image that illustrates the concept of substitution in noun forms.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'I am not able to generate images. I can help you with other questions though!', 'source': [{'documents': {'filename': 'No Source Is Available', 'pages': []}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:29</td>
      <td>/api/chat-bot</td>
      <td>Multi-language Query</td>
      <td>ما معنى النيابة في اللغة العربية؟ What does 'niyaba' mean in Arabic grammar?</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'النيابة في اللغة العربية تعني القيام مقام شيء آخر. إذ يُقال "ناب عنه" أي قام مقامه. وقد تسلل هذا المصطلح إلى كتب النحو بمدلوله اللغوي، حيث عُرِّف بأنه إقامة شيء مقام شيء آخر. \n\nفي النحو، يُشير مصطلح "النيابة" إلى إنابة المفعول والظرف والجار والمجرور عن الفاعل، بالإضافة إلى إنابة بعض الصيغ عن أخرى. فمثلاً، قد تنوب صيغة مثل (فعول) أو (مفعال) عن صيغة (فاعل) في أداء معناها.\n\nبشكل عام، النيابة تعكس قدرة الصيغ في اللغة العربية على التعبير عن المعاني من خلال استبدال صيغة بأخرى دون فقدان المعنى الأساسي أو مع زيادة في المعنى في بعض الأحيان.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 2, 3, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:38</td>
      <td>/api/chat-bot</td>
      <td>Very Long Query (Arabic)</td>
      <td>اشرح بالتفصيل مفهوم النيابة في صيغ الأسماء مع ذكر أمثلة من القرآن الكريم، وأوضح أهميتها في النحو العربي.اشرح بالتفصيل مفهوم النيابة في صيغ الأسماء مع ذكر أمثلة من القرآن الكريم، وأوضح أهميتها في النحو العربي.اشرح بالتفصيل مفهوم النيابة في صيغ الأسماء مع ذكر أمثلة من القرآن الكريم، وأوضح أهميتها في النحو العربي.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'مفهوم النيابة في صيغ الأسماء يتعلق بإقامة صيغة معينة مقام صيغة أخرى في اللغة العربية، وهذا المفهوم يحمل دلالات نحوية مهمة. النيابة في اللغة تعني أن يقوم شيء مقام شيء آخر، وعندما نتحدث عن النيابة في صيغ الأسماء، فإننا نشير إلى كيفية تعويض صيغة عن أخرى لأداء نفس المعنى أو معنى قريب.\n\nالنيابة تُعتبر أداة للتعبير عن المعاني بطريقة مختلفة، وهذا ما يجعلها ذا أهمية كبيرة في النحو العربي. فهي تعكس قدرة اللغة على التكيف والتنوع في التعبير عن الأفكار والمعاني. \n\n### أمثلة على النيابة من القرآن الكريم:\n1. **نيابة المصدر عن اسم الفاعل**: في قوله تعالى في سورة البقرة: "وَأَذَانٌ مِّنَ اللّهِ وَرَسُولِهِ إِلَى النَّاسِ يَوْمَ الْحَجِّ الْأَكْبَرِ" (التوبة: 3)، نجد أن المصدر "أذان" ناب عن اسم الفاعل "يؤذن".\n   \n2. **نيابة الاسم عن اسم المفعول**: في قوله تعالى: "إِنَّ اللّهَ سَمِيعٌ عَلِيمٌ" (البقرة: 127)، نجد أن اسم الفاعل "سميع" ينوب عن اسم المفعول في سياق الكلام.\n\n### أهمية النيابة في النحو العربي:\n1. **توسيع المعاني**: النيابة تتيح للمتحدثين التعبير عن معاني متعددة من خلال استخدام صيغ مختلفة، مما يسهل التواصل.\n   \n2. **الدقة في التعبير**: من خلال النيابة، يمكن للغة العربية أن تعبر عن الفروق الدقيقة بين المعاني، مما يعكس عمق اللغة وتنوعها.\n\n3. **توفير مرونة لغوية**: النيابة تسمح للمتكلم بتغيير الصياغة دون فقدان المعنى، مما يمنح اللغة العربية مرونة كبيرة في التعبير.\n\n4. **إثراء الدراسات النحوية**: تعد النيابة موضوعًا مهمًا للدراسات النحوية، حيث تساعد في فهم كيفية تركيب الجمل وتغير المعاني.\n\nفي النهاية، النيابة في صيغ الأسماء تُظهر غنى اللغة العربية وتنوعها، مما يجعلها موضوعًا جديرًا بالدراسة والبحث.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 2, 3, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:49</td>
      <td>/api/chat-bot</td>
      <td>Very Long Query (English)</td>
      <td>Explain in detail the concept of substitution in noun forms with examples from the Quran and discuss its significance in Arabic grammar.Explain in detail the concept of substitution in noun forms with examples from the Quran and discuss its significance in Arabic grammar.Explain in detail the concept of substitution in noun forms with examples from the Quran and discuss its significance in Arabic grammar.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'The concept of substitution in noun forms, also referred to as "النيابة" in Arabic grammar, involves one grammatical form standing in for another while conveying similar meanings. This substitution can enhance the expressiveness of the language by allowing various forms to be used interchangeably depending on context and stylistic preference.\n\nIn Arabic, there are several types of substitutions, particularly concerning noun forms, like اسم الفاعل (the active participle) and اسم المفعول (the passive participle). These forms can sometimes substitute for each other in specific contexts, as highlighted by various scholars.\n\n**Examples from the Quran:**\n\n1. The verse "هُوَ أَعْلَمُ بِّكُمْ إذْ أَنشَأَكُم م ِّنَ الأَرْ ِّ" (النجم: 32) illustrates how the form "أَعْلَمُ" can be seen as a substitute for a more descriptive form, enhancing the meaning of knowledge and understanding.\n\n2. Another example is found in the verse "نَحْنُ أَعْلَمُ بمَِّا يَقُولُونَ" (طه: 114), where "أَعْلَمُ" serves a similar function, showing a deep level of knowledge.\n\nThe significance of this concept in Arabic grammar lies in its ability to provide flexibility and richness to the language. By allowing different forms to convey similar meanings, Arabic can express nuances that might be lost in other languages. This substitution also showcases the interconnectedness of grammatical structures, revealing the complexity and depth of Arabic syntax.\n\nMoreover, the use of substitutions often reflects stylistic choices by poets and writers, allowing them to play with rhythm and sound while maintaining the essence of the message. This is particularly important in classical Arabic literature, where the balance between form and meaning is crucial.\n\nIn summary, the concept of substitution in noun forms is a vital aspect of Arabic grammar, allowing for expressive language use and demonstrating the intricate relationships between different grammatical forms. It enhances both the beauty and the functionality of the language.\n\nUnfortunately, I cannot generate, create, edit, manipulate, or produce images. However, if you have any other questions or need further clarification, feel free to ask!', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:11:57</td>
      <td>/api/chat-bot</td>
      <td>Code Generation Request (Arabic)</td>
      <td>اكتب كود Python يحلل الجملة العربية لاستخراج أسماء الفاعلين وأسماء المفعولين.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'للأسف، لا أستطيع توفير كود Python بشكل مباشر. لكن يمكنني تزويدك بمعلومات حول موضوع البحث في "النيابة في صيغ الأسماء"، والذي قد يساعدك في فهم كيفية استخراج أسماء الفاعلين وأسماء المفعولين من الجمل العربية.\n\nفي بحث "النيابة في صيغ الأسماء"، تم تناول النيابة عن اسم الفاعل واسم المفعول، حيث تم تقسيم الموضوع إلى أربعة مباحث:\n\n1. النيابة عن اسم الفاعل.\n2. النيابة عن اسم المفعول.\n3. النيابة عن الصفة المشبهة.\n4. النيابة عن المصدر.\n\nالكثير من اللغويين والنحاة يتناولون موضوع النيابة في كتبهم، حيث يمكن أن يكون اسم الفاعل مثلاً نائبا عن المصدر في بعض الحالات، وهذا ما يمكن أن تستفيد منه في تحليل الجملة العربية.\n\nإذا كنت بحاجة لمزيد من المعلومات حول كيفية تحليل الجمل العربية أو أمثلة على أسماء الفاعلين وأسماء المفعولين، فلا تتردد في السؤال.\n\nوبخصوص طلبك لإنشاء كود Python، يؤسفني أن أخبرك أنني لا أستطيع توليد أو إنتاج أي صور أو كودات برمجية.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 2, 3, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:10</td>
      <td>/api/chat-bot</td>
      <td>Code Generation Request (English)</td>
      <td>Write a Python script that analyzes Arabic sentences to extract active and passive participles.</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'The context provided does not include specific information about writing a Python script for analyzing Arabic sentences to extract active and passive participles. However, I can guide you on how such a script might be structured based on general knowledge.\n\nYou can use the Natural Language Toolkit (nltk) library in Python, along with regular expressions, to identify active and passive participles in Arabic sentences. Here\'s a simple example of how you might structure your script:\n\n```python\nimport re\n\n# Sample Arabic sentences\nsentences = [\n    "يكتب الطالب الدرس.",  # Active\n    "الدرس مكتوب من الطالب.",  # Passive\n    "أحبّ المعلم طلابه.",  # Active\n    "تُعطى الدروس من المعلم.",  # Passive\n]\n\ndef extract_participles(sentences):\n    active_participles = []\n    passive_participles = []\n    \n    for sentence in sentences:\n        # Check for active participle patterns\n        if re.search(r\'\\b(فاعل|مفعول)\\b\', sentence):  # Example regex for active participle\n            active_participles.append(sentence)\n        \n        # Check for passive participle patterns\n        if re.search(r\'\\b(مفعول)\\b\', sentence):  # Example regex for passive participle\n            passive_participles.append(sentence)\n\n    return active_participles, passive_participles\n\n# Extract participles\nactive, passive = extract_participles(sentences)\n\nprint("Active Participles:")\nprint(active)\nprint("Passive Participles:")\nprint(passive)\n```\n\nIn this script:\n\n- We define a list of Arabic sentences.\n- We create a function to extract active and passive participles based on regex patterns that identify specific participles in Arabic.\n- The script prints out the active and passive participles found in the sentences.\n\nPlease note that the regex patterns used here are simplistic and may need refinement to accurately capture all forms of active and passive participles in Arabic.\n\nRegarding your request for images, I must inform you that I cannot generate, create, edit, manipulate, or produce images.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 3, 19, 25, 29]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:19</td>
      <td>/api/chat-bot</td>
      <td>Empty Query</td>
      <td>NaN</td>
      <td>400</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'It seems there is no query or question provided. Please let me know how I can assist you!', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 3, 8, 19, 25]}}]}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:33</td>
      <td>/api/chat-bot</td>
      <td>Special Characters</td>
      <td>What is substitution in noun forms?!@#$%^&*()</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'Substitution in noun forms, referred to in the context as "نيابة" (niyabah), involves one morphological form standing in for another while conveying similar meanings or nuances. It is characterized by a specific form of a word taking the place of another in grammatical functions or meanings.\n\nIn Arabic grammar, the concept of substitution can be illustrated with different forms of nouns. For instance, names can take the form of اسم الفاعل (the doer) or اسم المفعول (the receiver), and sometimes these forms can substitute for the source noun. For example, اسم الفاعل can occasionally stand in for the source noun in limited contexts, as seen in poetic examples where اسم الفاعل conveys the meaning of a noun that indicates an action or state.\n\nMoreover, the discussion includes various types of nouns, such as "مشتق" (derived) and "جامد" (non-derived), each having its own specific form that uniquely represents its meaning without overlap with other forms. The concept expands to include forms like "أفعَل" (for comparative or superlative meanings) and variations such as "مفعِل," "مفعَل," and others, which can also serve as substitutes for other noun forms.\n\nIf you are looking for images or illustrations regarding this topic, I kindly inform you that I cannot generate, create, edit, manipulate, or produce images.', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:39</td>
      <td>/api/chat-bot</td>
      <td>Greeting (Arabic)</td>
      <td>السلام عليكم، كيف حالك؟</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'وعليكم السلام، أنا بخير، شكرًا لسؤالك. كيف يمكنني مساعدتك اليوم؟', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:42</td>
      <td>/api/chat-bot</td>
      <td>Greeting (English)</td>
      <td>Hello, how are you?</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': "Hello! I'm doing well, thank you! How about you?", 'source': [{'documents': {'filename': 'No Source Is Available', 'pages': []}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:43</td>
      <td>/api/chat-bot</td>
      <td>Mixed Image Generation Query and Information Request</td>
      <td>what this document is about? generate an image of it</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'I am not able to generate images. I can help you with other questions though!', 'source': [{'documents': {'filename': 'No Source Is Available', 'pages': []}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:46</td>
      <td>/api/speech-to-text</td>
      <td>STT - Valid WAV File</td>
      <td>{'file': 'test_audio/sample.wav'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': "This is a sample test audio file generated using OpenAI's Text-to-Speech API."}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:48</td>
      <td>/api/speech-to-text</td>
      <td>STT - Valid MP3 File</td>
      <td>{'file': 'test_audio/sample.mp3'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': "This is a sample test audio file generated using OpenAI's text-to-speech API."}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:50</td>
      <td>/api/speech-to-text</td>
      <td>STT - Valid M4A File</td>
      <td>{'file': 'test_audio/sample.m4a'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': "This is a sample test audio file generated using OpenAI's Text-to-Speech API."}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:52</td>
      <td>/api/speech-to-text</td>
      <td>STT - Valid OGG File</td>
      <td>{'file': 'test_audio/sample.ogg'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': "This is a sample test audio file generated using OpenAI's Text-to-Speech API."}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:53</td>
      <td>/api/speech-to-text</td>
      <td>STT - Invalid File Format</td>
      <td>{'file': 'test_audio/invalid.xyz'}</td>
      <td>400</td>
      <td>400</td>
      <td>{"message":"Unsupported file type. Allowed types are: .m4a, .wav, .mpga, .webm, .mpeg, .mp4, .mp3, .ogg"}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:12:55</td>
      <td>/api/speech-to-text</td>
      <td>STT - Empty Audio File</td>
      <td>{'file': 'test_audio/empty.wav'}</td>
      <td>400</td>
      <td>500</td>
      <td>{"message":"An error occurred: Error code: 400 - {'error': {'message': \"Invalid file format. Supported formats: ['flac', 'm4a', 'mp3', 'mp4', 'mpeg', 'mpga', 'oga', 'ogg', 'wav', 'webm']\", 'type': 'invalid_request_error', 'param': None, 'code': None}}"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:31</td>
      <td>/api/speech-to-text</td>
      <td>STT - Large Audio File</td>
      <td>{'file': 'test_audio/large.wav'}</td>
      <td>400</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file. This is a test for generating a large audio file.'}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:32</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Valid WAV File</td>
      <td>{'file': 'test_audio/sample.wav'}</td>
      <td>200</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:34</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Valid MP3 File</td>
      <td>{'file': 'test_audio/sample.mp3'}</td>
      <td>200</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:36</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Valid M4A File</td>
      <td>{'file': 'test_audio/sample.m4a'}</td>
      <td>200</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:37</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Valid OGG File</td>
      <td>{'file': 'test_audio/sample.ogg'}</td>
      <td>200</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:38</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Invalid File Format</td>
      <td>{'file': 'test_audio/invalid.xyz'}</td>
      <td>400</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:39</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Empty Audio File</td>
      <td>{'file': 'test_audio/empty.wav'}</td>
      <td>400</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:51</td>
      <td>/api/faster_whisper_speech_to_text</td>
      <td>STT - Large Audio File</td>
      <td>{'file': 'test_audio/large.wav'}</td>
      <td>400</td>
      <td>404</td>
      <td>{"detail":"Not Found"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:54</td>
      <td>/api/text-to-speech</td>
      <td>TTS - English Short Text - alloy</td>
      <td>{'text': 'Hello, this is a test.', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:13:57</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Arabic Short Text - alloy</td>
      <td>{'text': 'مرحبا، هذا اختبار.', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:14:55</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Long English Text - alloy</td>
      <td>{'text': 'This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. ', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:41</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Long Arabic Text - alloy</td>
      <td>{'text': 'هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. ', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:42</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Empty Text - alloy</td>
      <td>{'text': '', 'voice_type': 'alloy'}</td>
      <td>400</td>
      <td>400</td>
      <td>{"message":"Empty text provided for text-to-speech conversion"}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:44</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Special Characters - alloy</td>
      <td>{'text': 'Test with special chars: !@#$%^&*()', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:48</td>
      <td>/api/text-to-speech</td>
      <td>TTS - Mixed Language - alloy</td>
      <td>{'text': 'English مع العربية with numbers 123', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:50</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - English Short Text - male</td>
      <td>{'text': 'Hello, this is a test.', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:54</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Arabic Short Text - male</td>
      <td>{'text': 'مرحبا، هذا اختبار.', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:55</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Long English Text - male</td>
      <td>{'text': 'This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. ', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:16:59</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Long Arabic Text - male</td>
      <td>{'text': 'هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. ', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:17:00</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Empty Text - male</td>
      <td>{'text': '', 'voice_type': 'male'}</td>
      <td>400</td>
      <td>400</td>
      <td>{"message":"Empty text provided for text-to-speech conversion"}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:17:01</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Special Characters - male</td>
      <td>{'text': 'Test with special chars: !@#$%^&*()', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:00</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Mixed Language - male</td>
      <td>{'text': 'English مع العربية with numbers 123', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:01</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - English Short Text - female</td>
      <td>{'text': 'Hello, this is a test.', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:02</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Arabic Short Text - female</td>
      <td>{'text': 'مرحبا، هذا اختبار.', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:04</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Long English Text - female</td>
      <td>{'text': 'This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. This is a very long text that tests the limits of the text-to-speech API. ', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:05</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Long Arabic Text - female</td>
      <td>{'text': 'هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. هذا نص طويل جدا لاختبار حدود واجهة برمجة التطبيقات للتحويل من النص إلى الكلام. ', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:06</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Empty Text - female</td>
      <td>{'text': '', 'voice_type': 'female'}</td>
      <td>400</td>
      <td>400</td>
      <td>{"message":"Empty text provided for text-to-speech conversion"}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:18:10</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Special Characters - female</td>
      <td>{'text': 'Test with special chars: !@#$%^&*()', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:05</td>
      <td>/api/playht-text-to-speech</td>
      <td>TTS - Mixed Language - female</td>
      <td>{'text': 'English مع العربية with numbers 123', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:05</td>
      <td>/api/coqui-text-to-speech</td>
      <td>Coqui TTS - Invalid Audio Format</td>
      <td>{'file': 'test_audio/invalid.xyz', 'text': 'This should fail'}</td>
      <td>400</td>
      <td>400</td>
      <td>{"message":"Unsupported audio format. Please upload a WAV or MP3 file."}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:06</td>
      <td>/api/coqui-text-to-speech</td>
      <td>Coqui TTS - Empty Audio File</td>
      <td>{'file': 'test_audio/empty.wav', 'text': 'This should fail'}</td>
      <td>400</td>
      <td>500</td>
      <td>{"message":"Internal server error during voice generation"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:09</td>
      <td>/api/text-to-speech</td>
      <td>English TTS</td>
      <td>{'text': 'Hello, this is a test.', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:12</td>
      <td>/api/text-to-speech</td>
      <td>Arabic TTS</td>
      <td>{'text': 'مرحبا، هذا اختبار.', 'voice_type': 'alloy'}</td>
      <td>200</td>
      <td>200</td>
      <td>Audio data received</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:16</td>
      <td>/api/playht-text-to-speech</td>
      <td>PlayHT Male</td>
      <td>{'text': 'This is a test for PlayHT male voice.', 'voice_type': 'male'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:20</td>
      <td>/api/playht-text-to-speech</td>
      <td>PlayHT Female</td>
      <td>{'text': 'This is a test for PlayHT female voice.', 'voice_type': 'female'}</td>
      <td>200</td>
      <td>500</td>
      <td>{"message":"Failed to generate speech from text using PlayHT"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:33</td>
      <td>/api/response-regeneration</td>
      <td>Basic Regeneration</td>
      <td>{'query': 'What is machine learning?', 'instructions': 'Explain in simpler terms', 'response': 'Previous response about machine learning', 'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'user_id': '55d37ea8-a04d-4ff7-a2bf-18cc6ea0cd47'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'I\'m unable to provide information about machine learning as it is not included in the provided context. The context focuses on the linguistic concept of "النيابة في صيغ الأسماء" (the notion of representation in the forms of names) in Arabic grammar and does not cover machine learning or related topics. If you have questions specifically about the content within the context, feel free to ask!', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [3, 12, 25]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:39</td>
      <td>/api/response-regeneration</td>
      <td>Arabic Regeneration</td>
      <td>{'query': 'ما هو التعلم الآلي؟', 'instructions': 'اشرح بطريقة أبسط', 'response': 'الإجابة السابقة عن التعلم الآلي', 'chatbot_id': 'ac86fc46-4927-4fe9-8581-a709793d7a51', 'user_id': '55d37ea8-a04d-4ff7-a2bf-18cc6ea0cd47'}</td>
      <td>200</td>
      <td>200</td>
      <td>{'message': 'Response Generated Successfully!', 'data': {'response': 'آسف، لا أستطيع تقديم إجابة حول التعلم الآلي بناءً على المعلومات المتاحة في السياق. إذا كان لديك أي استفسار آخر أو موضوع مختلف ترغب في مناقشته، فلا تتردد في طرحه!', 'source': [{'documents': {'filename': 'النيابة في صيغ الأسماء(2) - Copy.pdf', 'pages': [1, 2, 3, 12, 18]}}]}}</td>
      <td><span class="success-badge">Success</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:20:53</td>
      <td>/api/chat-bot</td>
      <td>Edge Case - Very Large Input</td>
      <td>Large text input</td>
      <td>400</td>
      <td>500</td>
      <td>{"message":"An error occurred: Error code: 429 - {'error': {'message': 'Request too large for gpt-4o-mini in organization org-lDRjqAou0H1KtvE1DBDIYhLX on tokens per min (TPM): Limit 200000, Requested 1000319. The input or output tokens must be reduced in order to run successfully. Visit https://platform.openai.com/account/rate-limits to learn more.', 'type': 'tokens', 'param': None, 'code': 'rate_limit_exceeded'}}"}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:21:07</td>
      <td>/api/chat-bot</td>
      <td>Security - SQL Injection Attempt</td>
      <td>'; DROP TABLE users; --</td>
      <td>400</td>
      <td>200</td>
      <td>{"message":"Response Generated Successfully!","data":{"response":"I'm sorry, but I cannot assist with that.","source":[{"documents":{"filename":"النيابة في صيغ الأسماء(2) - Copy.pdf","pages":[1,3,25]}}]}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:21:13</td>
      <td>/api/chat-bot</td>
      <td>Security - XSS Attempt</td>
      <td><script>alert('xss')</script></td>
      <td>400</td>
      <td>200</td>
      <td>{"message":"Response Generated Successfully!","data":{"response":"عذرًا، لا أستطيع مساعدتك في هذا الأمر. إذا كان لديك استفسار آخر يتعلق بالمعلومات أو المواضيع الأكاديمية، فلا تتردد في طرحه.","source":[{"documents":{"filename":"النيابة في صيغ الأسماء(2) - Copy.pdf","pages":[3,12,25]}}]}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:21:19</td>
      <td>/api/chat-bot</td>
      <td>Security - Missing Auth Header</td>
      <td>test</td>
      <td>401</td>
      <td>200</td>
      <td>{"message":"Response Generated Successfully!","data":{"response":"عذرًا، لا أستطيع مساعدتك في ذلك. إذا كان لديك سؤال محدد أو استفسار حول موضوع معين، فلا تتردد في طرحه وسأكون سعيدًا بمساعدتك.","source":[{"documents":{"filename":"النيابة في صيغ الأسماء(2) - Copy.pdf","pages":[3,12,25]}}]}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <td>2025-02-27 15:21:25</td>
      <td>/api/chat-bot</td>
      <td>Security - Invalid Auth Token</td>
      <td>test</td>
      <td>401</td>
      <td>200</td>
      <td>{"message":"Response Generated Successfully!","data":{"response":"عذرًا، لم أتمكن من فهم استفسارك. إذا كنت بحاجة إلى معلومات معينة، يرجى توضيح سؤالك وسأكون سعيدًا بمساعدتك.","source":[{"documents":{"filename":"النيابة في صيغ الأسماء(2) - Copy.pdf","pages":[3,12,25]}}]}}</td>
      <td><span class="failure-badge">Failure</span></td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
  </tbody>
</table>
            </div>
        </div>
    </body>
    </html>