aait 2.3.12.1__tar.gz → 2.3.12.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. aait-2.3.12.3/PKG-INFO +32 -0
  2. aait-2.3.12.3/aait.egg-info/PKG-INFO +32 -0
  3. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/SOURCES.txt +5 -2
  4. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/__init__.py +4 -1
  5. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/answers_llama.py +45 -13
  6. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/lmstudio.py +2 -2
  7. aait-2.3.12.3/orangecontrib/AAIT/llm/prompt_management.py +157 -0
  8. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/shared_functions.py +54 -43
  9. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/widget_positioning.py +68 -64
  10. aait-2.3.12.3/orangecontrib/AAIT/widgets/OWConverseLLM.py +274 -0
  11. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWFileWithPath.py +14 -9
  12. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +154 -20
  13. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWGenerateWord.py +9 -7
  14. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWInputSelector.py +4 -1
  15. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLLMEngine.py +14 -7
  16. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLMStudio.py +200 -190
  17. aait-2.3.12.3/orangecontrib/AAIT/widgets/OWQuadrantclicker.py +88 -0
  18. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +19 -37
  19. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +13 -0
  20. aait-2.3.12.3/orangecontrib/AAIT/widgets/designer/owconversellm.ui +363 -0
  21. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +6 -6
  22. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +25 -11
  23. aait-2.3.12.3/orangecontrib/AAIT/widgets/designer/owquadrant_clicker.ui +276 -0
  24. aait-2.3.12.3/orangecontrib/AAIT/widgets/icons/quadrantclicker.svg +135 -0
  25. {aait-2.3.12.1 → aait-2.3.12.3}/setup.py +1 -1
  26. aait-2.3.12.1/PKG-INFO +0 -9
  27. aait-2.3.12.1/aait.egg-info/PKG-INFO +0 -9
  28. aait-2.3.12.1/orangecontrib/AAIT/llm/prompt_management.py +0 -140
  29. aait-2.3.12.1/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -205
  30. aait-2.3.12.1/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -126
  31. {aait-2.3.12.1 → aait-2.3.12.3}/License.txt +0 -0
  32. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/dependency_links.txt +0 -0
  33. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/entry_points.txt +0 -0
  34. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/namespace_packages.txt +0 -0
  35. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/requires.txt +0 -0
  36. {aait-2.3.12.1 → aait-2.3.12.3}/aait.egg-info/top_level.txt +0 -0
  37. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
  38. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
  39. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/__init__.py +0 -0
  40. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/answers.py +0 -0
  41. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/chunking.py +0 -0
  42. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/embeddings.py +0 -0
  43. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/lemmes.py +0 -0
  44. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/process_documents.py +0 -0
  45. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/llm/translations.py +0 -0
  46. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
  47. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
  48. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
  49. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/OperationSystem.py +0 -0
  50. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
  51. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/__init__.py +0 -0
  52. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
  53. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/aait_table_viewer.py +0 -0
  54. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/base_widget.py +0 -0
  55. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
  56. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/import_uic.py +0 -0
  57. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
  58. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
  59. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
  60. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
  61. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/thread_management.py +0 -0
  62. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
  63. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
  64. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
  65. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
  66. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
  67. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/unlink_table_domain.py +0 -0
  68. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
  69. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
  70. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWAccumulator.py +0 -0
  71. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
  72. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
  73. /aait-2.3.12.1/orangecontrib/AAIT/widgets/owautoshowcreateinstance.py → /aait-2.3.12.3/orangecontrib/AAIT/widgets/OWAutoShowCreateInstance.py +0 -0
  74. /aait-2.3.12.1/orangecontrib/AAIT/widgets/owautoshowtable.py → /aait-2.3.12.3/orangecontrib/AAIT/widgets/OWAutoShowTable.py +0 -0
  75. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
  76. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
  77. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
  78. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
  79. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
  80. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
  81. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
  82. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
  83. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
  84. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
  85. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
  86. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
  87. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
  88. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
  89. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
  90. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
  91. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
  92. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
  93. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
  94. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLargeLanguageModel.py +0 -0
  95. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
  96. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWLoadDocuments.py +0 -0
  97. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
  98. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Embeddings.py +0 -0
  99. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
  100. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
  101. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
  102. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
  103. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
  104. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
  105. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
  106. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
  107. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
  108. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
  109. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
  110. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
  111. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
  112. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
  113. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
  114. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWOperationSystem.py +0 -0
  115. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
  116. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
  117. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
  118. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
  119. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
  120. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
  121. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
  122. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
  123. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
  124. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWSortAndSelect.py +0 -0
  125. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
  126. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
  127. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
  128. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
  129. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
  130. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
  131. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/__init__.py +0 -0
  132. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
  133. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/ow_OperationSystem.ui +0 -0
  134. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
  135. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +0 -0
  136. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
  137. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
  138. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
  139. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
  140. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owedgellm.ui +0 -0
  141. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
  142. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
  143. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
  144. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
  145. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owexecutescript_TEST.ui +0 -0
  146. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
  147. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
  148. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
  149. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
  150. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
  151. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
  152. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
  153. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
  154. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
  155. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
  156. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
  157. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owlargelanguagemodel.ui +0 -0
  158. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
  159. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
  160. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owloaddocuments.ui +0 -0
  161. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
  162. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
  163. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
  164. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
  165. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
  166. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
  167. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
  168. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
  169. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
  170. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
  171. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
  172. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
  173. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
  174. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
  175. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
  176. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
  177. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
  178. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
  179. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
  180. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
  181. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
  182. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
  183. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
  184. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
  185. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
  186. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owsortandselect.ui +0 -0
  187. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
  188. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
  189. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
  190. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
  191. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
  192. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
  193. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/CreateInstance.svg +0 -0
  194. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
  195. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
  196. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/Table.svg +0 -0
  197. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
  198. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/blue_down_arrow.svg +0 -0
  199. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
  200. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
  201. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
  202. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
  203. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
  204. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/edge_llm.svg +0 -0
  205. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
  206. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
  207. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/green_check.svg +0 -0
  208. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
  209. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
  210. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
  211. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
  212. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
  213. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
  214. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
  215. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
  216. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
  217. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
  218. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
  219. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
  220. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
  221. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/operationSystem.png +0 -0
  222. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
  223. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
  224. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
  225. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
  226. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
  227. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
  228. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
  229. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
  230. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
  231. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
  232. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
  233. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
  234. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
  235. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
  236. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
  237. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
  238. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
  239. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
  240. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
  241. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
  242. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
  243. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
  244. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owlargelanguagemodel.svg +0 -0
  245. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
  246. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owloaddocuments.svg +0 -0
  247. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
  248. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_embeddings.svg +0 -0
  249. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
  250. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
  251. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
  252. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
  253. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
  254. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
  255. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
  256. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
  257. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
  258. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
  259. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
  260. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
  261. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owsortandselect.svg +0 -0
  262. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
  263. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
  264. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
  265. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
  266. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
  267. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
  268. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
  269. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
  270. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
  271. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
  272. {aait-2.3.12.1 → aait-2.3.12.3}/orangecontrib/__init__.py +0 -0
  273. {aait-2.3.12.1 → aait-2.3.12.3}/setup.cfg +0 -0
