aait 2.3.14.2__tar.gz → 2.3.15.1__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.
- {aait-2.3.14.2 → aait-2.3.15.1}/PKG-INFO +1 -1
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/PKG-INFO +1 -1
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/SOURCES.txt +0 -1
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/answers_llama.py +78 -7
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/MetManagement.py +1 -1
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/windows_utils.py +41 -69
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWAutoShowCreateInstance.py +16 -16
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWAutoShowTable.py +16 -16
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWConverseLLM.py +87 -16
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWFileWithPath.py +10 -9
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLLMEngine.py +4 -2
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWTrigger.py +1 -1
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +105 -29
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owedgellm.ui +12 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owgetpages.ui +3 -3
- {aait-2.3.14.2 → aait-2.3.15.1}/setup.py +1 -1
- aait-2.3.14.2/orangecontrib/AAIT/widgets/OWSplitExcelSheets.py +0 -216
- {aait-2.3.14.2 → aait-2.3.15.1}/License.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/dependency_links.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/entry_points.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/namespace_packages.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/requires.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/aait.egg-info/top_level.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/answers.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/chunking.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/embeddings.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/lemmes.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/process_documents.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/llm/translations.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/OperationSystem.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/aait_table_viewer.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/base_widget.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/import_uic.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/thread_management.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/unlink_table_domain.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/utils/widget_positioning.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWAccumulator.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWGetPages.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWKeywords.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLargeLanguageModel.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWLoadDocuments.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Embeddings.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWOperationSystem.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWQuadrantclicker.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWSortAndSelect.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/ow_OperationSystem.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owaccumulator.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owexecutescript_TEST.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owlargelanguagemodel.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owllm4all.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owloaddocuments.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_embeddings.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owquadrant_clicker.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owsortandselect.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owsplitexcelsheets.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/CreateInstance.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/Table.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/blue_down_arrow.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/book.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/edge_llm.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/green_check.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/operationSystem.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owaccumulator.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owlargelanguagemodel.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owloaddocuments.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_embeddings.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owsortandselect.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/quadrantclicker.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/orangecontrib/__init__.py +0 -0
- {aait-2.3.14.2 → aait-2.3.15.1}/setup.cfg +0 -0
|
@@ -112,7 +112,6 @@ orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py
|
|
|
112
112
|
orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py
|
|
113
113
|
orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py
|
|
114
114
|
orangecontrib/AAIT/widgets/OWSortAndSelect.py
|
|
115
|
-
orangecontrib/AAIT/widgets/OWSplitExcelSheets.py
|
|
116
115
|
orangecontrib/AAIT/widgets/OWStartLoop.py
|
|
117
116
|
orangecontrib/AAIT/widgets/OWTable2Corpus.py
|
|
118
117
|
orangecontrib/AAIT/widgets/OWTranslation.py
|
|
@@ -413,7 +413,16 @@ def generate_conversation(table, model, conversation=None, n_ctx=32768, query_pa
|
|
|
413
413
|
conversation.append({"role": "user", "content": user_prompt})
|
|
414
414
|
|
|
415
415
|
# Generate the answer
|
|
416
|
-
answer = run_query(prompt,
|
|
416
|
+
answer = run_query(prompt,
|
|
417
|
+
model=model,
|
|
418
|
+
max_tokens=query_parameters["max_tokens"],
|
|
419
|
+
temperature=query_parameters["temperature"],
|
|
420
|
+
top_p=query_parameters["top_p"],
|
|
421
|
+
top_k=query_parameters["top_k"],
|
|
422
|
+
repeat_penalty=query_parameters["repeat_penalty"],
|
|
423
|
+
workflow_id=workflow_id,
|
|
424
|
+
argself=argself,
|
|
425
|
+
progress_callback=progress_callback)
|
|
417
426
|
|
|
418
427
|
# Split the thinking block and remove it from the answer
|
|
419
428
|
think_text, final_answer = split_think(answer=answer)
|
|
@@ -511,6 +520,9 @@ def run_Qwen3VL_query(query, image_paths, model, system_prompt=" ", progress_cal
|
|
|
511
520
|
image_messages = []
|
|
512
521
|
for image_path in image_paths:
|
|
513
522
|
data_uri = convert_to_uri(image_path)
|
|
523
|
+
if not data_uri.startswith("data"):
|
|
524
|
+
progress_callback(("error", data_uri))
|
|
525
|
+
return "The image could not be processed"
|
|
514
526
|
image_messages.append({"type": "image_url", "image_url": {"url": data_uri}})
|
|
515
527
|
image_messages.append({"type": "text", "text": query})
|
|
516
528
|
|
|
@@ -533,11 +545,70 @@ def run_Qwen3VL_query(query, image_paths, model, system_prompt=" ", progress_cal
|
|
|
533
545
|
|
|
534
546
|
|
|
535
547
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
548
|
+
_IMAGE_MIME_TYPES = {
|
|
549
|
+
# Most common formats
|
|
550
|
+
'.png': 'image/png',
|
|
551
|
+
'.jpg': 'image/jpeg',
|
|
552
|
+
'.jpeg': 'image/jpeg',
|
|
553
|
+
'.gif': 'image/gif',
|
|
554
|
+
'.webp': 'image/webp',
|
|
555
|
+
'.svg': 'image/svg+xml',
|
|
556
|
+
'.svgz': 'image/svg+xml',
|
|
557
|
+
|
|
558
|
+
# Next-generation formats
|
|
559
|
+
'.avif': 'image/avif',
|
|
560
|
+
'.heic': 'image/heic',
|
|
561
|
+
'.heif': 'image/heif',
|
|
562
|
+
'.heics': 'image/heic-sequence',
|
|
563
|
+
'.heifs': 'image/heif-sequence',
|
|
564
|
+
|
|
565
|
+
# Legacy / Windows formats
|
|
566
|
+
'.bmp': 'image/bmp',
|
|
567
|
+
'.dib': 'image/bmp',
|
|
568
|
+
'.ico': 'image/x-icon',
|
|
569
|
+
'.cur': 'image/x-icon',
|
|
570
|
+
|
|
571
|
+
# Professional imaging
|
|
572
|
+
'.tif': 'image/tiff',
|
|
573
|
+
'.tiff': 'image/tiff',
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
def convert_to_uri(
|
|
577
|
+
file_path: str,
|
|
578
|
+
fallback_mime: str = "image/png" #"application/octet-stream"
|
|
579
|
+
) -> str:
|
|
580
|
+
"""
|
|
581
|
+
Convert a local image file to a base64-encoded data URI with the correct MIME type.
|
|
582
|
+
|
|
583
|
+
Supports 20+ image formats (PNG, JPEG, WebP, AVIF, HEIC, SVG, BMP, ICO, TIFF, etc.).
|
|
584
|
+
|
|
585
|
+
Args:
|
|
586
|
+
file_path: Path to the image file on disk.
|
|
587
|
+
fallback_mime: MIME type used when the file extension is unknown.
|
|
588
|
+
|
|
589
|
+
Returns:
|
|
590
|
+
A valid data URI string (e.g., data:image/webp;base64,...).
|
|
591
|
+
|
|
592
|
+
Raises:
|
|
593
|
+
FileNotFoundError: If the file does not exist.
|
|
594
|
+
OSError: If reading the file fails.
|
|
595
|
+
"""
|
|
596
|
+
if not os.path.isfile(file_path):
|
|
597
|
+
return f"Image file not found: {file_path}"
|
|
598
|
+
|
|
599
|
+
extension = os.path.splitext(file_path)[1].lower()
|
|
600
|
+
mime_type = _IMAGE_MIME_TYPES.get(extension, fallback_mime)
|
|
601
|
+
|
|
602
|
+
if mime_type == fallback_mime:
|
|
603
|
+
print(f"Warning: Unknown extension '{extension}' for '{file_path}'. "
|
|
604
|
+
f"Using fallback MIME type: {fallback_mime}")
|
|
605
|
+
|
|
606
|
+
try:
|
|
607
|
+
with open(file_path, "rb") as img_file:
|
|
608
|
+
encoded_data = base64.b64encode(img_file.read()).decode("utf-8")
|
|
609
|
+
except Exception as e:
|
|
610
|
+
return f"Failed to read image file '{file_path}': {e}"
|
|
611
|
+
|
|
612
|
+
return f"data:{mime_type};base64,{encoded_data}"
|
|
542
613
|
|
|
543
614
|
|
|
@@ -1366,7 +1366,7 @@ def get_path_mailFolder():
|
|
|
1366
1366
|
|
|
1367
1367
|
def get_secret_content_dir():
|
|
1368
1368
|
aait_path = get_local_store_path()
|
|
1369
|
-
the_path=aait_path+"
|
|
1369
|
+
the_path=aait_path+"keys/"
|
|
1370
1370
|
if not os.path.exists(the_path):
|
|
1371
1371
|
os.makedirs(the_path)
|
|
1372
1372
|
return the_path
|
|
@@ -154,54 +154,51 @@ if os.name=='nt':
|
|
|
154
154
|
import ctypes
|
|
155
155
|
import ctypes.wintypes
|
|
156
156
|
|
|
157
|
+
# --- Déclarer UNE SEULE FOIS au niveau module (pas dans la fonction) ---
|
|
158
|
+
user32 = ctypes.windll.user32
|
|
159
|
+
comdlg32 = ctypes.windll.comdlg32
|
|
157
160
|
|
|
158
|
-
|
|
159
|
-
"""
|
|
160
|
-
Opens a native Windows file selection dialog with enforced modal-like behavior.
|
|
161
|
+
EnumWindowsProc = ctypes.WINFUNCTYPE(wt.BOOL, wt.HWND, wt.LPARAM)
|
|
161
162
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
# Définir la signature de EnumWindows UNE SEULE FOIS
|
|
164
|
+
user32.EnumWindows.argtypes = (EnumWindowsProc, wt.LPARAM)
|
|
165
|
+
user32.EnumWindows.restype = wt.BOOL
|
|
165
166
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
"""
|
|
167
|
+
|
|
168
|
+
def select_file_ctypes(multi_select=False, file_filter="All Files (*.*)", dialog_title="Select File(s)"):
|
|
169
169
|
OFN_ALLOWMULTISELECT = 0x00000200
|
|
170
170
|
OFN_EXPLORER = 0x00080000
|
|
171
171
|
OFN_FILEMUSTEXIST = 0x00001000
|
|
172
|
-
MAX_PATH = 65536
|
|
172
|
+
MAX_PATH = 65536
|
|
173
173
|
|
|
174
174
|
class OPENFILENAME(ctypes.Structure):
|
|
175
175
|
_fields_ = [
|
|
176
|
-
("lStructSize",
|
|
177
|
-
("hwndOwner",
|
|
178
|
-
("hInstance",
|
|
176
|
+
("lStructSize", wt.DWORD),
|
|
177
|
+
("hwndOwner", wt.HWND),
|
|
178
|
+
("hInstance", wt.HINSTANCE),
|
|
179
179
|
("lpstrFilter", ctypes.c_wchar_p),
|
|
180
180
|
("lpstrCustomFilter", ctypes.c_wchar_p),
|
|
181
|
-
("nMaxCustFilter",
|
|
182
|
-
("nFilterIndex",
|
|
181
|
+
("nMaxCustFilter", wt.DWORD),
|
|
182
|
+
("nFilterIndex", wt.DWORD),
|
|
183
183
|
("lpstrFile", ctypes.c_wchar_p),
|
|
184
|
-
("nMaxFile",
|
|
184
|
+
("nMaxFile", wt.DWORD),
|
|
185
185
|
("lpstrFileTitle", ctypes.c_wchar_p),
|
|
186
|
-
("nMaxFileTitle",
|
|
186
|
+
("nMaxFileTitle", wt.DWORD),
|
|
187
187
|
("lpstrInitialDir", ctypes.c_wchar_p),
|
|
188
188
|
("lpstrTitle", ctypes.c_wchar_p),
|
|
189
|
-
("Flags",
|
|
190
|
-
("nFileOffset",
|
|
191
|
-
("nFileExtension",
|
|
189
|
+
("Flags", wt.DWORD),
|
|
190
|
+
("nFileOffset", wt.WORD),
|
|
191
|
+
("nFileExtension", wt.WORD),
|
|
192
192
|
("lpstrDefExt", ctypes.c_wchar_p),
|
|
193
|
-
("lCustData",
|
|
193
|
+
("lCustData", wt.LPARAM),
|
|
194
194
|
("lpfnHook", ctypes.c_void_p),
|
|
195
195
|
("lpTemplateName", ctypes.c_wchar_p),
|
|
196
196
|
("pvReserved", ctypes.c_void_p),
|
|
197
|
-
("dwReserved",
|
|
198
|
-
("FlagsEx",
|
|
197
|
+
("dwReserved", wt.DWORD),
|
|
198
|
+
("FlagsEx", wt.DWORD),
|
|
199
199
|
]
|
|
200
200
|
|
|
201
|
-
|
|
202
|
-
comdlg32 = ctypes.windll.comdlg32
|
|
203
|
-
|
|
204
|
-
# Create filter string (must be null-separated and end with double null)
|
|
201
|
+
# Filter string Windows: \0 séparateurs + double \0 final
|
|
205
202
|
if "(" in file_filter and ")" in file_filter:
|
|
206
203
|
description = file_filter.split("(")[0].strip()
|
|
207
204
|
pattern = file_filter[file_filter.find("(") + 1:file_filter.find(")")]
|
|
@@ -210,7 +207,6 @@ if os.name=='nt':
|
|
|
210
207
|
pattern = "*.*"
|
|
211
208
|
filter_combined = f"{description}\0{pattern}\0All Files\0*.*\0\0"
|
|
212
209
|
|
|
213
|
-
# Prepare buffer
|
|
214
210
|
file_buffer = ctypes.create_unicode_buffer(MAX_PATH)
|
|
215
211
|
|
|
216
212
|
ofn = OPENFILENAME()
|
|
@@ -224,68 +220,44 @@ if os.name=='nt':
|
|
|
224
220
|
if multi_select:
|
|
225
221
|
ofn.Flags |= OFN_ALLOWMULTISELECT
|
|
226
222
|
|
|
227
|
-
# Avant
|
|
223
|
+
# --- Avant ouverture : liste des HWND ---
|
|
228
224
|
hwnd_list_before = []
|
|
229
225
|
|
|
230
|
-
def
|
|
226
|
+
def _enum_before(hwnd, lParam):
|
|
231
227
|
hwnd_list_before.append(hwnd)
|
|
232
228
|
return True
|
|
233
229
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
EnumWindows(EnumWindowsProc(enum_windows_proc), 0)
|
|
230
|
+
cb_before = EnumWindowsProc(_enum_before) # garder une référence !
|
|
231
|
+
user32.EnumWindows(cb_before, 0)
|
|
237
232
|
|
|
238
|
-
# Ouvre la boîte
|
|
233
|
+
# --- Ouvre la boîte ---
|
|
239
234
|
if not comdlg32.GetOpenFileNameW(ctypes.byref(ofn)):
|
|
240
|
-
return ""
|
|
235
|
+
return ""
|
|
241
236
|
|
|
242
237
|
time.sleep(0.1)
|
|
243
238
|
|
|
244
|
-
# Après ouverture
|
|
239
|
+
# --- Après ouverture : liste des HWND ---
|
|
245
240
|
hwnd_list_after = []
|
|
246
|
-
EnumWindows(EnumWindowsProc(lambda hwnd, lParam: hwnd_list_after.append(hwnd) or True), 0)
|
|
247
241
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
target_phrase = (dialog_title or "Select").lower()
|
|
252
|
-
for hwnd in new_hwnds:
|
|
253
|
-
length = user32.GetWindowTextLengthW(hwnd)
|
|
254
|
-
if length > 0:
|
|
255
|
-
window_title = ctypes.create_unicode_buffer(length + 1)
|
|
256
|
-
user32.GetWindowTextW(hwnd, window_title, length + 1)
|
|
257
|
-
if target_phrase in window_title.value.lower():
|
|
258
|
-
selector_hwnd = hwnd
|
|
259
|
-
break
|
|
242
|
+
def _enum_after(hwnd, lParam):
|
|
243
|
+
hwnd_list_after.append(hwnd)
|
|
244
|
+
return True
|
|
260
245
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
return
|
|
264
|
-
while user32.IsWindow(hwnd):
|
|
265
|
-
user32.SetForegroundWindow(hwnd)
|
|
266
|
-
user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0,
|
|
267
|
-
0x0002 | 0x0001 | 0x0040) # SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW
|
|
268
|
-
time.sleep(0.2)
|
|
246
|
+
cb_after = EnumWindowsProc(_enum_after) # garder une référence !
|
|
247
|
+
user32.EnumWindows(cb_after, 0)
|
|
269
248
|
|
|
270
|
-
|
|
271
|
-
threading.Thread(target=enforce_modal, args=(selector_hwnd,), daemon=True).start()
|
|
249
|
+
new_hwnds = list(set(hwnd_list_after) - set(hwnd_list_before))
|
|
272
250
|
|
|
273
|
-
#
|
|
251
|
+
# ... le reste de ton code (détection de la fenêtre, thread enforce_modal, parsing buffer) ...
|
|
274
252
|
buffer_content = ctypes.wstring_at(ctypes.addressof(file_buffer), file_buffer._length_)
|
|
253
|
+
parts = [p.replace("\\", "/") for p in buffer_content.split("\0") if p]
|
|
275
254
|
|
|
276
|
-
# Split sur \0
|
|
277
|
-
parts = buffer_content.split('\0')
|
|
278
|
-
parts = [p.replace("\\", "/") for p in parts if p]
|
|
279
255
|
if multi_select:
|
|
280
256
|
if len(parts) >= 2:
|
|
281
257
|
folder = parts[0]
|
|
282
258
|
files = parts[1:]
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
elif len(parts) == 1:
|
|
286
|
-
return parts[0]
|
|
287
|
-
else:
|
|
288
|
-
return ""
|
|
259
|
+
return "//////".join([f"{folder}/{f}" for f in files])
|
|
260
|
+
return parts[0] if parts else ""
|
|
289
261
|
else:
|
|
290
262
|
return parts[0] if parts else ""
|
|
291
263
|
|
|
@@ -479,33 +479,33 @@ class VariableItemModel(QStandardItemModel):
|
|
|
479
479
|
|
|
480
480
|
class OWCreateInstance(OWWidget):
|
|
481
481
|
name = "Auto show Create Instance"
|
|
482
|
-
description =
|
|
482
|
+
description = "Interactively create a data instance from sample dataset."
|
|
483
483
|
icon = "icons/CreateInstance.svg"
|
|
484
484
|
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
485
485
|
icon = "icons_dev/CreateInstance.svg"
|
|
486
|
-
category =
|
|
487
|
-
keywords =
|
|
486
|
+
category = "Transform"
|
|
487
|
+
keywords = "create instance, simulator"
|
|
488
488
|
priority = 2310
|
|
489
489
|
|
|
490
490
|
class Inputs:
|
|
491
|
-
data = Input(
|
|
492
|
-
reference = Input(
|
|
491
|
+
data = Input( "Data", Table)
|
|
492
|
+
reference = Input("Reference", Table)
|
|
493
493
|
input_autoshow = Input("AutoShowConfiguration", str, auto_summary=False)
|
|
494
494
|
|
|
495
495
|
|
|
496
496
|
class Outputs:
|
|
497
|
-
data = Output(
|
|
497
|
+
data = Output("Data", Table)
|
|
498
498
|
|
|
499
499
|
class Information(OWWidget.Information):
|
|
500
|
-
nans_removed = Msg((
|
|
500
|
+
nans_removed = Msg(("Variables with only missing values were " +"removed from the list."))
|
|
501
501
|
|
|
502
502
|
str_WidgetPositionning: str=Setting("None")
|
|
503
503
|
|
|
504
504
|
want_main_area = False
|
|
505
|
-
BUTTONS = [
|
|
505
|
+
BUTTONS = ["Median", "Mean", "Random", "Input"]
|
|
506
506
|
ACTIONS = ["median", "mean", "random", "input"]
|
|
507
|
-
HEADER = [["name",
|
|
508
|
-
["variable",
|
|
507
|
+
HEADER = [["name", "Variable"],
|
|
508
|
+
["variable", "Value"]]
|
|
509
509
|
Header = namedtuple(
|
|
510
510
|
"header", [tag for tag, _ in HEADER]
|
|
511
511
|
)(*range(len(HEADER)))
|
|
@@ -557,7 +557,7 @@ class OWCreateInstance(OWWidget):
|
|
|
557
557
|
gui.rubber(box)
|
|
558
558
|
|
|
559
559
|
gui.checkBox(self.buttonsArea, self, "append_to_data",
|
|
560
|
-
|
|
560
|
+
"Append this instance to input data",
|
|
561
561
|
callback=self.commit.deferred)
|
|
562
562
|
gui.rubber(self.buttonsArea)
|
|
563
563
|
gui.auto_apply(self.buttonsArea, self, "auto_commit")
|
|
@@ -674,7 +674,7 @@ class OWCreateInstance(OWWidget):
|
|
|
674
674
|
def _create_data_from_values(self) -> Table:
|
|
675
675
|
data = Table.from_domain(self.data.domain, 1)
|
|
676
676
|
with data.unlocked():
|
|
677
|
-
data.name =
|
|
677
|
+
data.name = "created"
|
|
678
678
|
if data.X.size:
|
|
679
679
|
data.X[:] = np.nan
|
|
680
680
|
if data.Y.size:
|
|
@@ -703,7 +703,7 @@ class OWCreateInstance(OWWidget):
|
|
|
703
703
|
part[-1, idx] = 1
|
|
704
704
|
return data
|
|
705
705
|
|
|
706
|
-
name = get_unique_names(self.data.domain,
|
|
706
|
+
name = get_unique_names(self.data.domain, "Source ID")
|
|
707
707
|
var = DiscreteVariable(name, values=(self.data.name, instance.name))
|
|
708
708
|
var.attributes[source_label] = OWCreateInstance
|
|
709
709
|
domain = Domain(domain.attributes, domain.class_vars,
|
|
@@ -725,8 +725,8 @@ class OWCreateInstance(OWWidget):
|
|
|
725
725
|
def send_report(self):
|
|
726
726
|
if not self.data:
|
|
727
727
|
return
|
|
728
|
-
self.report_domain(
|
|
729
|
-
self.report_domain(
|
|
728
|
+
self.report_domain("Input", self.data.domain)
|
|
729
|
+
self.report_domain("Output", self.data.domain)
|
|
730
730
|
items = []
|
|
731
731
|
values: Dict = self._get_values()
|
|
732
732
|
for var in self.data.domain.variables + self.data.domain.metas:
|
|
@@ -734,7 +734,7 @@ class OWCreateInstance(OWWidget):
|
|
|
734
734
|
if var.is_primitive():
|
|
735
735
|
val = var.repr_val(val)
|
|
736
736
|
items.append([f"{var.name}:", val])
|
|
737
|
-
self.report_table(
|
|
737
|
+
self.report_table( "Values", items)
|
|
738
738
|
|
|
739
739
|
@staticmethod
|
|
740
740
|
def sizeHint():
|
|
@@ -183,29 +183,29 @@ _Sorting = List[Tuple[str, int]]
|
|
|
183
183
|
|
|
184
184
|
class OWTable(OWWidget):
|
|
185
185
|
name = "Autoshow Data Table"
|
|
186
|
-
description =
|
|
186
|
+
description = "View the dataset in a spreadsheet."
|
|
187
187
|
icon = "icons/Table.svg"
|
|
188
188
|
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
189
189
|
icon = "icons_dev/Table.svg"
|
|
190
190
|
category = "AAIT - TOOLBOX"
|
|
191
191
|
priority = 50
|
|
192
|
-
keywords =
|
|
192
|
+
keywords = "data table, view"
|
|
193
193
|
|
|
194
194
|
class Inputs:
|
|
195
|
-
data = Input(
|
|
196
|
-
data_subset = Input(
|
|
195
|
+
data = Input("Data", Table, default=True)
|
|
196
|
+
data_subset = Input("Data Subset", Table)
|
|
197
197
|
input_autoshow = Input("AutoShowConfiguration", str, auto_summary=False)
|
|
198
198
|
|
|
199
199
|
class Outputs:
|
|
200
|
-
selected_data = Output(
|
|
200
|
+
selected_data = Output("Selected Data", Table, default=True)
|
|
201
201
|
annotated_data = Output(ANNOTATED_DATA_SIGNAL_NAME, Table)
|
|
202
202
|
|
|
203
203
|
class Warning(OWWidget.Warning):
|
|
204
204
|
missing_sort_columns = Msg(
|
|
205
|
-
(
|
|
205
|
+
( "Cannot restore sorting.\n" + "Missing columns in input table: {}")
|
|
206
206
|
)
|
|
207
207
|
non_sortable_input = Msg(
|
|
208
|
-
(
|
|
208
|
+
( "Cannot restore sorting.\n" + "Input table cannot be sorted due to implementation constraints.")
|
|
209
209
|
)
|
|
210
210
|
|
|
211
211
|
str_WidgetPositionning: str=Setting("None")
|
|
@@ -238,28 +238,28 @@ class OWTable(OWWidget):
|
|
|
238
238
|
info_box = gui.vBox(self.controlArea, "Info")
|
|
239
239
|
self.info_text = gui.widgetLabel(info_box)
|
|
240
240
|
|
|
241
|
-
box = gui.vBox(self.controlArea,
|
|
241
|
+
box = gui.vBox(self.controlArea, "Variables")
|
|
242
242
|
self.c_show_attribute_labels = gui.checkBox(
|
|
243
243
|
box, self, "show_attribute_labels",
|
|
244
|
-
|
|
244
|
+
"Show variable labels (if present)",
|
|
245
245
|
callback=self._update_variable_labels)
|
|
246
246
|
|
|
247
247
|
gui.checkBox(box, self, "show_distributions",
|
|
248
|
-
|
|
248
|
+
'Visualize numeric values',
|
|
249
249
|
callback=self._on_distribution_color_changed)
|
|
250
|
-
gui.checkBox(box, self, "color_by_class",
|
|
250
|
+
gui.checkBox(box, self, "color_by_class", 'Color by instance classes',
|
|
251
251
|
callback=self._on_distribution_color_changed)
|
|
252
252
|
|
|
253
|
-
box = gui.vBox(self.controlArea,
|
|
253
|
+
box = gui.vBox(self.controlArea, "Selection")
|
|
254
254
|
|
|
255
|
-
gui.checkBox(box, self, "select_rows",
|
|
255
|
+
gui.checkBox(box, self, "select_rows", "Select full rows",
|
|
256
256
|
callback=self._on_select_rows_changed)
|
|
257
257
|
|
|
258
258
|
gui.rubber(self.controlArea)
|
|
259
259
|
|
|
260
|
-
gui.button(self.buttonsArea, self,
|
|
260
|
+
gui.button(self.buttonsArea, self, "Restore Original Order",
|
|
261
261
|
callback=self.restore_order,
|
|
262
|
-
tooltip=
|
|
262
|
+
tooltip="Show rows in the original order",
|
|
263
263
|
autoDefault=False,
|
|
264
264
|
attribute=Qt.WA_LayoutUsesWidgetRect)
|
|
265
265
|
gui.auto_send(self.buttonsArea, self, "auto_commit")
|
|
@@ -417,7 +417,7 @@ class OWTable(OWWidget):
|
|
|
417
417
|
self.info.set_input_summary(summary, details)
|
|
418
418
|
|
|
419
419
|
if self.input is None:
|
|
420
|
-
summary = [
|
|
420
|
+
summary = [ "No data."]
|
|
421
421
|
else:
|
|
422
422
|
summary = tsummary.format_summary(self.input.summary)
|
|
423
423
|
self.info_text.setText("\n".join(summary))
|
|
@@ -2,7 +2,7 @@ import os
|
|
|
2
2
|
import sys
|
|
3
3
|
|
|
4
4
|
import Orange.data
|
|
5
|
-
from AnyQt.QtWidgets import QApplication, QLabel, QWidget, QScrollArea, QLineEdit, QHBoxLayout, QVBoxLayout
|
|
5
|
+
from AnyQt.QtWidgets import QApplication, QLabel, QWidget, QScrollArea, QLineEdit, QHBoxLayout, QVBoxLayout, QDoubleSpinBox, QSpinBox
|
|
6
6
|
from AnyQt.QtCore import Qt
|
|
7
7
|
from Orange.widgets import widget
|
|
8
8
|
from Orange.widgets.utils.signals import Input, Output
|
|
@@ -40,6 +40,15 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
40
40
|
data = Output("Data", Orange.data.Table)
|
|
41
41
|
|
|
42
42
|
n_ctx: str = Setting("32768")
|
|
43
|
+
workflow_id = Setting("")
|
|
44
|
+
|
|
45
|
+
max_tokens = Setting(0)
|
|
46
|
+
temperature = Setting(0.4)
|
|
47
|
+
top_p = Setting(0.4)
|
|
48
|
+
top_k = Setting(40)
|
|
49
|
+
repeat_penalty = Setting(1.15)
|
|
50
|
+
k_cache = Setting(0)
|
|
51
|
+
v_cache = Setting(0)
|
|
43
52
|
|
|
44
53
|
@Inputs.data
|
|
45
54
|
def set_data(self, in_data):
|
|
@@ -55,7 +64,7 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
55
64
|
self.model_path = in_model_path
|
|
56
65
|
# Reset everything when changing model
|
|
57
66
|
self.conversation = []
|
|
58
|
-
|
|
67
|
+
self.clear_chat_area() # TODO render Qt UI
|
|
59
68
|
|
|
60
69
|
# If there is already a model
|
|
61
70
|
if self.model is not None:
|
|
@@ -86,10 +95,21 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
86
95
|
self.lineEdit_n_ctx = self.findChild(QLineEdit, "lineEdit")
|
|
87
96
|
self.lineEdit_n_ctx.setText(str(self.n_ctx))
|
|
88
97
|
self.lineEdit_n_ctx.editingFinished.connect(self.update_n_ctx)
|
|
89
|
-
#
|
|
90
|
-
self.
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
# Context cache
|
|
99
|
+
self.comboKCache.setCurrentIndex(self.k_cache)
|
|
100
|
+
self.comboVCache.setCurrentIndex(self.v_cache)
|
|
101
|
+
self.comboKCache.currentIndexChanged.connect(self.update_cache)
|
|
102
|
+
self.comboVCache.currentIndexChanged.connect(self.update_cache)
|
|
103
|
+
# Workflow ID for streaming
|
|
104
|
+
self.edit_ID = self.findChild(QLineEdit, 'lineEdit_2')
|
|
105
|
+
self.edit_ID.setText(self.workflow_id)
|
|
106
|
+
self.edit_ID.editingFinished.connect(self.update_workflow_id)
|
|
107
|
+
# SpinBoxes
|
|
108
|
+
self.edit_max_tokens = self.bind_spinbox("boxMaxTokens", self.max_tokens)
|
|
109
|
+
self.edit_temperature = self.bind_spinbox("boxTemperature", self.temperature, is_double=True)
|
|
110
|
+
self.edit_top_p = self.bind_spinbox("boxTopP", self.top_p, is_double=True)
|
|
111
|
+
self.edit_top_k = self.bind_spinbox("boxTopK", self.top_k)
|
|
112
|
+
self.edit_repeat_penalty = self.bind_spinbox("boxRepeatPenalty", self.repeat_penalty, is_double=True)
|
|
93
113
|
# Chat display
|
|
94
114
|
self.scrollArea_display = self.findChild(QScrollArea, "scrollArea")
|
|
95
115
|
self.scrollArea_display.setWidgetResizable(True)
|
|
@@ -97,9 +117,7 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
97
117
|
self.vLayout_display = QVBoxLayout(self.widget_display)
|
|
98
118
|
self.vLayout_display.addStretch()
|
|
99
119
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
# # Data Management
|
|
120
|
+
# Data Management
|
|
103
121
|
self.data = None
|
|
104
122
|
self.model = None
|
|
105
123
|
self.model_path = None
|
|
@@ -116,9 +134,36 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
116
134
|
self.post_initialized()
|
|
117
135
|
|
|
118
136
|
def update_n_ctx(self):
|
|
119
|
-
value = self.lineEdit_n_ctx.text()
|
|
120
|
-
self.n_ctx = value if value.isdigit() else "32768"
|
|
121
|
-
# answers.check_gpu(self.model_path, self)
|
|
137
|
+
value = self.lineEdit_n_ctx.text()
|
|
138
|
+
self.n_ctx = value if value.isdigit() else "32768"
|
|
139
|
+
# answers.check_gpu(self.model_path, self) # TODO reload model
|
|
140
|
+
|
|
141
|
+
def update_cache(self):
|
|
142
|
+
self.k_cache = self.comboKCache.currentIndex()
|
|
143
|
+
self.v_cache = self.comboVCache.currentIndex()
|
|
144
|
+
|
|
145
|
+
def update_workflow_id(self):
|
|
146
|
+
self.workflow_id = self.edit_ID.text()
|
|
147
|
+
|
|
148
|
+
def bind_spinbox(self, name, value, is_double=False):
|
|
149
|
+
widget_type = QDoubleSpinBox if is_double else QSpinBox
|
|
150
|
+
box = self.findChild(widget_type, name)
|
|
151
|
+
box.setValue(value)
|
|
152
|
+
box.editingFinished.connect(self.update_parameters)
|
|
153
|
+
return box
|
|
154
|
+
|
|
155
|
+
def update_parameters(self):
|
|
156
|
+
self.max_tokens = self.edit_max_tokens.value()
|
|
157
|
+
self.temperature = self.edit_temperature.value()
|
|
158
|
+
self.top_p = self.edit_top_p.value()
|
|
159
|
+
self.top_k = self.edit_top_k.value()
|
|
160
|
+
self.repeat_penalty = self.edit_repeat_penalty.value()
|
|
161
|
+
print("Updated parameters:")
|
|
162
|
+
print(f" Max tokens : {self.max_tokens}")
|
|
163
|
+
print(f" Temperature : {self.temperature}")
|
|
164
|
+
print(f" Top P : {self.top_p}")
|
|
165
|
+
print(f" Top K : {self.top_k}")
|
|
166
|
+
print(f" Repeat penalty : {self.repeat_penalty}")
|
|
122
167
|
|
|
123
168
|
def run(self):
|
|
124
169
|
# Clear error & warning
|
|
@@ -143,6 +188,16 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
143
188
|
self.Outputs.data.send(None)
|
|
144
189
|
return
|
|
145
190
|
|
|
191
|
+
query_parameters = {
|
|
192
|
+
"max_tokens": self.max_tokens,
|
|
193
|
+
"temperature": self.temperature,
|
|
194
|
+
"top_p": self.top_p,
|
|
195
|
+
"top_k": self.top_k,
|
|
196
|
+
"repeat_penalty": self.repeat_penalty,
|
|
197
|
+
"k_cache": self.k_cache,
|
|
198
|
+
"v_cache": self.v_cache
|
|
199
|
+
}
|
|
200
|
+
|
|
146
201
|
# Start progress bar
|
|
147
202
|
self.progressBarInit()
|
|
148
203
|
|
|
@@ -150,7 +205,7 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
150
205
|
# --> progress is used in the main function to track progress (with a callback)
|
|
151
206
|
# --> result is used to collect the result from main function
|
|
152
207
|
# --> finish is just an empty signal to indicate that the thread is finished
|
|
153
|
-
self.thread = thread_management.Thread(answers_llama.generate_conversation, self.data, self.model, self.conversation, int(self.n_ctx))
|
|
208
|
+
self.thread = thread_management.Thread(answers_llama.generate_conversation, self.data, self.model, self.conversation, int(self.n_ctx), query_parameters, self.workflow_id)
|
|
154
209
|
self.thread.progress.connect(self.handle_progress)
|
|
155
210
|
self.thread.result.connect(self.handle_result)
|
|
156
211
|
self.thread.finish.connect(self.handle_finish)
|
|
@@ -181,9 +236,9 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
181
236
|
|
|
182
237
|
def handle_result(self, result):
|
|
183
238
|
try:
|
|
184
|
-
self.
|
|
239
|
+
self.result = result[0]
|
|
185
240
|
self.conversation = result[1]
|
|
186
|
-
self.Outputs.data.send(self.
|
|
241
|
+
self.Outputs.data.send(self.result)
|
|
187
242
|
except Exception as e:
|
|
188
243
|
print("An error occurred when sending out_data:", e)
|
|
189
244
|
self.Outputs.data.send(None)
|
|
@@ -211,7 +266,23 @@ class OWConverseLLM(widget.OWWidget):
|
|
|
211
266
|
def scroll_to_bottom(self):
|
|
212
267
|
self.scrollArea_display.verticalScrollBar().setValue(self.scrollArea_display.verticalScrollBar().maximum())
|
|
213
268
|
|
|
214
|
-
|
|
269
|
+
# UI # TODO à tester
|
|
270
|
+
def clear_chat_area(self):
|
|
271
|
+
"""
|
|
272
|
+
Supprime uniquement les cartes de message sans casser le layout.
|
|
273
|
+
"""
|
|
274
|
+
for i in reversed(range(self.vLayout_display.count())):
|
|
275
|
+
item = self.vLayout_display.itemAt(i)
|
|
276
|
+
widget = item.widget()
|
|
277
|
+
|
|
278
|
+
# On ne supprime que les widgets qui sont des cartes
|
|
279
|
+
if isinstance(widget, (UserMessageCard, AssistantMessageCard)):
|
|
280
|
+
widget.setParent(None) # Détache du layout
|
|
281
|
+
widget.deleteLater() # Supprime de la mémoire
|
|
282
|
+
elif widget is None and item.spacerItem():
|
|
283
|
+
# Optionnel : si tu veux garder ton "ressort" du bas,
|
|
284
|
+
# ne fais rien ici.
|
|
285
|
+
pass
|
|
215
286
|
|
|
216
287
|
|
|
217
288
|
|