iatoolkit 0.108.1__tar.gz → 1.10.0__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.
- {iatoolkit-0.108.1/src/iatoolkit.egg-info → iatoolkit-1.10.0}/PKG-INFO +1 -1
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/__init__.py +3 -3
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/interfaces/database_provider.py +13 -8
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/routes.py +52 -6
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/util.py +21 -1
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/core.py +2 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +1 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/s3_connector.py +4 -2
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/locales/en.yaml +150 -3
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/locales/es.yaml +148 -5
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/database_manager.py +27 -47
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/document_repo.py +7 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/llm_query_repo.py +29 -7
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/models.py +59 -4
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/profile_repo.py +3 -4
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/vs_repo.py +22 -24
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/company_context_service.py +44 -20
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/configuration_service.py +244 -75
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/dispatcher_service.py +0 -3
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/file_processor_service.py +0 -5
- iatoolkit-1.10.0/src/iatoolkit/services/knowledge_base_service.py +447 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/load_documents_service.py +26 -48
- iatoolkit-1.10.0/src/iatoolkit/services/prompt_service.py +539 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/sql_service.py +17 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/chat.html +3 -2
- iatoolkit-1.10.0/src/iatoolkit/views/categories_api_view.py +111 -0
- iatoolkit-1.10.0/src/iatoolkit/views/configuration_api_view.py +163 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/load_document_api_view.py +14 -10
- iatoolkit-1.10.0/src/iatoolkit/views/prompt_api_view.py +118 -0
- iatoolkit-1.10.0/src/iatoolkit/views/rag_api_view.py +216 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit.egg-info/SOURCES.txt +4 -2
- iatoolkit-0.108.1/src/iatoolkit/services/prompt_service.py +0 -303
- iatoolkit-0.108.1/src/iatoolkit/services/search_service.py +0 -55
- iatoolkit-0.108.1/src/iatoolkit/views/load_company_configuration_api_view.py +0 -49
- iatoolkit-0.108.1/src/iatoolkit/views/prompt_api_view.py +0 -37
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/LICENSE +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/pyproject.toml +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/readme.md +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/requirements.txt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/setup.cfg +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/document_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/system_prompts/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-0.108.1 → iatoolkit-1.10.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# IAToolkit is open source software.
|
|
5
5
|
|
|
6
|
-
__version__ = "
|
|
6
|
+
__version__ = "1.10.0"
|
|
7
7
|
|
|
8
8
|
# Expose main classes and functions at the top level of the package
|
|
9
9
|
|
|
@@ -17,7 +17,7 @@ from .base_company import BaseCompany
|
|
|
17
17
|
# --- Services ---
|
|
18
18
|
from iatoolkit.services.query_service import QueryService
|
|
19
19
|
from iatoolkit.services.document_service import DocumentService
|
|
20
|
-
from iatoolkit.services.
|
|
20
|
+
from iatoolkit.services.knowledge_base_service import KnowledgeBaseService
|
|
21
21
|
from iatoolkit.services.sql_service import SqlService
|
|
22
22
|
from iatoolkit.services.load_documents_service import LoadDocumentsService
|
|
23
23
|
from iatoolkit.infra.call_service import CallServiceClient
|
|
@@ -36,7 +36,7 @@ __all__ = [
|
|
|
36
36
|
'QueryService',
|
|
37
37
|
'SqlService',
|
|
38
38
|
'DocumentService',
|
|
39
|
-
'
|
|
39
|
+
'KnowledgeBaseService',
|
|
40
40
|
'LoadDocumentsService',
|
|
41
41
|
'CallServiceClient',
|
|
42
42
|
'ProfileService',
|
|
@@ -9,14 +9,19 @@ class DatabaseProvider(abc.ABC):
|
|
|
9
9
|
|
|
10
10
|
# --- Schema Methods ---
|
|
11
11
|
@abc.abstractmethod
|
|
12
|
-
def
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
def get_database_structure(self) -> dict:
|
|
13
|
+
"""
|
|
14
|
+
Returns the structure of the database (tables, columns, types)
|
|
15
|
+
Format:
|
|
16
|
+
{
|
|
17
|
+
"table_name": {
|
|
18
|
+
"columns": [
|
|
19
|
+
{"name": "col1", "type": "VARCHAR", "nullable": True, "pk": True},
|
|
20
|
+
...
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
"""
|
|
20
25
|
pass
|
|
21
26
|
|
|
22
27
|
# --- Execution Methods ---
|
|
@@ -24,13 +24,15 @@ def register_views(app):
|
|
|
24
24
|
from iatoolkit.views.profile_api_view import UserLanguageApiView
|
|
25
25
|
from iatoolkit.views.embedding_api_view import EmbeddingApiView
|
|
26
26
|
from iatoolkit.views.login_view import LoginView, FinalizeContextView
|
|
27
|
-
from iatoolkit.views.
|
|
27
|
+
from iatoolkit.views.configuration_api_view import ConfigurationApiView, ValidateConfigurationApiView
|
|
28
28
|
from iatoolkit.views.logout_api_view import LogoutApiView
|
|
29
29
|
from iatoolkit.views.home_view import HomeView
|
|
30
30
|
from iatoolkit.views.chat_view import ChatView
|
|
31
31
|
from iatoolkit.views.static_page_view import StaticPageView
|
|
32
32
|
from iatoolkit.views.root_redirect_view import RootRedirectView
|
|
33
33
|
from iatoolkit.views.users_api_view import UsersApiView
|
|
34
|
+
from iatoolkit.views.rag_api_view import RagApiView
|
|
35
|
+
from iatoolkit.views.categories_api_view import CategoriesApiView
|
|
34
36
|
|
|
35
37
|
# assign root '/' to our new redirect logic
|
|
36
38
|
app.add_url_rule('/home', view_func=RootRedirectView.as_view('root_redirect'))
|
|
@@ -84,14 +86,53 @@ def register_views(app):
|
|
|
84
86
|
# can be used also for executing iatoolkit prompts
|
|
85
87
|
app.add_url_rule('/<company_short_name>/api/llm_query', view_func=LLMQueryApiView.as_view('llm_query_api'))
|
|
86
88
|
|
|
87
|
-
#
|
|
88
|
-
app.add_url_rule('/<company_short_name>/api/
|
|
89
|
-
|
|
89
|
+
# Categories Endpoint
|
|
90
|
+
app.add_url_rule('/<company_short_name>/api/categories',
|
|
91
|
+
view_func=CategoriesApiView.as_view('categories_api'),
|
|
92
|
+
methods=['GET', 'POST'])
|
|
93
|
+
|
|
94
|
+
# open the promt directory and specific prompt management
|
|
95
|
+
prompt_view = PromptApiView.as_view('prompt')
|
|
96
|
+
app.add_url_rule('/<company_short_name>/api/prompts',
|
|
97
|
+
view_func=prompt_view,
|
|
98
|
+
methods=['GET', 'POST'],
|
|
99
|
+
defaults={'prompt_name': None})
|
|
100
|
+
|
|
101
|
+
app.add_url_rule('/<company_short_name>/api/prompts/<prompt_name>',
|
|
102
|
+
view_func=prompt_view,
|
|
103
|
+
methods=['GET', 'POST','PUT', 'DELETE'])
|
|
90
104
|
# toolbar buttons
|
|
91
105
|
app.add_url_rule('/<company_short_name>/api/feedback', view_func=UserFeedbackApiView.as_view('feedback'))
|
|
92
106
|
app.add_url_rule('/<company_short_name>/api/history', view_func=HistoryApiView.as_view('history'))
|
|
93
107
|
app.add_url_rule('/<company_short_name>/api/help-content', view_func=HelpContentApiView.as_view('help-content'))
|
|
94
108
|
|
|
109
|
+
# --- RAG API Routes ---
|
|
110
|
+
rag_view = RagApiView.as_view('rag_api')
|
|
111
|
+
|
|
112
|
+
# 1. List Files (POST for filters)
|
|
113
|
+
app.add_url_rule('/api/rag/<company_short_name>/files',
|
|
114
|
+
view_func=rag_view,
|
|
115
|
+
methods=['POST'],
|
|
116
|
+
defaults={'action': 'list_files'})
|
|
117
|
+
|
|
118
|
+
# 2. Delete File
|
|
119
|
+
app.add_url_rule('/api/rag/<company_short_name>/files/<int:document_id>',
|
|
120
|
+
view_func=rag_view,
|
|
121
|
+
methods=['DELETE'],
|
|
122
|
+
defaults={'action': 'delete_file'})
|
|
123
|
+
|
|
124
|
+
# 3. Search Lab
|
|
125
|
+
app.add_url_rule('/api/rag/<company_short_name>/search',
|
|
126
|
+
view_func=rag_view,
|
|
127
|
+
methods=['POST'],
|
|
128
|
+
defaults={'action': 'search'})
|
|
129
|
+
|
|
130
|
+
# 4. Get File Content (View/Download)
|
|
131
|
+
app.add_url_rule('/api/rag/<company_short_name>/files/<int:document_id>/content',
|
|
132
|
+
view_func=rag_view,
|
|
133
|
+
methods=['GET'],
|
|
134
|
+
defaults={'action': 'get_file_content'})
|
|
135
|
+
|
|
95
136
|
# this endpoint is for upload documents into the vector store (api-key)
|
|
96
137
|
app.add_url_rule('/api/load-document', view_func=LoadDocumentApiView.as_view('load-document'), methods=['POST'])
|
|
97
138
|
|
|
@@ -100,8 +141,13 @@ def register_views(app):
|
|
|
100
141
|
view_func=EmbeddingApiView.as_view('embedding_api'))
|
|
101
142
|
|
|
102
143
|
# company configuration
|
|
103
|
-
app.add_url_rule('/<company_short_name>/api/
|
|
104
|
-
view_func=
|
|
144
|
+
app.add_url_rule('/<company_short_name>/api/configuration',
|
|
145
|
+
view_func=ConfigurationApiView.as_view('configuration'),
|
|
146
|
+
methods=['GET', 'POST', 'PATCH'],)
|
|
147
|
+
|
|
148
|
+
app.add_url_rule('/<company_short_name>/api/configuration/validate',
|
|
149
|
+
view_func=ValidateConfigurationApiView.as_view('configuration-validate'),
|
|
150
|
+
methods=['GET'])
|
|
105
151
|
|
|
106
152
|
# static pages
|
|
107
153
|
# url: /pages/foundation o /pages/implementation_plan
|
|
@@ -168,6 +168,20 @@ class Utility:
|
|
|
168
168
|
logging.error(f"Error parsing YAML string: {e}")
|
|
169
169
|
return {}
|
|
170
170
|
|
|
171
|
+
def dump_yaml_to_string(self, config: dict) -> str:
|
|
172
|
+
"""
|
|
173
|
+
Dumps a dictionary into a YAML formatted string.
|
|
174
|
+
It uses default flow style False to ensure block format (readable YAML).
|
|
175
|
+
"""
|
|
176
|
+
try:
|
|
177
|
+
# default_flow_style=False ensures lists and dicts are expanded (not inline like JSON)
|
|
178
|
+
# allow_unicode=True ensures characters like accents are preserved
|
|
179
|
+
return yaml.safe_dump(config, default_flow_style=False, allow_unicode=True, sort_keys=False)
|
|
180
|
+
except yaml.YAMLError as e:
|
|
181
|
+
logging.error(f"Error dumping YAML to string: {e}")
|
|
182
|
+
raise IAToolkitException(IAToolkitException.ErrorType.FILE_IO_ERROR,
|
|
183
|
+
f"Failed to generate YAML: {e}")
|
|
184
|
+
|
|
171
185
|
def generate_context_for_schema(self, entity_name: str, schema_file: str = None, schema: dict = {}) -> str:
|
|
172
186
|
if not schema_file and not schema:
|
|
173
187
|
raise IAToolkitException(IAToolkitException.ErrorType.FILE_IO_ERROR,
|
|
@@ -197,9 +211,13 @@ class Utility:
|
|
|
197
211
|
root_name = list(schema.keys())[0]
|
|
198
212
|
root_details = schema[root_name]
|
|
199
213
|
|
|
214
|
+
# support this format
|
|
215
|
+
if root_details.get('columns'):
|
|
216
|
+
root_details = root_details['columns']
|
|
217
|
+
|
|
200
218
|
if isinstance(root_details, dict):
|
|
201
219
|
# Las claves de metadatos describen el objeto en sí, no sus propiedades hijas.
|
|
202
|
-
METADATA_KEYS = ['description', 'type', 'format', 'items', 'properties']
|
|
220
|
+
METADATA_KEYS = ['description', 'type', 'format', 'items', 'properties', 'pk']
|
|
203
221
|
|
|
204
222
|
# Las propiedades son las claves restantes en el diccionario.
|
|
205
223
|
properties = {
|
|
@@ -242,6 +260,8 @@ class Utility:
|
|
|
242
260
|
description = details.get('description', '')
|
|
243
261
|
data_type = details.get('type', 'any')
|
|
244
262
|
output.append(f"{indent_str}- **`{name.lower()}`** ({data_type}): {description}")
|
|
263
|
+
# if 'pk' in details and details['pk']:
|
|
264
|
+
# output.append(f"{indent_str}- **Primary Key**: {details['pk']}")
|
|
245
265
|
|
|
246
266
|
child_indent_str = ' ' * (indent_level + 1)
|
|
247
267
|
|
|
@@ -335,6 +335,7 @@ class IAToolkit:
|
|
|
335
335
|
from iatoolkit.services.llm_client_service import llmClient
|
|
336
336
|
from iatoolkit.services.auth_service import AuthService
|
|
337
337
|
from iatoolkit.services.sql_service import SqlService
|
|
338
|
+
from iatoolkit.services.knowledge_base_service import KnowledgeBaseService
|
|
338
339
|
|
|
339
340
|
binder.bind(QueryService, to=QueryService)
|
|
340
341
|
binder.bind(BenchmarkService, to=BenchmarkService)
|
|
@@ -356,6 +357,7 @@ class IAToolkit:
|
|
|
356
357
|
binder.bind(llmClient, to=llmClient)
|
|
357
358
|
binder.bind(AuthService, to=AuthService)
|
|
358
359
|
binder.bind(SqlService, to=SqlService)
|
|
360
|
+
binder.bind(KnowledgeBaseService, to=KnowledgeBaseService)
|
|
359
361
|
|
|
360
362
|
def _bind_infrastructure(self, binder: Binder):
|
|
361
363
|
from iatoolkit.infra.llm_proxy import LLMProxy
|
|
@@ -9,14 +9,16 @@ from typing import List
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class S3Connector(FileConnector):
|
|
12
|
-
def __init__(self, bucket: str, prefix: str, auth: dict):
|
|
12
|
+
def __init__(self, bucket: str, prefix: str, folder: str, auth: dict):
|
|
13
13
|
self.bucket = bucket
|
|
14
14
|
self.prefix = prefix
|
|
15
|
+
self.folder = folder
|
|
15
16
|
self.s3 = boto3.client('s3', **auth)
|
|
16
17
|
|
|
17
18
|
def list_files(self) -> List[dict]:
|
|
18
19
|
# list all the files as dictionaries, with keys: 'path', 'name' y 'metadata'.
|
|
19
|
-
|
|
20
|
+
prefix = f'{self.prefix}/{self.folder}/'
|
|
21
|
+
response = self.s3.list_objects_v2(Bucket=self.bucket, Prefix=prefix)
|
|
20
22
|
files = response.get('Contents', [])
|
|
21
23
|
|
|
22
24
|
return [
|
|
@@ -47,13 +47,23 @@ ui:
|
|
|
47
47
|
init_context: "Initializing the context ..."
|
|
48
48
|
|
|
49
49
|
admin:
|
|
50
|
-
|
|
50
|
+
workspace: "Workspace"
|
|
51
51
|
configuration: "Configuration"
|
|
52
|
+
company_config: "Company Configuration (company.yaml)"
|
|
52
53
|
prompts: "Prompts"
|
|
54
|
+
prompts_description: "System Prompts"
|
|
55
|
+
knowledge_rag: "Knowledge Base (RAG)"
|
|
56
|
+
knowledge_static: "Static Context"
|
|
53
57
|
schemas: "Schemas"
|
|
58
|
+
schemas_description: "Data Definitions (YAML)"
|
|
59
|
+
context_description: "Static Markdown"
|
|
60
|
+
administration: "Administration"
|
|
61
|
+
monitoring: "Monitoring"
|
|
62
|
+
teams: "Team"
|
|
63
|
+
billing: "Billing"
|
|
64
|
+
company: "Company"
|
|
54
65
|
context: "Context"
|
|
55
66
|
files: "Files"
|
|
56
|
-
users: "Users"
|
|
57
67
|
select_file: "Select a file for editing"
|
|
58
68
|
select_category: "Select a category"
|
|
59
69
|
editing: "Editing"
|
|
@@ -64,15 +74,124 @@ ui:
|
|
|
64
74
|
new_file: "New file"
|
|
65
75
|
delete_file: "Delete file"
|
|
66
76
|
rename_file: "Rename file"
|
|
77
|
+
saved_ok: "File saved successfully"
|
|
67
78
|
save_file: "Save"
|
|
68
79
|
credentials: "Email and password required for login."
|
|
69
|
-
saved_ok: "Saved successfully"
|
|
70
80
|
deleted_ok: "Deleted successfully"
|
|
71
81
|
user_manager: "User management"
|
|
72
82
|
admin_page_title: "Admin access"
|
|
73
83
|
load_configuration: "Save configuration"
|
|
74
84
|
goto_chat: "Go to chat"
|
|
75
85
|
logout: "Close session"
|
|
86
|
+
error_loading: "Error loading file content"
|
|
87
|
+
loading: "Loading..."
|
|
88
|
+
add: "Add"
|
|
89
|
+
create: "Create"
|
|
90
|
+
delete: "Delete"
|
|
91
|
+
add_new: "Add new"
|
|
92
|
+
category_name_placeholder: "Category name"
|
|
93
|
+
items: "Items"
|
|
94
|
+
drag_drop_hint: "Use arrows to reorder items."
|
|
95
|
+
current_items: "Current items"
|
|
96
|
+
manage: "Manage"
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
db_explorer:
|
|
100
|
+
data_explorer: "Data Explorer"
|
|
101
|
+
database_connection: "Database Connection"
|
|
102
|
+
tables: "Tables"
|
|
103
|
+
data_explorer_description: "Explore your database tables ."
|
|
104
|
+
select_database: "Please select a database above to view its tables."
|
|
105
|
+
not_table_selected: "No table selected"
|
|
106
|
+
view_yaml: "View YAML"
|
|
107
|
+
save_schema: "Save schema"
|
|
108
|
+
select_table: "Select a table from the left panel"
|
|
109
|
+
table_semantics: "Table Semantics"
|
|
110
|
+
table_description: "Description (AI Context)"
|
|
111
|
+
table_placeholder: "Describe what data this table contains (e.g., 'Active and inactive customer records including billing addresses')..."
|
|
112
|
+
column_metadata: "Column Metadata"
|
|
113
|
+
auto_detect: "Auto-detected from DB"
|
|
114
|
+
meta_column: "Column"
|
|
115
|
+
meta_type: "Type"
|
|
116
|
+
meta_description: "Description"
|
|
117
|
+
meta_synonyms: "Synonyms"
|
|
118
|
+
pii_sesitive: "PII Sensitive"
|
|
119
|
+
|
|
120
|
+
prompts:
|
|
121
|
+
title: "Prompts Manager"
|
|
122
|
+
subtitle: "Manage and test your AI personas and templates"
|
|
123
|
+
library: "Prompt Library"
|
|
124
|
+
new_btn: "New"
|
|
125
|
+
filter_placeholder: "Filter prompts..."
|
|
126
|
+
select_prompt: "Select a prompt"
|
|
127
|
+
toggle_settings: "Toggle Variables & Config"
|
|
128
|
+
settings_btn: "Settings"
|
|
129
|
+
save_btn: "Save"
|
|
130
|
+
tab_editor: "Editor"
|
|
131
|
+
tab_playground: "Playground"
|
|
132
|
+
config_title: "Config"
|
|
133
|
+
desc_label: "Description"
|
|
134
|
+
desc_placeholder: "Describe this prompt..."
|
|
135
|
+
vars_label: "Input Variables"
|
|
136
|
+
no_vars: "No inputs defined"
|
|
137
|
+
playground_inputs: "Variables & Inputs"
|
|
138
|
+
no_vars_detected: "No variables detected in prompt template."
|
|
139
|
+
model_override: "Model Override (Optional)"
|
|
140
|
+
default_model: "Default (from config)"
|
|
141
|
+
run_btn: "Run"
|
|
142
|
+
output_placeholder: "Output will appear here..."
|
|
143
|
+
new_modal_title: "Create New Prompt"
|
|
144
|
+
name_label: "Name (Slug)"
|
|
145
|
+
name_help: "Use lowercase, numbers, and underscores only."
|
|
146
|
+
category_label: "Category"
|
|
147
|
+
delete_confirmation: "Delete Prompt?"
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
config:
|
|
151
|
+
editor_description: "IAToolkit configuration file"
|
|
152
|
+
title: "Configuration Editor"
|
|
153
|
+
sections: "Sections"
|
|
154
|
+
refresh: "Refresh"
|
|
155
|
+
validate: "Validate"
|
|
156
|
+
select_section: "Select a section from the left panel"
|
|
157
|
+
no_section_selected: "No section selected"
|
|
158
|
+
view_yaml: "View YAML"
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
rag:
|
|
162
|
+
ingestion: "Ingestion"
|
|
163
|
+
ingestion_description: "Ingest documents into the knowledge base."
|
|
164
|
+
workbench: "Workbench"
|
|
165
|
+
documents: "Documents"
|
|
166
|
+
retrieval_lab: "Retrieval Lab."
|
|
167
|
+
retrieval_description: "Test semantic search and context retrieval."
|
|
168
|
+
query_placeholder: "Enter a question to query the knowledge base..."
|
|
169
|
+
search_button: "Search"
|
|
170
|
+
filter: "Filter"
|
|
171
|
+
search_results_title: "Ready to test"
|
|
172
|
+
search_results_description: "Results will appear here"
|
|
173
|
+
filename: "Filename"
|
|
174
|
+
filename_placeholder: "Contains..."
|
|
175
|
+
user: "User"
|
|
176
|
+
status: "Status"
|
|
177
|
+
all_status: "All statuses"
|
|
178
|
+
status_active: "Active"
|
|
179
|
+
status_pending: "Pending"
|
|
180
|
+
status_processing: "Processing"
|
|
181
|
+
status_failed: "Failed"
|
|
182
|
+
created_at: "Created"
|
|
183
|
+
date_range: "Date range"
|
|
184
|
+
delete_confirmation: "Delete File?"
|
|
185
|
+
delete_message: "This action cannot be undone. The file will be permanently removed."
|
|
186
|
+
delete_button: "Delete"
|
|
187
|
+
delete_cancel: "Cancel"
|
|
188
|
+
target_collection: "Collection"
|
|
189
|
+
select_collection_placeholder: "Select a collection"
|
|
190
|
+
select_collection: "Select a collection"
|
|
191
|
+
collection_required: "Collection is required"
|
|
192
|
+
collection: "Collection"
|
|
193
|
+
manage_collections: "Manage collections"
|
|
194
|
+
all_collections: "All collections"
|
|
76
195
|
|
|
77
196
|
tooltips:
|
|
78
197
|
history: "History of my queries"
|
|
@@ -174,6 +293,19 @@ services:
|
|
|
174
293
|
start_query: "Hello, what can I help you with today?"
|
|
175
294
|
mail_change_password: "mail sent for password change"
|
|
176
295
|
|
|
296
|
+
rag:
|
|
297
|
+
ingestion:
|
|
298
|
+
duplicate: "Document '{filename}' already exists for company '{company_short_name}'. Skipping ingestion."
|
|
299
|
+
failed: "Failed to ingest document: {error}"
|
|
300
|
+
processing_failed: "Processing failed: {error}"
|
|
301
|
+
empty_text: "Extracted text is empty."
|
|
302
|
+
search:
|
|
303
|
+
query_required: "Query is required."
|
|
304
|
+
company_not_found: "Company '{company_short_name}' not found."
|
|
305
|
+
management:
|
|
306
|
+
delete_success: "Document deleted."
|
|
307
|
+
not_found: "Document not found."
|
|
308
|
+
action_not_found: "Action '{action}' not found."
|
|
177
309
|
|
|
178
310
|
flash_messages:
|
|
179
311
|
password_changed_success: "Your password has been successfully reset. You can now log in."
|
|
@@ -208,9 +340,12 @@ js_messages:
|
|
|
208
340
|
no_file_selected: "No file selected"
|
|
209
341
|
select_company: "Select company"
|
|
210
342
|
delete_ok: "File deleted successfully"
|
|
343
|
+
delete_failed: "File deletion failed"
|
|
211
344
|
rename_ok: "File rename successfully"
|
|
345
|
+
file_created: "File created successfully"
|
|
212
346
|
not_saved: 'Could not save'
|
|
213
347
|
saved_ok: "Saved successfully"
|
|
348
|
+
error_saving: "Error saving file"
|
|
214
349
|
invalid_file_name: "Invalid filename. Use only letters, numbers, underscores, hyphens, and dots."
|
|
215
350
|
config_loaded: "Configuration loaded successfully."
|
|
216
351
|
config_load_error: "Error loading configuration."
|
|
@@ -222,5 +357,17 @@ js_messages:
|
|
|
222
357
|
db_verified: "Verified"
|
|
223
358
|
db_created: "Created"
|
|
224
359
|
db_last_access: "Last access"
|
|
360
|
+
db_filename: "Filename"
|
|
361
|
+
db_status: "Status"
|
|
362
|
+
db_collection: "Collection"
|
|
363
|
+
editor_no_file_selected: "No file selected"
|
|
364
|
+
error_loading: "Error loading file content"
|
|
365
|
+
cant_load_company: "Could not load company.yaml"
|
|
366
|
+
config_saved: "Configuration saved successfully."
|
|
367
|
+
config_error: "Error saving configuration."
|
|
368
|
+
all_collections: "All collections"
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
225
372
|
|
|
226
373
|
|
|
@@ -46,15 +46,24 @@ ui:
|
|
|
46
46
|
init_context: "Inicializando el contexto de la IA ..."
|
|
47
47
|
|
|
48
48
|
admin:
|
|
49
|
-
|
|
49
|
+
workspace: "Recursos"
|
|
50
50
|
configuration: "Configuración"
|
|
51
|
+
company_config: "Configuración Empresa (company.yaml)"
|
|
52
|
+
knowledge_rag: "Knowledge Base (RAG)"
|
|
53
|
+
knowledge_static: "Contenido Estático"
|
|
51
54
|
prompts: "Prompts"
|
|
55
|
+
prompts_description: "Prompts de sistema"
|
|
52
56
|
schemas: "Schemas"
|
|
57
|
+
schemas_description: "Definiciones de entidades"
|
|
53
58
|
context: "Contexto"
|
|
59
|
+
context_description: "Contenido estatico (Markdown)"
|
|
60
|
+
administration: "Administración"
|
|
61
|
+
monitoring: "Monitoreo"
|
|
62
|
+
teams: "Usuarios"
|
|
63
|
+
billing: "Facturación"
|
|
54
64
|
files: "Archivos"
|
|
55
|
-
users: "Usuarios"
|
|
56
65
|
select_file: "Seleccione un archivo a editar"
|
|
57
|
-
|
|
66
|
+
select_category: "Seleccione una categoría"
|
|
58
67
|
editing: "Editando"
|
|
59
68
|
no_file_selected: "Seleccione un archivo"
|
|
60
69
|
new: "Nuevo"
|
|
@@ -73,6 +82,112 @@ ui:
|
|
|
73
82
|
load_configuration: "Guardar configuración"
|
|
74
83
|
goto_chat: "Ir al chat"
|
|
75
84
|
logout: "Cerrar sesión"
|
|
85
|
+
add: "Agregar"
|
|
86
|
+
create: "Crear"
|
|
87
|
+
delete: "Borrar"
|
|
88
|
+
add_new: "Agregar nuevo"
|
|
89
|
+
category_name_placeholder: "nombre de categoria"
|
|
90
|
+
items: "Items"
|
|
91
|
+
drag_drop_hint: "Utiliza las flechas para ordenar items.."
|
|
92
|
+
current_items: "items actuales"
|
|
93
|
+
manage: "Administrar"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
db_explorer:
|
|
97
|
+
data_explorer: "Explorador de datos"
|
|
98
|
+
database_connection: "Bases de datos"
|
|
99
|
+
tables: "Tablas"
|
|
100
|
+
data_explorer_description: "Explora tus tablas de base de datos."
|
|
101
|
+
select_database: "Seleccione una base de datos para ver sus tablas."
|
|
102
|
+
not_table_selected: "No hay tabla seleccionada."
|
|
103
|
+
view_yaml: "Ver YAML"
|
|
104
|
+
save_schema: "Guardar esquema"
|
|
105
|
+
select_table: "Seleccionar una tabla del panel izquierdo"
|
|
106
|
+
table_semantics: "Significado de la tabla"
|
|
107
|
+
table_description: "Descripción de la tabla (Contexto IA)"
|
|
108
|
+
table_placeholder: "Describe el significado de la tabla, ejemplo: tabla de usuarios."
|
|
109
|
+
column_metadata: "Metadatos de columna"
|
|
110
|
+
auto_detect: "Auto-detectar desde la BD"
|
|
111
|
+
meta_column: "Columna"
|
|
112
|
+
meta_type: "Tipo"
|
|
113
|
+
meta_description: "Descripción"
|
|
114
|
+
meta_synonyms: "Sinonimos"
|
|
115
|
+
pii_sesitive: "IP Sensible"
|
|
116
|
+
|
|
117
|
+
prompts:
|
|
118
|
+
title: "Gestor de Prompts"
|
|
119
|
+
subtitle: "Gestiona y prueba tus plantillas y personas de IA"
|
|
120
|
+
library: "Biblioteca de Prompts"
|
|
121
|
+
new_btn: "Nuevo"
|
|
122
|
+
filter_placeholder: "Filtrar prompts..."
|
|
123
|
+
select_prompt: "Selecciona un prompt"
|
|
124
|
+
toggle_settings: "Alternar Variables y Configuración"
|
|
125
|
+
settings_btn: "Ajustes"
|
|
126
|
+
save_btn: "Guardar"
|
|
127
|
+
tab_editor: "Editor"
|
|
128
|
+
tab_playground: "Playground"
|
|
129
|
+
config_title: "Configuración"
|
|
130
|
+
desc_label: "Descripción"
|
|
131
|
+
desc_placeholder: "Describe este prompt..."
|
|
132
|
+
vars_label: "Variables de Entrada"
|
|
133
|
+
no_vars: "Sin variables definidas"
|
|
134
|
+
playground_inputs: "Variables y Entradas"
|
|
135
|
+
no_vars_detected: "No se detectaron variables en la plantilla."
|
|
136
|
+
model_override: "Modelo Específico (Opcional)"
|
|
137
|
+
default_model: "Por defecto (según config)"
|
|
138
|
+
run_btn: "Ejecutar"
|
|
139
|
+
output_placeholder: "El resultado aparecerá aquí..."
|
|
140
|
+
new_modal_title: "Crear Nuevo Prompt"
|
|
141
|
+
name_label: "Nombre (Slug)"
|
|
142
|
+
name_help: "Solo minúsculas, números y guiones bajos."
|
|
143
|
+
category_label: "Categoría"
|
|
144
|
+
delete_confirmation: "Eliminar el prompt?"
|
|
145
|
+
|
|
146
|
+
config:
|
|
147
|
+
editor_description: "Editor de configuración"
|
|
148
|
+
title: "Editor de configuraciones"
|
|
149
|
+
sections: "Secciones"
|
|
150
|
+
refresh: "Refrescar"
|
|
151
|
+
validate: "Validar"
|
|
152
|
+
select_section: "Seleccione una sección del panel izquierdo"
|
|
153
|
+
no_section_selected: "No hay sección seleccionada."
|
|
154
|
+
view_yaml: "Ver YAML"
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
rag:
|
|
158
|
+
ingestion: "Ingesta"
|
|
159
|
+
ingestion_description: "Ingestar documentos en la base de conocimiento."
|
|
160
|
+
workbench: "Area de trabajo"
|
|
161
|
+
documents: "Documentos"
|
|
162
|
+
retrieval_lab: "Laboratorio de recuperación"
|
|
163
|
+
retrieval_description: "Probar la búsqueda semántica y la recuperación de contexto."
|
|
164
|
+
query_placeholder: "Introduce una pregunta para consultar la base de conocimiento..."
|
|
165
|
+
search_button: "Buscar"
|
|
166
|
+
filter: "Filtrar"
|
|
167
|
+
search_results_title: "Listo para probar"
|
|
168
|
+
search_results_description: "Los resultados aparecerán aquí"
|
|
169
|
+
filename: "Nombre de archivo"
|
|
170
|
+
filename_placeholder: "Contiene..."
|
|
171
|
+
user: "Usuario"
|
|
172
|
+
status: "Estado"
|
|
173
|
+
all_status: "Estados"
|
|
174
|
+
status_active: "Activo"
|
|
175
|
+
status_pending: "Pendiente"
|
|
176
|
+
status_processing: "Procesando"
|
|
177
|
+
status_failed: "Fallido"
|
|
178
|
+
created_at: "Creado"
|
|
179
|
+
date_range: "Rango de fechas"
|
|
180
|
+
delete_confirmation: "¿Eliminar archivo?"
|
|
181
|
+
delete_message: "Esta acción no se puede deshacer. El archivo se eliminará permanentemente."
|
|
182
|
+
delete_button: "Eliminar"
|
|
183
|
+
delete_cancel: "Cancelar"
|
|
184
|
+
target_collection: "Categoría"
|
|
185
|
+
select_collection_placeholder: "Selecciona una categoría"
|
|
186
|
+
collection_required: "Debe seleccionar una categoría"
|
|
187
|
+
all_collections: "Todas las categorías"
|
|
188
|
+
collection: "Categoría"
|
|
189
|
+
manage_collections: "Administra collections"
|
|
190
|
+
select_collection: "Selecciona una categorìa"
|
|
76
191
|
|
|
77
192
|
|
|
78
193
|
tooltips:
|
|
@@ -176,6 +291,20 @@ services:
|
|
|
176
291
|
start_query: "Hola, cual es tu pregunta?"
|
|
177
292
|
mail_change_password: "se envio mail para cambio de clave"
|
|
178
293
|
|
|
294
|
+
rag:
|
|
295
|
+
ingestion:
|
|
296
|
+
duplicate: "El documento '{filename}' ya existe para la empresa '{company_short_name}'. Omitiendo ingesta."
|
|
297
|
+
failed: "Error al ingerir el documento: {error}"
|
|
298
|
+
processing_failed: "El procesamiento falló: {error}"
|
|
299
|
+
empty_text: "El texto extraído está vacío."
|
|
300
|
+
search:
|
|
301
|
+
query_required: "La consulta (query) es obligatoria."
|
|
302
|
+
company_not_found: "Empresa '{company_short_name}' no encontrada."
|
|
303
|
+
management:
|
|
304
|
+
delete_success: "Documento eliminado."
|
|
305
|
+
not_found: "Documento no encontrado."
|
|
306
|
+
action_not_found: "Acción '{action}' no encontrada."
|
|
307
|
+
|
|
179
308
|
flash_messages:
|
|
180
309
|
password_changed_success: "Tu contraseña ha sido restablecida exitosamente. Ahora puedes iniciar sesión."
|
|
181
310
|
signup_success: "Registro exitoso. Por favor, revisa tu correo para verificar tu cuenta."
|
|
@@ -204,10 +333,14 @@ js_messages:
|
|
|
204
333
|
example: "Ejemplo:"
|
|
205
334
|
show_reasoning: "Ver razonamiento"
|
|
206
335
|
unsaved: "Modificado (no guardado)"
|
|
336
|
+
saved_ok: "Archivo guadado correctamente"
|
|
337
|
+
error_saving: "Error al guardar archivo"
|
|
207
338
|
select_file: "Seleccione un archivo de la lista"
|
|
208
339
|
no_file_selected: "No hay archivo seleccionado"
|
|
209
340
|
select_company: "Seleccione empresa"
|
|
341
|
+
file_created: "Archivo creado correctamente"
|
|
210
342
|
delete_ok: "Archivo eliminado correctamente"
|
|
343
|
+
delete_failed: "Error al eliminar archivo"
|
|
211
344
|
rename_ok: "Archivo renombrado correctamente"
|
|
212
345
|
not_saved: 'No puede guardar'
|
|
213
346
|
invalid_file_name: "Nombre de archivo no válido. Usa solo letras, números, guiones bajos, guiones y puntos."
|
|
@@ -216,11 +349,21 @@ js_messages:
|
|
|
216
349
|
search_placeholder: "Buscar usuarios..."
|
|
217
350
|
showing: "Mostrando"
|
|
218
351
|
records: "Registros"
|
|
219
|
-
db_user: "Usuario"
|
|
220
352
|
db_role: "Rol"
|
|
221
353
|
db_verified: "Verificado"
|
|
222
|
-
|
|
354
|
+
db_collection: "Colección"
|
|
223
355
|
db_last_access: "ultimo acceso"
|
|
356
|
+
db_filename: "Nombre de archivo"
|
|
357
|
+
db_user: "Usuario"
|
|
358
|
+
db_status: "Estado"
|
|
359
|
+
db_created: "Creado"
|
|
360
|
+
editor_no_file_selected: "No hay archivo seleccionado"
|
|
361
|
+
error_loading: "Error cargando el contenido del archivo"
|
|
362
|
+
cant_load_company: "No puede cargarcompany.yaml"
|
|
363
|
+
config_saved: "Configuración guardada correctamente."
|
|
364
|
+
config_error: "Error guardando configuración"
|
|
365
|
+
all_collections: "Todas las colecciones"
|
|
366
|
+
|
|
224
367
|
|
|
225
368
|
|
|
226
369
|
|