aait-2.3.12.3/PKG-INFO ADDED
@@ -0,0 +1,32 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.3.12.3
4
+ Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
+ Home-page:
6
+ Author: Orange community
7
+ Author-email:
8
+ License: UNKNOWN
9
+ Keywords: orange3 add-on
10
+ Platform: UNKNOWN
11
+ License-File: License.txt
12
+ Requires-Dist: torch
13
+ Requires-Dist: sentence-transformers==5.0.0
14
+ Requires-Dist: gpt4all[all]==2.8.2
15
+ Requires-Dist: sacremoses==0.1.1
16
+ Requires-Dist: transformers==4.51.3
17
+ Requires-Dist: sentencepiece==0.2.0
18
+ Requires-Dist: optuna
19
+ Requires-Dist: spacy==3.7.6
20
+ Requires-Dist: markdown
21
+ Requires-Dist: python-multipart
22
+ Requires-Dist: PyMuPDF==1.24.14
23
+ Requires-Dist: chonkie==0.4.1
24
+ Requires-Dist: GPUtil==1.4.0
25
+ Requires-Dist: unidecode==1.3.8
26
+ Requires-Dist: python-docx==1.1.2
27
+ Requires-Dist: psutil
28
+ Requires-Dist: thefuzz==0.22.1
29
+ Requires-Dist: beautifulsoup4==4.12.3
30
+ Requires-Dist: CATEGORIT
31
+
32
+ UNKNOWN
@@ -0,0 +1,32 @@
1
+ Metadata-Version: 2.1
2
+ Name: aait
3
+ Version: 2.3.12.3
4
+ Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
5
+ Home-page:
6
+ Author: Orange community
7
+ Author-email:
8
+ License: UNKNOWN
9
+ Keywords: orange3 add-on
10
+ Platform: UNKNOWN
11
+ License-File: License.txt
12
+ Requires-Dist: torch
13
+ Requires-Dist: sentence-transformers==5.0.0
14
+ Requires-Dist: gpt4all[all]==2.8.2
15
+ Requires-Dist: sacremoses==0.1.1
16
+ Requires-Dist: transformers==4.51.3
17
+ Requires-Dist: sentencepiece==0.2.0
18
+ Requires-Dist: optuna
19
+ Requires-Dist: spacy==3.7.6
20
+ Requires-Dist: markdown
21
+ Requires-Dist: python-multipart
22
+ Requires-Dist: PyMuPDF==1.24.14
23
+ Requires-Dist: chonkie==0.4.1
24
+ Requires-Dist: GPUtil==1.4.0
25
+ Requires-Dist: unidecode==1.3.8
26
+ Requires-Dist: python-docx==1.1.2
27
+ Requires-Dist: psutil
28
+ Requires-Dist: thefuzz==0.22.1
29
+ Requires-Dist: beautifulsoup4==4.12.3
30
+ Requires-Dist: CATEGORIT
31
+
32
+ UNKNOWN
@@ -50,6 +50,8 @@ orangecontrib/AAIT/widgets/OWAAITResourcesManager.py
50
50
  orangecontrib/AAIT/widgets/OWAccumulator.py
