iatoolkit 0.66.8__tar.gz → 0.76.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.76.0/LICENSE +21 -0
- iatoolkit-0.76.0/PKG-INFO +196 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/pyproject.toml +1 -1
- iatoolkit-0.76.0/readme.md +114 -0
- iatoolkit-0.76.0/requirements.txt +71 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/__init__.py +2 -6
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/base_company.py +3 -31
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/cli_commands.py +5 -7
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/exceptions.py +1 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/routes.py +7 -3
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/util.py +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/company_registry.py +1 -2
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/iatoolkit.py +23 -26
- iatoolkit-0.66.8/src/iatoolkit/infra/mail_app.py → iatoolkit-0.76.0/src/iatoolkit/infra/brevo_mail_app.py +15 -37
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_client.py +10 -14
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_proxy.py +38 -10
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/locales/en.yaml +4 -3
- iatoolkit-0.76.0/src/iatoolkit/locales/es.yaml +165 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/database_manager.py +5 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/models.py +18 -22
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/profile_repo.py +5 -14
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/vs_repo.py +32 -21
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/auth_service.py +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/branding_service.py +11 -6
- iatoolkit-0.76.0/src/iatoolkit/services/company_context_service.py +155 -0
- iatoolkit-0.76.0/src/iatoolkit/services/configuration_service.py +269 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/dispatcher_service.py +76 -72
- iatoolkit-0.76.0/src/iatoolkit/services/embedding_service.py +144 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/excel_service.py +1 -1
- iatoolkit-0.76.0/src/iatoolkit/services/history_manager_service.py +189 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/jwt_service.py +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/language_service.py +10 -6
- iatoolkit-0.76.0/src/iatoolkit/services/load_documents_service.py +174 -0
- iatoolkit-0.76.0/src/iatoolkit/services/mail_service.py +213 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/profile_service.py +33 -11
- iatoolkit-0.76.0/src/iatoolkit/services/query_service.py +448 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/search_service.py +11 -4
- iatoolkit-0.76.0/src/iatoolkit/services/sql_service.py +92 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/user_feedback_service.py +18 -6
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/user_session_context_service.py +18 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_main.js +17 -4
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_onboarding_button.js +6 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/onboarding.css +7 -0
- iatoolkit-0.76.0/src/iatoolkit/system_prompts/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/query_main.prompt +3 -11
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/change_password.html +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat.html +1 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat_modals.html +1 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/error.html +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/login_simulation.html +1 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/onboarding_shell.html +4 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/base_login_view.py +7 -8
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/change_password_view.py +3 -4
- iatoolkit-0.76.0/src/iatoolkit/views/embedding_api_view.py +65 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/external_login_view.py +4 -4
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/forgot_password_view.py +6 -6
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/help_content_api_view.py +8 -8
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/history_api_view.py +3 -3
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/home_view.py +2 -2
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/init_context_api_view.py +17 -16
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/llmquery_api_view.py +4 -2
- iatoolkit-0.66.8/src/iatoolkit/views/file_store_api_view.py → iatoolkit-0.76.0/src/iatoolkit/views/load_document_api_view.py +2 -2
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/login_simulation_view.py +4 -1
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/login_view.py +9 -9
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/signup_view.py +3 -5
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/verify_user_view.py +2 -4
- iatoolkit-0.76.0/src/iatoolkit.egg-info/PKG-INFO +196 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/SOURCES.txt +9 -5
- iatoolkit-0.76.0/src/iatoolkit.egg-info/requires.txt +71 -0
- iatoolkit-0.66.8/PKG-INFO +0 -258
- iatoolkit-0.66.8/readme.md +0 -49
- iatoolkit-0.66.8/requirements.txt +0 -200
- iatoolkit-0.66.8/src/iatoolkit/locales/es.yaml +0 -163
- iatoolkit-0.66.8/src/iatoolkit/services/help_content_service.py +0 -30
- iatoolkit-0.66.8/src/iatoolkit/services/history_service.py +0 -38
- iatoolkit-0.66.8/src/iatoolkit/services/load_documents_service.py +0 -187
- iatoolkit-0.66.8/src/iatoolkit/services/mail_service.py +0 -67
- iatoolkit-0.66.8/src/iatoolkit/services/onboarding_service.py +0 -43
- iatoolkit-0.66.8/src/iatoolkit/services/query_service.py +0 -373
- iatoolkit-0.66.8/src/iatoolkit/services/sql_service.py +0 -64
- iatoolkit-0.66.8/src/iatoolkit.egg-info/PKG-INFO +0 -258
- iatoolkit-0.66.8/src/iatoolkit.egg-info/requires.txt +0 -200
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/setup.cfg +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/document_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/services/tasks_service.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/about.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/index.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/index_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-0.66.8 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
iatoolkit-0.76.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Fernando Libedinsky
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: iatoolkit
|
|
3
|
+
Version: 0.76.0
|
|
4
|
+
Summary: IAToolkit
|
|
5
|
+
Author: Fernando Libedinsky
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: bcrypt==4.2.1
|
|
11
|
+
Requires-Dist: boto3==1.36.22
|
|
12
|
+
Requires-Dist: botocore==1.36.22
|
|
13
|
+
Requires-Dist: build==1.2.2.post1
|
|
14
|
+
Requires-Dist: click==8.1.8
|
|
15
|
+
Requires-Dist: cryptography==44.0.3
|
|
16
|
+
Requires-Dist: Flask==3.1.0
|
|
17
|
+
Requires-Dist: Flask-Bcrypt==1.0.1
|
|
18
|
+
Requires-Dist: flask-cors==6.0.0
|
|
19
|
+
Requires-Dist: Flask-Injector==0.15.0
|
|
20
|
+
Requires-Dist: Flask-Session==0.8.0
|
|
21
|
+
Requires-Dist: flatbuffers==24.3.25
|
|
22
|
+
Requires-Dist: google-ai-generativelanguage==0.6.15
|
|
23
|
+
Requires-Dist: google-api-core==2.24.1
|
|
24
|
+
Requires-Dist: google-api-python-client==2.161.0
|
|
25
|
+
Requires-Dist: google-auth==2.37.0
|
|
26
|
+
Requires-Dist: google-auth-httplib2==0.2.0
|
|
27
|
+
Requires-Dist: google-auth-oauthlib==1.2.1
|
|
28
|
+
Requires-Dist: google-cloud-core==2.4.1
|
|
29
|
+
Requires-Dist: google-cloud-storage==3.0.0
|
|
30
|
+
Requires-Dist: google-crc32c==1.6.0
|
|
31
|
+
Requires-Dist: google-generativeai==0.8.5
|
|
32
|
+
Requires-Dist: google-resumable-media==2.7.2
|
|
33
|
+
Requires-Dist: googleapis-common-protos==1.66.0
|
|
34
|
+
Requires-Dist: gunicorn==23.0.0
|
|
35
|
+
Requires-Dist: h11==0.14.0
|
|
36
|
+
Requires-Dist: httpcore==1.0.7
|
|
37
|
+
Requires-Dist: httplib2==0.22.0
|
|
38
|
+
Requires-Dist: httptools==0.6.4
|
|
39
|
+
Requires-Dist: httpx==0.28.0
|
|
40
|
+
Requires-Dist: httpx-sse==0.4.0
|
|
41
|
+
Requires-Dist: huggingface-hub==0.31.4
|
|
42
|
+
Requires-Dist: humanfriendly==10.0
|
|
43
|
+
Requires-Dist: idna==3.10
|
|
44
|
+
Requires-Dist: injector==0.22.0
|
|
45
|
+
Requires-Dist: Jinja2==3.1.5
|
|
46
|
+
Requires-Dist: langchain==0.3.19
|
|
47
|
+
Requires-Dist: langchain-core==0.3.35
|
|
48
|
+
Requires-Dist: langchain-text-splitters==0.3.6
|
|
49
|
+
Requires-Dist: markdown2==2.5.3
|
|
50
|
+
Requires-Dist: openai==1.79.0
|
|
51
|
+
Requires-Dist: openpyxl==3.1.5
|
|
52
|
+
Requires-Dist: pandas==2.3.1
|
|
53
|
+
Requires-Dist: pgvector==0.3.6
|
|
54
|
+
Requires-Dist: pillow==11.0.0
|
|
55
|
+
Requires-Dist: psutil==7.0.0
|
|
56
|
+
Requires-Dist: psycopg2-binary==2.9.10
|
|
57
|
+
Requires-Dist: PyJWT==2.10.1
|
|
58
|
+
Requires-Dist: PyMuPDF==1.25.0
|
|
59
|
+
Requires-Dist: python-dotenv==1.0.1
|
|
60
|
+
Requires-Dist: pytest==8.3.4
|
|
61
|
+
Requires-Dist: pytest-cov==5.0.0
|
|
62
|
+
Requires-Dist: pytest-mock==3.14.0
|
|
63
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
64
|
+
Requires-Dist: python-docx==1.1.2
|
|
65
|
+
Requires-Dist: pytesseract==0.3.13
|
|
66
|
+
Requires-Dist: pytz==2025.2
|
|
67
|
+
Requires-Dist: PyYAML==6.0.2
|
|
68
|
+
Requires-Dist: redis==5.2.1
|
|
69
|
+
Requires-Dist: regex==2024.11.6
|
|
70
|
+
Requires-Dist: requests==2.32.3
|
|
71
|
+
Requires-Dist: requests-oauthlib==2.0.0
|
|
72
|
+
Requires-Dist: requests-toolbelt==1.0.0
|
|
73
|
+
Requires-Dist: s3transfer==0.11.2
|
|
74
|
+
Requires-Dist: sib-api-v3-sdk==7.6.0
|
|
75
|
+
Requires-Dist: SQLAlchemy==2.0.36
|
|
76
|
+
Requires-Dist: tiktoken==0.8.0
|
|
77
|
+
Requires-Dist: tokenizers==0.21.0
|
|
78
|
+
Requires-Dist: websocket-client==1.8.0
|
|
79
|
+
Requires-Dist: websockets==14.1
|
|
80
|
+
Requires-Dist: Werkzeug==3.1.3
|
|
81
|
+
Dynamic: license-file
|
|
82
|
+
|
|
83
|
+
<div align="center">
|
|
84
|
+
<h1>IAToolkit</h1>
|
|
85
|
+
<p><strong>The Open-Source Framework for Building AI Assistants on Your Private Data</strong></p>
|
|
86
|
+
<p>
|
|
87
|
+
<a href="https://www.iatoolkit.com">Website</a> |
|
|
88
|
+
<a href="./docs/index.md">Full Documentation</a> |
|
|
89
|
+
<a href="./docs/quickstart.md">Quickstart Guide</a>
|
|
90
|
+
</p>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+

