iatoolkit 0.67.0__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.
Files changed (142) hide show
  1. iatoolkit-0.76.0/PKG-INFO +196 -0
  2. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/pyproject.toml +1 -1
  3. iatoolkit-0.76.0/readme.md +114 -0
  4. iatoolkit-0.76.0/requirements.txt +71 -0
  5. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/__init__.py +2 -8
  6. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/base_company.py +2 -11
  7. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/cli_commands.py +5 -7
  8. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/common/exceptions.py +1 -0
  9. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/common/routes.py +7 -3
  10. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/common/util.py +1 -1
  11. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/iatoolkit.py +20 -27
  12. iatoolkit-0.67.0/src/iatoolkit/infra/mail_app.py → iatoolkit-0.76.0/src/iatoolkit/infra/brevo_mail_app.py +15 -37
  13. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_client.py +10 -14
  14. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_proxy.py +38 -10
  15. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/locales/en.yaml +4 -3
  16. iatoolkit-0.76.0/src/iatoolkit/locales/es.yaml +165 -0
  17. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/database_manager.py +5 -0
  18. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/models.py +18 -19
  19. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/profile_repo.py +5 -10
  20. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/vs_repo.py +32 -21
  21. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/auth_service.py +1 -1
  22. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/branding_service.py +8 -6
  23. iatoolkit-0.76.0/src/iatoolkit/services/company_context_service.py +155 -0
  24. iatoolkit-0.76.0/src/iatoolkit/services/configuration_service.py +269 -0
  25. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/dispatcher_service.py +67 -66
  26. iatoolkit-0.76.0/src/iatoolkit/services/embedding_service.py +144 -0
  27. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/excel_service.py +1 -1
  28. iatoolkit-0.76.0/src/iatoolkit/services/history_manager_service.py +189 -0
  29. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/jwt_service.py +1 -1
  30. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/language_service.py +10 -6
  31. iatoolkit-0.76.0/src/iatoolkit/services/load_documents_service.py +174 -0
  32. iatoolkit-0.76.0/src/iatoolkit/services/mail_service.py +213 -0
  33. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/profile_service.py +33 -11
  34. iatoolkit-0.76.0/src/iatoolkit/services/query_service.py +448 -0
  35. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/search_service.py +11 -4
  36. iatoolkit-0.76.0/src/iatoolkit/services/sql_service.py +92 -0
  37. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/user_feedback_service.py +18 -6
  38. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/user_session_context_service.py +18 -0
  39. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_main.js +17 -4
  40. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_onboarding_button.js +6 -0
  41. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +1 -1
  42. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/onboarding.css +7 -0
  43. iatoolkit-0.76.0/src/iatoolkit/system_prompts/__init__.py +0 -0
  44. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/query_main.prompt +3 -11
  45. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/change_password.html +1 -1
  46. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat.html +1 -0
  47. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/chat_modals.html +1 -0
  48. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/error.html +1 -1
  49. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/login_simulation.html +1 -1
  50. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/onboarding_shell.html +4 -1
  51. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/base_login_view.py +7 -8
  52. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/change_password_view.py +3 -4
  53. iatoolkit-0.76.0/src/iatoolkit/views/embedding_api_view.py +65 -0
  54. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/external_login_view.py +4 -4
  55. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/forgot_password_view.py +6 -6
  56. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/help_content_api_view.py +1 -1
  57. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/history_api_view.py +3 -3
  58. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/home_view.py +2 -2
  59. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/init_context_api_view.py +17 -16
  60. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/llmquery_api_view.py +4 -2
  61. iatoolkit-0.67.0/src/iatoolkit/views/file_store_api_view.py → iatoolkit-0.76.0/src/iatoolkit/views/load_document_api_view.py +2 -2
  62. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/login_simulation_view.py +4 -1
  63. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/login_view.py +9 -9
  64. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/signup_view.py +3 -5
  65. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/verify_user_view.py +2 -4
  66. iatoolkit-0.76.0/src/iatoolkit.egg-info/PKG-INFO +196 -0
  67. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/SOURCES.txt +7 -4
  68. iatoolkit-0.76.0/src/iatoolkit.egg-info/requires.txt +71 -0
  69. iatoolkit-0.67.0/PKG-INFO +0 -276
  70. iatoolkit-0.67.0/readme.md +0 -65
  71. iatoolkit-0.67.0/requirements.txt +0 -200
  72. iatoolkit-0.67.0/src/iatoolkit/locales/es.yaml +0 -163
  73. iatoolkit-0.67.0/src/iatoolkit/services/configuration_service.py +0 -140
  74. iatoolkit-0.67.0/src/iatoolkit/services/history_service.py +0 -38
  75. iatoolkit-0.67.0/src/iatoolkit/services/load_documents_service.py +0 -187
  76. iatoolkit-0.67.0/src/iatoolkit/services/mail_service.py +0 -67
  77. iatoolkit-0.67.0/src/iatoolkit/services/onboarding_service.py +0 -49
  78. iatoolkit-0.67.0/src/iatoolkit/services/query_service.py +0 -373
  79. iatoolkit-0.67.0/src/iatoolkit/services/sql_service.py +0 -64
  80. iatoolkit-0.67.0/src/iatoolkit.egg-info/PKG-INFO +0 -276
  81. iatoolkit-0.67.0/src/iatoolkit.egg-info/requires.txt +0 -200
  82. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/LICENSE +0 -0
  83. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/setup.cfg +0 -0
  84. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/common/__init__.py +0 -0
  85. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/common/session_manager.py +0 -0
  86. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/company_registry.py +0 -0
  87. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/__init__.py +0 -0
  88. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/call_service.py +0 -0
  89. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  90. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  91. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  92. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  93. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  94. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  95. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  96. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  97. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  98. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/llm_response.py +0 -0
  99. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
  100. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  101. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/__init__.py +0 -0
  102. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  103. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  104. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  105. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/__init__.py +0 -0
  106. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  107. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/document_service.py +0 -0
  108. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  109. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/i18n_service.py +0 -0
  110. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  111. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/services/tasks_service.py +0 -0
  112. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  113. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  114. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  115. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  116. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  117. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  118. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  119. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  120. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  121. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
  122. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
  123. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  124. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  125. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  126. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/_company_header.html +0 -0
  127. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/_login_widget.html +0 -0
  128. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/about.html +0 -0
  129. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/base.html +0 -0
  130. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  131. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/index.html +0 -0
  132. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/templates/signup.html +0 -0
  133. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/__init__.py +0 -0
  134. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/index_view.py +0 -0
  135. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/logout_api_view.py +0 -0
  136. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/profile_api_view.py +0 -0
  137. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
  138. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_api_view.py +0 -0
  139. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
  140. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  141. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  142. {iatoolkit-0.67.0 → iatoolkit-0.76.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -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
+ ![IAToolkit Demo](./docs/assets/iatoolkit-demo.gif)
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)**.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.67.0"
7
+ version = "0.76.0"
8
8
  requires-python = ">=3.12"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -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