51
51
  orangecontrib/AAIT/widgets/OWAddColumns.py
52
52
  orangecontrib/AAIT/widgets/OWApplyRules.py
53
+ orangecontrib/AAIT/widgets/OWAutoShowCreateInstance.py
54
+ orangecontrib/AAIT/widgets/OWAutoShowTable.py
53
55
  orangecontrib/AAIT/widgets/OWCN2rule_view.py
54
56
  orangecontrib/AAIT/widgets/OWChunking.py
55
57
  orangecontrib/AAIT/widgets/OWConcatRules.py
@@ -101,6 +103,7 @@ orangecontrib/AAIT/widgets/OWOptimisation.py
101
103
  orangecontrib/AAIT/widgets/OWOptimisationSelection.py
102
104
  orangecontrib/AAIT/widgets/OWOptimisationSendScore.py
103
105
  orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py
106
+ orangecontrib/AAIT/widgets/OWQuadrantclicker.py
104
107
  orangecontrib/AAIT/widgets/OWQueryLLM.py
105
108
  orangecontrib/AAIT/widgets/OWRandomData.py
106
109
  orangecontrib/AAIT/widgets/OWReranking.py
@@ -115,8 +118,6 @@ orangecontrib/AAIT/widgets/OWTrigger.py
115
118
  orangecontrib/AAIT/widgets/OWUnzipFolder.py
116
119
  orangecontrib/AAIT/widgets/POW_Wfactory.py
117
120
  orangecontrib/AAIT/widgets/__init__.py
118
- orangecontrib/AAIT/widgets/owautoshowcreateinstance.py
119
- orangecontrib/AAIT/widgets/owautoshowtable.py
120
121
  orangecontrib/AAIT/widgets/designer/owMarkdown.ui
121
122
  orangecontrib/AAIT/widgets/designer/ow_OperationSystem.ui
122
123
  orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui
@@ -170,6 +171,7 @@ orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui
170
171
  orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui
171
172
  orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui
172
173
  orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui
174
+ orangecontrib/AAIT/widgets/designer/owquadrant_clicker.ui
173
175
  orangecontrib/AAIT/widgets/designer/owqueryllm.ui
174
176
  orangecontrib/AAIT/widgets/designer/owreranking.ui
175
177
  orangecontrib/AAIT/widgets/designer/owsavewithpath.ui
@@ -255,6 +257,7 @@ orangecontrib/AAIT/widgets/icons/owtable2corpus.svg
255
257
  orangecontrib/AAIT/widgets/icons/owtranslation.svg
256
258
  orangecontrib/AAIT/widgets/icons/owtrigger.svg
257
259
  orangecontrib/AAIT/widgets/icons/processdocuments.svg
260
+ orangecontrib/AAIT/widgets/icons/quadrantclicker.svg
258
261
  orangecontrib/AAIT/widgets/icons/qwen-color.png
259
262
  orangecontrib/AAIT/widgets/icons/select_dynamic_row.png
260
263
  orangecontrib/AAIT/widgets/icons/startloop.png
@@ -93,7 +93,10 @@ else: # Execute the file
93
93
  """
94
94
  gc.collect()
95
95
  objects = gc.get_objects()
96
- widget_discoveries = [obj for obj in objects if isinstance(obj, WidgetDiscovery)]
96
+ try:
97
+ widget_discoveries = [obj for obj in objects if isinstance(obj, WidgetDiscovery)]
98
+ except Exception as e:
99
+ print(e)
97
100
  return widget_discoveries
98
101
 
99
102
  def import_proprietary_categories():
@@ -142,7 +142,7 @@ def load_model(model_path, use_gpu, n_ctx=10000):
142
142
  return
143
143
 
144
144
 
145
- def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, query_parameters=None, workflow_id="", progress_callback=None):
145
+ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, query_parameters=None, workflow_id="", progress_callback=None, argself=None):
146
146
  """
147
147
  Identique en signature/comportement, mais utilise llama_cpp sous le capot.
148
148
  """
@@ -179,6 +179,8 @@ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, query_paramet
179
179
  system_prompt=system_prompt
180
180
  )
181
181
 
182
+ prompt = handle_context_length(prompt, model, n_ctx, method="truncate", progress_callback=progress_callback)
183
+
182
184
  answer = run_query(
183
185
  prompt,
184
186
  model=model,
@@ -208,7 +210,7 @@ def generate_answers(table, model_path, use_gpu=False, n_ctx=4096, query_paramet
208
210
 
209
211
  if progress_callback is not None:
210
212
  progress_value = float(100 * (i + 1) / len(data))
211
- progress_callback((progress_value, "\n\n\n\n"))
213
+ progress_callback(("progressBar", progress_value))
212
214
 
213
215
  if argself is not None and getattr(argself, "stop", False):
214
216
  break
@@ -305,7 +307,7 @@ def run_query(prompt, model, max_tokens=4096, temperature=0, top_p=0, top_k=40,
305
307
  write_tokens_to_file(token, workflow_id)
306
308
 
307
309
  if progress_callback is not None:
308
- progress_callback((None, token))
310
+ progress_callback(("assistant", token))
309
311
 
310
312
  if argself is not None and getattr(argself, "stop", False):
311
313
  # Arrêt demandé de l'extérieur
@@ -323,7 +325,7 @@ def run_query(prompt, model, max_tokens=4096, temperature=0, top_p=0, top_k=40,
323
325
  return answer
324
326
 
325
327
 
326
- def generate_conversation(table, model, conversation=None, progress_callback=None, argself=None):
328
+ def generate_conversation(table, model, conversation=None, n_ctx=32768, progress_callback=None, argself=None):
327
329
  """
328
330
  Generates a response using a language model and appends it to a conversation.
329
331
 