|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## ✨ Why IAToolkit?
|
|
98
|
+
|
|
99
|
+
IAToolkit is more than a framework — it's a complete foundation for building **enterprise-grade AI assistants**
|
|
100
|
+
capable of understanding your proprietary data, automating workflows, and integrating seamlessly with
|
|
101
|
+
your existing systems.
|
|
102
|
+
|
|
103
|
+
Whether you’re building a production chatbot for your company or learning how real AI applications are architected,
|
|
104
|
+
IAToolkit gives you everything you need to build secure, production-grade assistants — from data access,
|
|
105
|
+
multi-tenant architecture, and tool execution to prompt orchestration, semantic search,
|
|
106
|
+
and full UI integration — all powered by a clean, extensible Python API.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### 🔌 Connect to Anything
|
|
111
|
+
Build AI assistants that truly understand your business.
|
|
112
|
+
|
|
113
|
+
- Connect to **SQL databases** (PostgreSQL, MySQL, SQLite)
|
|
114
|
+
- Query structured data using natural language
|
|
115
|
+
- Perform **semantic search** on PDFs, DOCX, TXT, XLSX
|
|
116
|
+
- Works as a full RAG engine out-of-the-box
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### 🏢 Multi-Tenant by Design
|
|
121
|
+
Ideal for SaaS, agencies, consultancies, or large enterprises.
|
|
122
|
+
|
|
123
|
+
- Isolated **Company Modules**
|
|
124
|
+
- Each company defines its own:
|
|
125
|
+
- data sources
|
|
126
|
+
- prompts
|
|
127
|
+
- custom tools
|
|
128
|
+
- branding + UI theme
|
|
129
|
+
- Clean separation for multi-client deployments
|
|
130
|
+
- Perfect for scaling from 1 to 100 customers
|
|
131
|
+
- Configure everything using simple YAML
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### 🧩 Extensible & Provider-Agnostic
|
|
136
|
+
Customize every layer and keep full control.
|
|
137
|
+
|
|
138
|
+
- Add **custom tools** the LLM can call (SQL, API, Python functions)
|
|
139
|
+
- Swap between **OpenAI (GPT)**, **Google Gemini**, or future models
|
|
140
|
+
- Built on dependency injection for maximum modularity
|
|
141
|
+
- Extend prompts, dispatchers, services, and LLM clients effortlessly
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### 🛡️ Built for Production
|
|
146
|
+
Designed for real-world systems — reliable, maintainable, and scalable.
|
|
147
|
+
|
|
148
|
+
- Integrated authentication and session handling
|
|
149
|
+
- Secure secret management via environment variables
|
|
150
|
+
- Detailed logging of prompts, tool calls, and token usage
|
|
151
|
+
- Structured architecture with **90%+ automated test coverage**
|
|
152
|
+
- Clean separation of UI, business logic, and LLM orchestration
|
|
153
|
+
- Runs anywhere: local machine, docker, cloud, serverless
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### 🎓 Learn How Real AI Applications Are Built
|
|
158
|
+
IAToolkit is also an excellent learning resource:
|
|
159
|
+
|
|
160
|
+
- Understand how to orchestrate multiple LLM calls
|
|
161
|
+
- Learn how tools, SQL, vector search and prompts interact
|
|
162
|
+
- Explore a complete architecture for real AI products
|
|
163
|
+
- Use the Sample Company demo to practice building AI assistants
|
|
164
|
+
- Perfect for developers, students, and teams exploring enterprise AI
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 🚀 Getting Started in 3 Minutes
|
|
169
|
+
|
|
170
|
+
Get your first AI assistant running locally by following our "Hello World" example.
|
|
171
|
+
Our detailed guide will walk you through setting up your virtual environment, configuring your `.env` file,
|
|
172
|
+
and launching the application.
|
|
173
|
+
|
|
174
|
+
➡️ **[Start the Quickstart Guide](./docs/quickstart.md)**
|
|
175
|
+
|
|
176
|
+
## 📚 Documentation
|
|
177
|
+
|
|
178
|
+
Our documentation is designed for users of all levels, from initial setup to advanced development.
|
|
179
|
+
|
|
180
|
+
| Guide | Description |
|
|
181
|
+
| --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
182
|
+
| 🚀 **[Quickstart Guide](./docs/quickstart.md)** | The fastest way to install, configure, and run IAToolkit for the first time. |
|
|
183
|
+
| ⚙️ **[Companies & Components](./docs/companies_and_components.md)** | A deep dive into the `company.yaml` file, the core of all configuration. |
|
|
184
|
+
| 💻 **[Programming Guide](./docs/programming_guide.md)** | Understand the internal architecture, services, and design patterns to extend the framework. |
|
|
185
|
+
| ☁️ **[Deployment Guide](./docs/deployment_guide.md)** | Learn how to deploy your IAToolkit application to a production environment. |
|
|
186
|
+
| 🗃️ **[Database Guide](./docs/database_guide.md)** | An overview of the core database schema used by the IAToolkit framework itself. |
|
|
187
|
+
|
|
188
|
+
➡️ **[Explore all documentation](./docs/index.md)**
|
|
189
|
+
|
|
190
|
+
## 🤝 Contributing
|
|
191
|
+
|
|
192
|
+
We welcome contributions of all kinds! Whether it's a new feature, a bug fix, or an improvement to the documentation, your help is appreciated. Please read our **[Contributing Guide](./contributing.md)** to get started.
|
|
193
|
+
|
|
194
|
+
## 📄 License
|
|
195
|
+
|
|
196
|
+
IAToolkit is open-source software licensed under the **[MIT License](./LICENSE)**.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>IAToolkit</h1>
|
|
3
|
+
<p><strong>The Open-Source Framework for Building AI Assistants on Your Private Data</strong></p>
|
|
4
|
+
<p>
|
|
5
|
+
<a href="https://www.iatoolkit.com">Website</a> |
|
|
6
|
+
<a href="./docs/index.md">Full Documentation</a> |
|
|
7
|
+
<a href="./docs/quickstart.md">Quickstart Guide</a>
|
|
8
|
+
</p>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ✨ Why IAToolkit?
|
|
16
|
+
|
|
17
|
+
IAToolkit is more than a framework — it's a complete foundation for building **enterprise-grade AI assistants**
|
|
18
|
+
capable of understanding your proprietary data, automating workflows, and integrating seamlessly with
|
|
19
|
+
your existing systems.
|
|
20
|
+
|
|
21
|
+
Whether you’re building a production chatbot for your company or learning how real AI applications are architected,
|
|
22
|
+
IAToolkit gives you everything you need to build secure, production-grade assistants — from data access,
|
|
23
|
+
multi-tenant architecture, and tool execution to prompt orchestration, semantic search,
|
|
24
|
+
and full UI integration — all powered by a clean, extensible Python API.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### 🔌 Connect to Anything
|
|
29
|
+
Build AI assistants that truly understand your business.
|
|
30
|
+
|
|
31
|
+
- Connect to **SQL databases** (PostgreSQL, MySQL, SQLite)
|
|
32
|
+
- Query structured data using natural language
|
|
33
|
+
- Perform **semantic search** on PDFs, DOCX, TXT, XLSX
|
|
34
|
+
- Works as a full RAG engine out-of-the-box
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### 🏢 Multi-Tenant by Design
|
|
39
|
+
Ideal for SaaS, agencies, consultancies, or large enterprises.
|
|
40
|
+
|
|
41
|
+
- Isolated **Company Modules**
|
|
42
|
+
- Each company defines its own:
|
|
43
|
+
- data sources
|
|
44
|
+
- prompts
|
|
45
|
+
- custom tools
|
|
46
|
+
- branding + UI theme
|
|
47
|
+
- Clean separation for multi-client deployments
|
|
48
|
+
- Perfect for scaling from 1 to 100 customers
|
|
49
|
+
- Configure everything using simple YAML
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 🧩 Extensible & Provider-Agnostic
|
|
54
|
+
Customize every layer and keep full control.
|
|
55
|
+
|
|
56
|
+
- Add **custom tools** the LLM can call (SQL, API, Python functions)
|
|
57
|
+
- Swap between **OpenAI (GPT)**, **Google Gemini**, or future models
|
|
58
|
+
- Built on dependency injection for maximum modularity
|
|
59
|
+
- Extend prompts, dispatchers, services, and LLM clients effortlessly
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### 🛡️ Built for Production
|
|
64
|
+
Designed for real-world systems — reliable, maintainable, and scalable.
|
|
65
|
+
|
|
66
|
+
- Integrated authentication and session handling
|
|
67
|
+
- Secure secret management via environment variables
|
|
68
|
+
- Detailed logging of prompts, tool calls, and token usage
|
|
69
|
+
- Structured architecture with **90%+ automated test coverage**
|
|
70
|
+
- Clean separation of UI, business logic, and LLM orchestration
|
|
71
|
+
- Runs anywhere: local machine, docker, cloud, serverless
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 🎓 Learn How Real AI Applications Are Built
|
|
76
|
+
IAToolkit is also an excellent learning resource:
|
|
77
|
+
|
|
78
|
+
- Understand how to orchestrate multiple LLM calls
|
|
79
|
+
- Learn how tools, SQL, vector search and prompts interact
|
|
80
|
+
- Explore a complete architecture for real AI products
|
|
81
|
+
- Use the Sample Company demo to practice building AI assistants
|
|
82
|
+
- Perfect for developers, students, and teams exploring enterprise AI
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 🚀 Getting Started in 3 Minutes
|
|
87
|
+
|
|
88
|
+
Get your first AI assistant running locally by following our "Hello World" example.
|
|
89
|
+
Our detailed guide will walk you through setting up your virtual environment, configuring your `.env` file,
|
|
90
|
+
and launching the application.
|
|
91
|
+
|
|
92
|
+
➡️ **[Start the Quickstart Guide](./docs/quickstart.md)**
|
|
93
|
+
|
|
94
|
+
## 📚 Documentation
|
|
95
|
+
|
|
96
|
+
Our documentation is designed for users of all levels, from initial setup to advanced development.
|
|
97
|
+
|
|
98
|
+
| Guide | Description |
|
|
99
|
+
| --------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
100
|
+
| 🚀 **[Quickstart Guide](./docs/quickstart.md)** | The fastest way to install, configure, and run IAToolkit for the first time. |
|
|
101
|
+
| ⚙️ **[Companies & Components](./docs/companies_and_components.md)** | A deep dive into the `company.yaml` file, the core of all configuration. |
|
|
102
|
+
| 💻 **[Programming Guide](./docs/programming_guide.md)** | Understand the internal architecture, services, and design patterns to extend the framework. |
|
|
103
|
+
| ☁️ **[Deployment Guide](./docs/deployment_guide.md)** | Learn how to deploy your IAToolkit application to a production environment. |
|
|
104
|
+
| 🗃️ **[Database Guide](./docs/database_guide.md)** | An overview of the core database schema used by the IAToolkit framework itself. |
|
|
105
|
+
|
|
106
|
+
➡️ **[Explore all documentation](./docs/index.md)**
|
|
107
|
+
|
|
108
|
+
## 🤝 Contributing
|
|
109
|
+
|
|
110
|
+
We welcome contributions of all kinds! Whether it's a new feature, a bug fix, or an improvement to the documentation, your help is appreciated. Please read our **[Contributing Guide](./contributing.md)** to get started.
|
|
111
|
+
|
|
112
|
+
## 📄 License
|
|
113
|
+
|
|
114
|
+
IAToolkit is open-source software licensed under the **[MIT License](./LICENSE)**.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
bcrypt==4.2.1
|
|
2
|
+
boto3==1.36.22
|
|
3
|
+
botocore==1.36.22
|
|
4
|
+
build==1.2.2.post1
|
|
5
|
+
click==8.1.8
|
|
6
|
+
cryptography==44.0.3
|
|
7
|
+
Flask==3.1.0
|
|
8
|
+
Flask-Bcrypt==1.0.1
|
|
9
|
+
flask-cors==6.0.0
|
|
10
|
+
Flask-Injector==0.15.0
|
|
11
|
+
Flask-Session==0.8.0
|
|
12
|
+
flatbuffers==24.3.25
|
|
13
|
+
google-ai-generativelanguage==0.6.15
|
|
14
|
+
google-api-core==2.24.1
|
|
15
|
+
google-api-python-client==2.161.0
|
|
16
|
+
google-auth==2.37.0
|
|
17
|
+
google-auth-httplib2==0.2.0
|
|
18
|
+
google-auth-oauthlib==1.2.1
|
|
19
|
+
google-cloud-core==2.4.1
|
|
20
|
+
google-cloud-storage==3.0.0
|
|
21
|
+
google-crc32c==1.6.0
|
|
22
|
+
google-generativeai==0.8.5
|
|
23
|
+
google-resumable-media==2.7.2
|
|
24
|
+
googleapis-common-protos==1.66.0
|
|
25
|
+
gunicorn==23.0.0
|
|
26
|
+
h11==0.14.0
|
|
27
|
+
httpcore==1.0.7
|
|
28
|
+
httplib2==0.22.0
|
|
29
|
+
httptools==0.6.4
|
|
30
|
+
httpx==0.28.0
|
|
31
|
+
httpx-sse==0.4.0
|
|
32
|
+
huggingface-hub==0.31.4
|
|
33
|
+
humanfriendly==10.0
|
|
34
|
+
idna==3.10
|
|
35
|
+
injector==0.22.0
|
|
36
|
+
Jinja2==3.1.5
|
|
37
|
+
langchain==0.3.19
|
|
38
|
+
langchain-core==0.3.35
|
|
39
|
+
langchain-text-splitters==0.3.6
|
|
40
|
+
markdown2==2.5.3
|
|
41
|
+
openai==1.79.0
|
|
42
|
+
openpyxl==3.1.5
|
|
43
|
+
pandas==2.3.1
|
|
44
|
+
pgvector==0.3.6
|
|
45
|
+
pillow==11.0.0
|
|
46
|
+
psutil==7.0.0
|
|
47
|
+
psycopg2-binary==2.9.10
|
|
48
|
+
PyJWT==2.10.1
|
|
49
|
+
PyMuPDF==1.25.0
|
|
50
|
+
python-dotenv==1.0.1
|
|
51
|
+
pytest==8.3.4
|
|
52
|
+
pytest-cov==5.0.0
|
|
53
|
+
pytest-mock==3.14.0
|
|
54
|
+
python-dateutil==2.9.0.post0
|
|
55
|
+
python-docx==1.1.2
|
|
56
|
+
pytesseract==0.3.13
|
|
57
|
+
pytz==2025.2
|
|
58
|
+
PyYAML==6.0.2
|
|
59
|
+
redis==5.2.1
|
|
60
|
+
regex==2024.11.6
|
|
61
|
+
requests==2.32.3
|
|
62
|
+
requests-oauthlib==2.0.0
|
|
63
|
+
requests-toolbelt==1.0.0
|
|
64
|
+
s3transfer==0.11.2
|
|
65
|
+
sib-api-v3-sdk==7.6.0
|
|
66
|
+
SQLAlchemy==2.0.36
|
|
67
|
+
tiktoken==0.8.0
|
|
68
|
+
tokenizers==0.21.0
|
|
69
|
+
websocket-client==1.8.0
|
|
70
|
+
websockets==14.1
|
|
71
|
+
Werkzeug==3.1.3
|
|
@@ -5,20 +5,18 @@ IAToolkit Package
|
|
|
5
5
|
# Expose main classes and functions at the top level of the package
|
|
6
6
|
|
|
7
7
|
# main IAToolkit class
|
|
8
|
-
from .iatoolkit import IAToolkit,
|
|
8
|
+
from .iatoolkit import IAToolkit, create_app, current_iatoolkit
|
|
9
9
|
|
|
10
10
|
# for registering the client companies
|
|
11
11
|
from .company_registry import register_company
|
|
12
12
|
from .base_company import BaseCompany
|
|
13
|
-
from iatoolkit.repositories.database_manager import DatabaseManager
|
|
14
13
|
|
|
15
14
|
# --- Services ---
|
|
16
15
|
from iatoolkit.services.query_service import QueryService
|
|
17
|
-
from iatoolkit.services.sql_service import SqlService
|
|
18
16
|
from iatoolkit.services.document_service import DocumentService
|
|
19
17
|
from iatoolkit.services.search_service import SearchService
|
|
18
|
+
from iatoolkit.services.sql_service import SqlService
|
|
20
19
|
from iatoolkit.services.load_documents_service import LoadDocumentsService
|
|
21
|
-
from iatoolkit.services.excel_service import ExcelService
|
|
22
20
|
from iatoolkit.infra.call_service import CallServiceClient
|
|
23
21
|
|
|
24
22
|
__all__ = [
|
|
@@ -27,10 +25,8 @@ __all__ = [
|
|
|
27
25
|
'current_iatoolkit',
|
|
28
26
|
'register_company',
|
|
29
27
|
'BaseCompany',
|
|
30
|
-
'DatabaseManager',
|
|
31
28
|
'QueryService',
|
|
32
29
|
'SqlService',
|
|
33
|
-
'ExcelService',
|
|
34
30
|
'DocumentService',
|
|
35
31
|
'SearchService',
|
|
36
32
|
'LoadDocumentsService',
|
|
@@ -7,10 +7,9 @@
|
|
|
7
7
|
from abc import ABC, abstractmethod
|
|
8
8
|
from iatoolkit.repositories.profile_repo import ProfileRepo
|
|
9
9
|
from iatoolkit.repositories.llm_query_repo import LLMQueryRepo
|
|
10
|
-
|
|
11
10
|
from iatoolkit.services.prompt_manager_service import PromptService
|
|
12
11
|
from iatoolkit.repositories.models import Company, Function, PromptCategory
|
|
13
|
-
from iatoolkit import IAToolkit
|
|
12
|
+
from .iatoolkit import IAToolkit
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
class BaseCompany(ABC):
|
|
@@ -21,23 +20,16 @@ class BaseCompany(ABC):
|
|
|
21
20
|
self.llm_query_repo: LLMQueryRepo = injector.get(LLMQueryRepo)
|
|
22
21
|
self.prompt_service: PromptService = injector.get(PromptService)
|
|
23
22
|
self.company: Company | None = None
|
|
24
|
-
|
|
25
|
-
def _load_company_by_short_name(self, short_name: str) -> Company:
|
|
26
|
-
self.company = self.profile_repo.get_company_by_short_name(short_name)
|
|
27
|
-
return self.company
|
|
23
|
+
self.company_short_name: str
|
|
28
24
|
|
|
29
25
|
def _create_company(self,
|
|
30
26
|
short_name: str,
|
|
31
27
|
name: str,
|
|
32
28
|
parameters: dict | None = None,
|
|
33
|
-
branding: dict | None = None,
|
|
34
|
-
onboarding_cards: dict | None = None,
|
|
35
29
|
) -> Company:
|
|
36
30
|
company_obj = Company(short_name=short_name,
|
|
37
31
|
name=name,
|
|
38
|
-
parameters=parameters
|
|
39
|
-
branding=branding,
|
|
40
|
-
onboarding_cards=onboarding_cards)
|
|
32
|
+
parameters=parameters)
|
|
41
33
|
self.company = self.profile_repo.create_company(company_obj)
|
|
42
34
|
return self.company
|
|
43
35
|
|
|
@@ -77,17 +69,6 @@ class BaseCompany(ABC):
|
|
|
77
69
|
**kwargs
|
|
78
70
|
)
|
|
79
71
|
|
|
80
|
-
|
|
81
|
-
@abstractmethod
|
|
82
|
-
# initialize all the database tables needed
|
|
83
|
-
def register_company(self):
|
|
84
|
-
raise NotImplementedError("La subclase debe implementar el método create_company()")
|
|
85
|
-
|
|
86
|
-
@abstractmethod
|
|
87
|
-
# get context specific for this company
|
|
88
|
-
def get_company_context(self, **kwargs) -> str:
|
|
89
|
-
raise NotImplementedError("La subclase debe implementar el método get_company_context()")
|
|
90
|
-
|
|
91
72
|
@abstractmethod
|
|
92
73
|
# get context specific for this company
|
|
93
74
|
def get_user_info(self, user_identifier: str) -> dict:
|
|
@@ -99,15 +80,6 @@ class BaseCompany(ABC):
|
|
|
99
80
|
raise NotImplementedError("La subclase debe implementar el método handle_request()")
|
|
100
81
|
|
|
101
82
|
@abstractmethod
|
|
102
|
-
# get context specific for the query
|
|
103
|
-
def start_execution(self):
|
|
104
|
-
raise NotImplementedError("La subclase debe implementar el método start_execution()")
|
|
105
|
-
|
|
106
|
-
@abstractmethod
|
|
107
|
-
# get context specific for the query
|
|
108
|
-
def get_metadata_from_filename(self, filename: str) -> dict:
|
|
109
|
-
raise NotImplementedError("La subclase debe implementar el método get_query_context()")
|
|
110
|
-
|
|
111
83
|
def register_cli_commands(self, app):
|
|
112
84
|
"""
|
|
113
85
|
optional method for a company definition of it's cli commands
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
import logging
|
|
8
|
-
from iatoolkit import IAToolkit
|
|
8
|
+
from .iatoolkit import IAToolkit
|
|
9
9
|
from iatoolkit.services.profile_service import ProfileService
|
|
10
10
|
|
|
11
11
|
def register_core_commands(app):
|
|
@@ -17,26 +17,24 @@ def register_core_commands(app):
|
|
|
17
17
|
"""⚙️ Genera una nueva API key para una compañía ya registrada."""
|
|
18
18
|
try:
|
|
19
19
|
profile_service = IAToolkit.get_instance().get_injector().get(ProfileService)
|
|
20
|
-
click.echo(f"🔑
|
|
20
|
+
click.echo(f"🔑 Generating API-KEY for company: '{company_short_name}'...")
|
|
21
21
|
result = profile_service.new_api_key(company_short_name)
|
|
22
22
|
|
|
23
23
|
if 'error' in result:
|
|
24
24
|
click.echo(f"❌ Error: {result['error']}")
|
|
25
|
-
click.echo("👉
|
|
25
|
+
click.echo("👉 Make sure the company is registered and valid.")
|
|
26
26
|
else:
|
|
27
|
-
click.echo("✅ ¡
|
|
27
|
+
click.echo("✅ ¡Api-key is ready! add this variable to your environment:")
|
|
28
28
|
click.echo(f"IATOOLKIT_API_KEY='{result['api-key']}'")
|
|
29
29
|
except Exception as e:
|
|
30
30
|
logging.exception(e)
|
|
31
|
-
click.echo(f"❌
|
|
31
|
+
click.echo(f"❌ unexpectd error during the configuration: {e}")
|
|
32
32
|
|
|
33
33
|
@app.cli.command("encrypt-key")
|
|
34
34
|
@click.argument("key")
|
|
35
35
|
def encrypt_llm_api_key(key: str):
|
|
36
36
|
from iatoolkit.common.util import Utility
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
38
|
util = IAToolkit.get_instance().get_injector().get(Utility)
|
|
41
39
|
try:
|
|
42
40
|
encrypt_key = util.encrypt_key(key)
|
|
@@ -20,13 +20,13 @@ def register_views(injector, app):
|
|
|
20
20
|
from iatoolkit.views.verify_user_view import VerifyAccountView
|
|
21
21
|
from iatoolkit.views.forgot_password_view import ForgotPasswordView
|
|
22
22
|
from iatoolkit.views.change_password_view import ChangePasswordView
|
|
23
|
-
from iatoolkit.views.
|
|
23
|
+
from iatoolkit.views.load_document_api_view import LoadDocumentApiView
|
|
24
24
|
from iatoolkit.views.user_feedback_api_view import UserFeedbackApiView
|
|
25
25
|
from iatoolkit.views.prompt_api_view import PromptApiView
|
|
26
26
|
from iatoolkit.views.history_api_view import HistoryApiView
|
|
27
27
|
from iatoolkit.views.help_content_api_view import HelpContentApiView
|
|
28
28
|
from iatoolkit.views.profile_api_view import UserLanguageApiView # <-- Importa la nueva vista
|
|
29
|
-
|
|
29
|
+
from iatoolkit.views.embedding_api_view import EmbeddingApiView
|
|
30
30
|
from iatoolkit.views.login_view import LoginView, FinalizeContextView
|
|
31
31
|
from iatoolkit.views.external_login_view import ExternalLoginView, RedeemTokenApiView
|
|
32
32
|
from iatoolkit.views.logout_api_view import LogoutApiView
|
|
@@ -97,7 +97,11 @@ def register_views(injector, app):
|
|
|
97
97
|
app.add_url_rule('/tasks/review/<int:task_id>', view_func=TaskReviewApiView.as_view('tasks-review'))
|
|
98
98
|
|
|
99
99
|
# this endpoint is for upload documents into the vector store (api-key)
|
|
100
|
-
app.add_url_rule('/api/load', view_func=
|
|
100
|
+
app.add_url_rule('/api/load-document', view_func=LoadDocumentApiView.as_view('load-document'), methods=['POST'])
|
|
101
|
+
|
|
102
|
+
# this endpoint is for generating embeddings for a given text
|
|
103
|
+
app.add_url_rule('/<company_short_name>/api/embedding',
|
|
104
|
+
view_func=EmbeddingApiView.as_view('embedding_api'))
|
|
101
105
|
|
|
102
106
|
|
|
103
107
|
@app.route('/download/<path:filename>')
|
|
@@ -31,10 +31,9 @@ class CompanyRegistry:
|
|
|
31
31
|
|
|
32
32
|
# save the created instance in the registry
|
|
33
33
|
self._company_instances[company_key] = company_instance
|
|
34
|
-
logging.info(f"company '{company_key}' instantiated")
|
|
35
34
|
|
|
36
35
|
except Exception as e:
|
|
37
|
-
logging.error(f"Error
|
|
36
|
+
logging.error(f"Error while creating company instance for {company_key}: {e}")
|
|
38
37
|
logging.exception(e)
|
|
39
38
|
raise
|
|
40
39
|
|