+ ![IAToolkit Demo](./docs/assets/iatoolkit-demo.gif)
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,21 +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, current_iatoolkit, create_app
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
- from iatoolkit.services.configuration_service import ConfigurationService
17
15
  from iatoolkit.services.query_service import QueryService
18
- from iatoolkit.services.sql_service import SqlService
19
16
  from iatoolkit.services.document_service import DocumentService
20
17
  from iatoolkit.services.search_service import SearchService
18
+ from iatoolkit.services.sql_service import SqlService
21
19
  from iatoolkit.services.load_documents_service import LoadDocumentsService
22
- from iatoolkit.services.excel_service import ExcelService
23
20
  from iatoolkit.infra.call_service import CallServiceClient
24
21
 
25
22
  __all__ = [
@@ -28,11 +25,8 @@ __all__ = [
28
25
  'current_iatoolkit',
29
26
  'register_company',
30
27
  'BaseCompany',
31
- 'DatabaseManager',
32
28
  'QueryService',
33
- 'ConfigurationService',
34
29
  'SqlService',
35
- 'ExcelService',
36
30
  'DocumentService',
37
31
  'SearchService',
38
32
  'LoadDocumentsService',
@@ -9,7 +9,7 @@ from iatoolkit.repositories.profile_repo import ProfileRepo
9
9
  from iatoolkit.repositories.llm_query_repo import LLMQueryRepo
10
10
  from iatoolkit.services.prompt_manager_service import PromptService
11
11
  from iatoolkit.repositories.models import Company, Function, PromptCategory
12
- from iatoolkit import IAToolkit
12
+ from .iatoolkit import IAToolkit
13
13
 
14
14
 
15
15
  class BaseCompany(ABC):
@@ -20,6 +20,7 @@ class BaseCompany(ABC):
20
20
  self.llm_query_repo: LLMQueryRepo = injector.get(LLMQueryRepo)
21
21
  self.prompt_service: PromptService = injector.get(PromptService)
22
22
  self.company: Company | None = None
23
+ self.company_short_name: str
23
24
 
24
25
  def _create_company(self,
25
26
  short_name: str,
@@ -68,12 +69,6 @@ class BaseCompany(ABC):
68
69
  **kwargs
69
70
  )
70
71
 
71
-
72
- @abstractmethod
73
- # get context specific for this company
74
- def get_company_context(self, **kwargs) -> str:
75
- raise NotImplementedError("La subclase debe implementar el método get_company_context()")
76
-
77
72
  @abstractmethod
78
73
  # get context specific for this company
79
74
  def get_user_info(self, user_identifier: str) -> dict:
@@ -85,10 +80,6 @@ class BaseCompany(ABC):
85
80
  raise NotImplementedError("La subclase debe implementar el método handle_request()")
86
81
 
87
82
  @abstractmethod
88
- # get context specific for the query
89
- def get_metadata_from_filename(self, filename: str) -> dict:
90
- raise NotImplementedError("La subclase debe implementar el método get_query_context()")
91
-
92
83
  def register_cli_commands(self, app):
93
84
  """
94
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"🔑 Generando API key para '{company_short_name}'...")
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("👉 Asegúrate de que el nombre de la compañía es correcto y está registrada.")
25
+ click.echo("👉 Make sure the company is registered and valid.")
26
26
  else:
27
- click.echo("✅ ¡Configuración lista! Agrega esta variable a tu entorno:")
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"❌ Ocurrió un error inesperado durante la configuración: {e}")
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)
@@ -37,6 +37,7 @@ class IAToolkitException(Exception):
37
37
  LOAD_DOCUMENT_ERROR = 25
38
38
  INVALID_USER = 26
39
39
  VECTOR_STORE_ERROR = 27
40
+ EMBEDDING_ERROR = 28
40
41
 
41
42
 
42
43
 
@@ -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.file_store_api_view import FileStoreApiView
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=FileStoreApiView.as_view('load_api'))
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>')
@@ -343,6 +343,6 @@ class Utility:
343
343
 
344
344
  def is_gemini_model(self, model: str) -> bool:
345
345
  gemini_models = [
346
- 'gemini', 'gemini-2.5-pro'
346
+ 'gemini', 'gemini-2.5-pro', 'gemini-3'
347
347
  ]
348
348
  return any(gemini_model in model.lower() for gemini_model in gemini_models)