@@ -362,26 +364,27 @@ def generate_conversation(table, model, conversation=None, progress_callback=Non
362
364
  prompt = ""
363
365
  # If the conversation has not started, add a default system prompt
364
366
  if not conversation:
365
- prompt += prompt_management.apply_system_template(model_path=model_path, system_prompt=system_prompt)
366
- conversation = []
367
+ conversation = [{"role": "system", "content": system_prompt}]
367
368
 
368
369
  # If the conversation has started, build the complete context
369
370
  else:
370
371
  for message in conversation:
371
- if message["role"] == "user":
372
+ if message["role"] == "system":
373
+ prompt += prompt_management.apply_system_template(model_path, message["content"])
374
+ elif message["role"] == "user":
372
375
  prompt += prompt_management.apply_user_template(model_path, message["content"])
373
376
  elif message["role"] == "assistant":
374
377
  prompt += prompt_management.apply_assistant_template(model_path, message["content"])
375
- elif message["role"] == "system":
376
- prompt += prompt_management.apply_system_template(model_path, message["content"])
377
378
 
378
379
  # Add the current user prompt & assistant prompt
379
380
  prompt += prompt_management.apply_user_template(model_path, user_prompt)
380
381
  prompt += prompt_management.apply_assistant_template(model_path, assistant_prompt)
381
382
 
383
+ prompt = handle_context_length(prompt, model, n_ctx, method="truncate", progress_callback=progress_callback)
384
+
382
385
  # Return progression to fill the user & assistant cards
383
386
  progress_callback(("user", user_prompt))
384
- progress_callback((None, assistant_prompt))
387
+ progress_callback(("assistant", assistant_prompt))
385
388
 
386
389
  # Append the user message to the conversation
387
390
  conversation.append({"role": "user", "content": user_prompt})
@@ -395,8 +398,8 @@ def generate_conversation(table, model, conversation=None, progress_callback=Non
395
398
  # Append the answer to the conversation
396
399
  conversation.append({"role": "assistant", "content": assistant_prompt + final_answer})
397
400
 
398
- # Add spaces to the widget for following answers
399
- progress_callback((100, ""))
401
+ # End of the progress bar
402
+ progress_callback(("progressBar", 100))
400
403
 
401
404
  # Padding to add columns to the table, TEMPORARY # TODO : process the entire table for conversation
402
405
  rows_answer = [final_answer]
@@ -427,8 +430,37 @@ def split_think(answer: str):
427
430
  final_answer = re.sub(r"<think>.*?</think>", "", answer, flags=re.DOTALL).strip()
428
431
  return think_text, final_answer
429
432
 
433
+
430
434
  def conversation_to_text(conversation):
431
435
  if not conversation:
432
436
  return ""
433
437
  else:
434
- pass #TODO
438
+ pass #TODO
439
+
440
+
441
+ def handle_context_length(prompt, model, n_ctx, method="truncate", margin=0, progress_callback=None):
442
+ """
443
+ Truncate a prompt to fit within n_ctx tokens, leaving margin for generation.
444
+ Safely handles edge cases where limit <= 0.
445
+ """
446
+ # Keep a margin for generated tokens
447
+ limit = max(n_ctx - margin, 0) # clamp to at least 0
448
+
449
+ if method == "truncate":
450
+ tokens = model.tokenize(prompt.encode("utf-8")) # pass string, not bytes
451
+ initial_length = len(tokens)
452
+ if initial_length > limit:
453
+ # take last `limit` tokens safely
454
+ tokens = tokens[-limit:] if limit > 0 else []
455
+ truncated_length = len(tokens)
456
+ prompt = model.detokenize(tokens).decode("utf-8") if tokens else ""
457
+ if progress_callback:
458
+ warning = (
459
+ f"Complete prompt contains {initial_length} tokens - context limit is {limit}. "
460
+ f"The {truncated_length} last tokens have been kept in the prompt."
461
+ )
462
+ progress_callback(("warning", warning))
463
+ return prompt
464
+ else:
465
+ return prompt
466
+
@@ -47,7 +47,7 @@ def appel_lmstudio(prompt, model, stream=False, temperature=0.7, max_tokens=4096
47
47
 
48
48
  # Vérification de la réponse
49
49
  if response.status_code != 200:
50
- raise Exception("Erreur dans la requête")
50
+ raise Exception("Error in the request")
51
51
 
52
52
  # Initialisation de la variable de contenu
53
53
  content = ""
@@ -75,6 +75,6 @@ def appel_lmstudio(prompt, model, stream=False, temperature=0.7, max_tokens=4096
75
75
  return content
76
76
 
77
77
  except Exception as e:
78
- print(f"Erreur : {e}")
78
+ print(f"Error : {e}")
79
79
  return None
80
80
 
@@ -0,0 +1,157 @@
1
+ import os
2
+
3
+ prompt_templates = {
4
+ "llama": {
5
+ "system": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n{system_prompt}<|eot_id|>",
6
+ "user": "<|start_header_id|>user<|end_header_id|>\n{user_prompt}<|eot_id|>",
7
+ "assistant": "<|start_header_id|>assistant<|end_header_id|>\n{assistant_prompt}"
8
+ },
9
+
10
+ "mistral": {
11
+ "system": "{system_prompt}\n",
12
+ "user": "<s>[INST] {user_prompt} [/INST]</s>\n",
13
+ "assistant": "{assistant_prompt}"
14
+ },
15
+
16
+ "solar": {
17
+ "system": "{system_prompt}\n",
18
+ "user": "### User: {user_prompt}\n",
19
+ "assistant": "### Assistant: {assistant_prompt}"
20
+ },
21
+
22
+ "deepseek": {
23
+ "system": "{system_prompt}\n",
24
+ "user": "### Instruction: {user_prompt}\n",
25
+ "assistant": "### Response: {assistant_prompt}"
26
+ },
27
+
28
+ "qwen": {
29
+ "system": "<|im_start|>system\n{system_prompt}<|im_end|>\n",
30
+ "user": "<|im_start|>user\n{user_prompt}<|im_end|>\n",
31
+ "assistant": "<|im_start|>assistant\n{assistant_prompt}"
32
+ },
33
+
34
+ "gemma": {
35
+ "system": "{system_prompt}\n",
36
+ "user": "<start_of_turn>user\n{user_prompt}<end_of_turn>\n",
37
+ "assistant": "<start_of_turn>model\n{assistant_prompt}\n"
38
+ },
39
+
40
+ "granite": {
41
+ "system": "<|system|>\n{system_prompt}\n",
42
+ "user": "<|user|>\n{user_prompt}\n",
43
+ "assistant": "<|assistant|>\n{assistant_prompt}"
44
+ },
45
+
46
+ "phi": {
47
+ "system": "<|im_start|>system<|im_sep|>\n{system_prompt}<|im_end|>\n",
48
+ "user": "<|im_start|>user<|im_sep|>\n{user_prompt}<|im_end|>\n",
49
+ "assistant": "<|im_start|>assistant<|im_sep|>\n{assistant_prompt}"
50
+ },
51
+
52
+ "default": {
53
+ "system": "{system_prompt}",
54
+ "user": "{user_prompt}",
55
+ "assistant": "{assistant_prompt}"
56
+ }
57
+ }
58
+
59
+
60
+
61
+ stop_tokens = {
62
+ "llama": "<|eot_id|>",
63
+ "mistral": "</s>",
64
+ "qwen": "<|im_end|>",
65
+ "gemma": "<end_of_turn>",
66
+ "granite": "<|endoftext|>",
67
+ "phi": "<|im_end|>"
68
+ }
69
+
70
+
71
+ model_types = {
72
+ "solar-10.7b-instruct-v1.0.Q6_K.gguf": "solar",
73
+ "solar-10.7b-instruct-v1.0-uncensored.Q6_K.gguf": "solar",
74
+ "Mistral-7B-Instruct-v0.3.Q6_K.gguf": "mistral",
75
+ "Qwen2.5.1-Coder-7B-Instruct-Q6_K.gguf": "qwen",
76
+ "qwen2.5-3b-instruct-q4_k_m.gguf": "qwen",
77
+ "deepseek-coder-6.7b-instruct.Q6_K.gguf": "deepseek"
78
+ }
79
+
80
+ model_keywords = ["qwen", "solar", "mistral", "llama", "deepseek", "gemma", "granite", "phi"]
81
+
82
+
83
+
84
+ def get_model_type(model_path):
85
+ model_name = os.path.basename(model_path)
86
+ model_type = model_types.get(model_name)
87
+ if model_type is None:
88
+ model_type = next((keyword for keyword in model_keywords if keyword in model_name.lower()), None)
89
+ if model_type is None:
90
+ model_type = "default"
91
+ return model_type
92
+
93
+
94
+ def apply_prompt_template(model_path, user_prompt, assistant_prompt="", system_prompt=""):
95
+ """
96
+ Apply a prompt template based on the given model name and user input.
97
+
98
+ Parameters:
99
+ model_path (str): The name of the model used to determine its type.
100
+ user_prompt (str): The user input or request to embed into the prompt.
101
+ assistant_prompt (str, optional): The assistant's beginning of response, if any. Defaults to an empty string.
102
+ system_prompt (str, optional): A system-level instruction or context to include in the prompt. Defaults to an empty string.
103
+
104
+ Returns:
105
+ str: The formatted prompt that is ready to be passed to the model.
106
+ """
107
+ # Try to identify the model's type
108
+ model_type = get_model_type(model_path)
109
+ # Retrieve the template
110
+ template = prompt_templates.get(model_type, prompt_templates["default"]) # Default template if none found
111
+ # Apply the template
112
+ prompt = ""
113
+ if system_prompt is not None:
114
+ prompt += template["system"].format(system_prompt=system_prompt)
115
+ prompt += template["user"].format(user_prompt=user_prompt)
116
+ prompt += template["assistant"].format(assistant_prompt=assistant_prompt)
117
+ return prompt
118
+
119
+
120
+ def apply_system_template(model_path, system_prompt):
121
+ model_type = get_model_type(model_path)
122
+ template = prompt_templates.get(model_type, prompt_templates["default"])
123
+ return template["system"].format(system_prompt=system_prompt)
124
+
125
+ def apply_user_template(model_path, user_prompt):
126
+ model_type = get_model_type(model_path)
127
+ template = prompt_templates.get(model_type, prompt_templates["default"])
128
+ return template["user"].format(user_prompt=user_prompt)
129
+
130
+ def apply_assistant_template(model_path, assistant_prompt):
131
+ model_type = get_model_type(model_path)
132
+ template = prompt_templates.get(model_type, prompt_templates["default"])
133
+ return template["assistant"].format(assistant_prompt=assistant_prompt)
134
+
135
+
136
+ def get_stop_token(model_name):
137
+ """
138
+ Get the stop token according to the model name / type.
139
+
140
+ Parameters:
141
+ model_name (str): The name of the model used to determine its type.
142
+ """
143
+ # If there is a stop token
144
+ try:
145
+ # Get the model type
146
+ model_type = model_types[model_name]
147
+ # Get the template for the model type
148
+ stop_token = stop_tokens[model_type]
149
+ except KeyError as e:
150
+ print(f"Your model {model_name} has no stop token defined. See prompt_management.py. (detail: {e})")
151
+ return None
152
+ return stop_token
153
+
154
+
155
+
156
+
157
+
@@ -21,8 +21,11 @@ def get_ow_file_widget():
21
21
 
22
22
  # Iterate through the objects in the garbage collector
23
23
  for obj in gc.get_objects():
24
- if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
25
- le_self = obj
24
+ try:
25
+ if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
26
+ le_self = obj
27
+ except Exception as e:
28
+ print(e)
26
29
  return le_self
27
30
 
28
31
 
@@ -43,29 +46,31 @@ def get_duplicate_names(only_aait=False):
43
46
  widgets_lists = [] # List to store lists of widgets for each OWS
44
47
 
45
48
  print("Collecting all widgets for every OWS")
46
- for obj in gc.get_objects():
47
- if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
48
- ows_name = obj.current_document().path().split("/")[-1]
49
- ows_list.append(ows_name)
50
- widgets_list = []
51
-
52
- # Extract information about widgets for the current OWS
53
- item_dict = obj.scheme_widget._SchemeEditWidget__scheme.widget_manager._OWWidgetManager__item_for_node
54
- for item in item_dict.items():
55
- #widget = item[1].widget # The widget is the 2nd element of the Tuple
56
- widget_name = item[0].title
57
- # print(" OWS :", ows_name, "ID :", id(obj))
58
- # print(" Widget :", widget)
59
- # print(" Widget ID:", id(widget))
60
- # print(" Widget name:", widget_name)
61
- category = item[0].description.category
62
-
63
- # Targets only aait widgets or includes all widgets based on the 'only_aait' parameter
64
- if category[0:9] == "dev_workflow" or not only_aait:
65
- widgets_list.append(widget_name)
66
-
67
- widgets_lists.append(widgets_list)
68
-
49
+ try:
50
+ for obj in gc.get_objects():
51
+ if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
52
+ ows_name = obj.current_document().path().split("/")[-1]
53
+ ows_list.append(ows_name)
54
+ widgets_list = []
55
+
56
+ # Extract information about widgets for the current OWS
57
+ item_dict = obj.scheme_widget._SchemeEditWidget__scheme.widget_manager._OWWidgetManager__item_for_node
58
+ for item in item_dict.items():
59
+ #widget = item[1].widget # The widget is the 2nd element of the Tuple
60
+ widget_name = item[0].title
61
+ # print(" OWS :", ows_name, "ID :", id(obj))
62
+ # print(" Widget :", widget)
63
+ # print(" Widget ID:", id(widget))
64
+ # print(" Widget name:", widget_name)
65
+ category = item[0].description.category
66
+
67
+ # Targets only aait widgets or includes all widgets based on the 'only_aait' parameter
68
+ if category[0:9] == "dev_workflow" or not only_aait:
69
+ widgets_list.append(widget_name)
70
+
71
+ widgets_lists.append(widgets_list)
72
+ except Exception as e:
73
+ print(e)
69
74
  all_duplicates = [] # List to store tuples of OWS names and sets of duplicate widget names
70
75
  n_ows = len(ows_list)
71
76
 
@@ -102,24 +107,27 @@ def get_current_ows_gui(arg_self):
102
107
  # print("----> Created Widget ID :", widget_id)
103
108
 
104
109
  # Loop over ALL instantiated objects
105
- for obj in gc.get_objects():
106
- # Stop whenever a MainWindow is found (OWS)
107
- if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
108
- # Dictionary containing all the existing widgets (inside Tuples)
109
- item_dict = obj.scheme_widget._SchemeEditWidget__scheme.widget_manager._OWWidgetManager__item_for_node
110
+ try:
111
+ for obj in gc.get_objects():
112
+ # Stop whenever a MainWindow is found (OWS)
113
+ if isinstance(obj, Orange.canvas.mainwindow.MainWindow):
114
+ # Dictionary containing all the existing widgets (inside Tuples)
115
+ item_dict = obj.scheme_widget._SchemeEditWidget__scheme.widget_manager._OWWidgetManager__item_for_node
110
116
 
111
- for item in item_dict.items():
112
- # The widget (object) is the 2nd element of Tuple
113
- widget = item[1].widget
117
+ for item in item_dict.items():
118
+ # The widget (object) is the 2nd element of Tuple
119
+ widget = item[1].widget
114
120
 
115
- if id(widget) == widget_id:
116
- ows_path = obj.current_document().path()
121
+ if id(widget) == widget_id:
122
+ ows_path = obj.current_document().path()
117
123
 
118
- # If the OWS hasn't been named / saved, force save-as
119
- if not ows_path:
120
- MetManagement.force_save_as(arg_self, target_canvas_id=id(obj))
124
+ # If the OWS hasn't been named / saved, force save-as
125
+ if not ows_path:
126
+ MetManagement.force_save_as(arg_self, target_canvas_id=id(obj))
121
127
 
122
- return obj
128
+ return obj
129
+ except Exception as e:
130
+ print(e)
123
131
 
124
132
  return None
125
133
 
@@ -134,10 +142,13 @@ def get_current_ows_name_no_gui(arg_self):
134
142
  Returns:
135
143
  The name of the associated OWS or an empty string if not found.
136
144
  """
137
- for obj in gc.get_objects():
138
- if isinstance(obj, argparse.Namespace):
139
- ows_path = obj.file
140
- return ows_path
145
+ try:
146
+ for obj in gc.get_objects():
147
+ if isinstance(obj, argparse.Namespace):
148
+ ows_path = obj.file
149
+ return ows_path
150
+ except Exception as e:
151
+ print(e)
141
152
 
142
153
  return ""
143
154