iatoolkit 0.58.1__py3-none-any.whl → 0.58.4__py3-none-any.whl
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.
Potentially problematic release.
This version of iatoolkit might be problematic. Click here for more details.
- iatoolkit/iatoolkit.py +1 -1
- iatoolkit/infra/llm_client.py +1 -1
- iatoolkit/infra/openai_adapter.py +1 -1
- iatoolkit/services/query_service.py +1 -1
- iatoolkit/static/js/chat_context_reload.js +60 -0
- iatoolkit/templates/index.html +1 -1
- iatoolkit/views/external_login_view.py +10 -1
- iatoolkit/views/init_context_api_view.py +2 -2
- iatoolkit/views/llmquery_api_view.py +4 -1
- {iatoolkit-0.58.1.dist-info → iatoolkit-0.58.4.dist-info}/METADATA +1 -1
- {iatoolkit-0.58.1.dist-info → iatoolkit-0.58.4.dist-info}/RECORD +13 -12
- {iatoolkit-0.58.1.dist-info → iatoolkit-0.58.4.dist-info}/WHEEL +0 -0
- {iatoolkit-0.58.1.dist-info → iatoolkit-0.58.4.dist-info}/top_level.txt +0 -0
iatoolkit/iatoolkit.py
CHANGED
|
@@ -19,7 +19,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
|
|
|
19
19
|
from injector import Binder, singleton, Injector
|
|
20
20
|
from importlib.metadata import version as _pkg_version, PackageNotFoundError
|
|
21
21
|
|
|
22
|
-
IATOOLKIT_VERSION = "0.58.
|
|
22
|
+
IATOOLKIT_VERSION = "0.58.4"
|
|
23
23
|
|
|
24
24
|
# global variable for the unique instance of IAToolkit
|
|
25
25
|
_iatoolkit_instance: Optional['IAToolkit'] = None
|
iatoolkit/infra/llm_client.py
CHANGED
|
@@ -21,7 +21,7 @@ import tiktoken
|
|
|
21
21
|
from typing import Dict, Optional, List
|
|
22
22
|
from iatoolkit.services.dispatcher_service import Dispatcher
|
|
23
23
|
|
|
24
|
-
CONTEXT_ERROR_MESSAGE = 'Tu consulta supera el límite de contexto,
|
|
24
|
+
CONTEXT_ERROR_MESSAGE = 'Tu consulta supera el límite de contexto, utiliza el boton de recarga de contexto.'
|
|
25
25
|
|
|
26
26
|
class llmClient:
|
|
27
27
|
_llm_clients_cache = {} # class attribute, for the clients cache
|
|
@@ -55,7 +55,7 @@ class OpenAIAdapter:
|
|
|
55
55
|
|
|
56
56
|
# En caso de error de contexto
|
|
57
57
|
if "context_length_exceeded" in str(e):
|
|
58
|
-
error_message = 'Tu consulta supera el limite de contexto
|
|
58
|
+
error_message = 'Tu consulta supera el limite de contexto. Reinicia el contexto con el boton de la barra superior.'
|
|
59
59
|
|
|
60
60
|
raise IAToolkitException(IAToolkitException.ErrorType.LLM_ERROR, error_message)
|
|
61
61
|
|
|
@@ -196,7 +196,7 @@ class QueryService:
|
|
|
196
196
|
previous_response_id = self.session_context.get_last_response_id(company.short_name, user_identifier)
|
|
197
197
|
if not previous_response_id:
|
|
198
198
|
return {'error': True,
|
|
199
|
-
"error_message": f"
|
|
199
|
+
"error_message": f"No se encontró 'previous_response_id' para '{company.short_name}/{user_identifier}'. Reinicia el contexto para continuar."
|
|
200
200
|
}
|
|
201
201
|
elif self.util.is_gemini_model(self.model):
|
|
202
202
|
# check the length of the context_history and remove old messages
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
2
|
+
const reloadButton = document.getElementById('force-reload-button');
|
|
3
|
+
if (!reloadButton) return;
|
|
4
|
+
|
|
5
|
+
const originalIconClass = 'bi bi-arrow-clockwise';
|
|
6
|
+
const spinnerIconClass = 'spinner-border spinner-border-sm';
|
|
7
|
+
|
|
8
|
+
// Configuración de Toastr para que aparezca abajo a la derecha
|
|
9
|
+
toastr.options = { "positionClass": "toast-bottom-right", "preventDuplicates": true };
|
|
10
|
+
|
|
11
|
+
reloadButton.addEventListener('click', function(event) {
|
|
12
|
+
event.preventDefault();
|
|
13
|
+
|
|
14
|
+
if (reloadButton.disabled) return; // Prevenir doble clic
|
|
15
|
+
|
|
16
|
+
// 1. Deshabilitar y mostrar spinner
|
|
17
|
+
reloadButton.disabled = true;
|
|
18
|
+
const icon = reloadButton.querySelector('i');
|
|
19
|
+
icon.className = spinnerIconClass;
|
|
20
|
+
toastr.info('Iniciando recarga de contexto en segundo plano...');
|
|
21
|
+
|
|
22
|
+
// 2. Construir la URL dinámicamente
|
|
23
|
+
const company = window.companyShortName;
|
|
24
|
+
const reloadUrl = `/${company}/api/init-context`;
|
|
25
|
+
|
|
26
|
+
// 3. Hacer la llamada AJAX con POST
|
|
27
|
+
fetch(reloadUrl, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: {
|
|
30
|
+
'Content-Type': 'application/json'
|
|
31
|
+
},
|
|
32
|
+
// Envía un cuerpo vacío o los datos necesarios
|
|
33
|
+
body: JSON.stringify({})
|
|
34
|
+
})
|
|
35
|
+
.then(response => {
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
return response.json().then(err => {
|
|
38
|
+
throw new Error(err.error_message || `Error del servidor: ${response.status}`);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return response.json();
|
|
42
|
+
})
|
|
43
|
+
.then(data => {
|
|
44
|
+
if (data.status === 'OK') {
|
|
45
|
+
toastr.success(data.message || 'Contexto recargado exitosamente.');
|
|
46
|
+
} else {
|
|
47
|
+
toastr.error(data.error_message || 'Ocurrió un error desconocido.');
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
.catch(error => {
|
|
51
|
+
console.error('Error durante la recarga del contexto:', error);
|
|
52
|
+
toastr.error(error.message || 'Error de red al intentar recargar.');
|
|
53
|
+
})
|
|
54
|
+
.finally(() => {
|
|
55
|
+
// 4. Restaurar el botón
|
|
56
|
+
reloadButton.disabled = false;
|
|
57
|
+
icon.className = originalIconClass;
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
iatoolkit/templates/index.html
CHANGED
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
</div>
|
|
137
137
|
<p class="author-bio mb-0">
|
|
138
138
|
Soy <strong>Fernando Libedinsky</strong>, ingeniero de software y creador de <strong>IAToolkit</strong>.
|
|
139
|
-
<br>Tras una extensa trayectoria en el desarrollo de
|
|
139
|
+
<br>Tras una extensa trayectoria en el desarrollo de software, sigo movido por la misma curiosidad que me llevó a programar por primera vez: aprender, explorar y construir cosas nuevas.
|
|
140
140
|
<br>IAToolkit es la continuación de ese impulso, una plataforma creada para conectar rapidamente empresas con la inteligencia artificial.
|
|
141
141
|
</p>
|
|
142
142
|
</div>
|
|
@@ -80,4 +80,13 @@ class RedeemTokenApiView(BaseLoginView):
|
|
|
80
80
|
if not redeem_result['success']:
|
|
81
81
|
return {"error": redeem_result['error']}, 401
|
|
82
82
|
|
|
83
|
-
return {"status": "ok"}, 200
|
|
83
|
+
return {"status": "ok"}, 200
|
|
84
|
+
|
|
85
|
+
def options(self, company_short_name: str):
|
|
86
|
+
"""
|
|
87
|
+
Handles CORS preflight requests.
|
|
88
|
+
The browser sends an OPTIONS request to this endpoint before the actual POST
|
|
89
|
+
to check permissions. This method simply returns a 200 OK, assuming
|
|
90
|
+
a CORS middleware will add the necessary 'Access-Control-Allow-*' headers.
|
|
91
|
+
"""
|
|
92
|
+
return {}, 200
|
|
@@ -56,8 +56,8 @@ class InitContextApiView(MethodView):
|
|
|
56
56
|
# logging.info(f"Context for {company_short_name}/{user_identifier} rebuilt successfully.")
|
|
57
57
|
|
|
58
58
|
# 3. Respond with JSON, as this is an API endpoint.
|
|
59
|
-
return jsonify({'status': 'OK', 'message': '
|
|
59
|
+
return jsonify({'status': 'OK', 'message': 'El context se ha recargado con éxito.'}), 200
|
|
60
60
|
|
|
61
61
|
except Exception as e:
|
|
62
|
-
logging.exception(f"Error
|
|
62
|
+
logging.exception(f"Error durante la recarga de contexto {user_identifier}: {e}")
|
|
63
63
|
return jsonify({"error_message": str(e)}), 500
|
|
@@ -2,7 +2,7 @@ iatoolkit/__init__.py,sha256=4PWjMJjktixtrxF6BY405qyA50Sv967kEP2x-oil6qk,1120
|
|
|
2
2
|
iatoolkit/base_company.py,sha256=nfF-G0h63jy3Qh9kCnvx8Ozx76IjG2p7a34HpweWhOk,4608
|
|
3
3
|
iatoolkit/cli_commands.py,sha256=G5L9xQXZ0lVFXQWBaE_KEZHyfuiT6PL1nTQRoSdnBzc,2302
|
|
4
4
|
iatoolkit/company_registry.py,sha256=tduqt3oV8iDX_IB1eA7KIgvIxE4edTcy-3qZIXh3Lzw,2549
|
|
5
|
-
iatoolkit/iatoolkit.py,sha256=
|
|
5
|
+
iatoolkit/iatoolkit.py,sha256=83EQIb-LCj_NVKlpyzDl6-EfzRO9QRRG9GEb_kev30w,17583
|
|
6
6
|
iatoolkit/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
iatoolkit/common/exceptions.py,sha256=EXx40n5htp7UiOM6P1xfJ9U6NMcADqm62dlFaKz7ICU,1154
|
|
8
8
|
iatoolkit/common/routes.py,sha256=vwPGZExbyYNM_-HXHRInSf8Py6uWjiOxifv2hbn_sGo,6145
|
|
@@ -12,11 +12,11 @@ iatoolkit/infra/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,1
|
|
|
12
12
|
iatoolkit/infra/call_service.py,sha256=iRk9VxbXaAwlLIl8fUzGDWIAdzwfsbs1MtP84YeENxg,4929
|
|
13
13
|
iatoolkit/infra/gemini_adapter.py,sha256=kXV-t5i9GmWBafUPX2kAyiqvcT7GPoxHylcCUWG_c_U,15051
|
|
14
14
|
iatoolkit/infra/google_chat_app.py,sha256=_uKWxeacHH6C5a4FVx0YZjBn1tL-x_MIQV9gqgWGAjo,1937
|
|
15
|
-
iatoolkit/infra/llm_client.py,sha256=
|
|
15
|
+
iatoolkit/infra/llm_client.py,sha256=clTYqV_0a2VD2vVH3j6AWqd1gVUmeg-fU3_myizmjQc,18543
|
|
16
16
|
iatoolkit/infra/llm_proxy.py,sha256=cHyNxUpVE4UDoWUfvSGfGCrIUFPTrpWZOixELQTsGFY,5744
|
|
17
17
|
iatoolkit/infra/llm_response.py,sha256=YUUQPBHzmP3Ce6-t0kKMRIpowvh7de1odSoefEByIvI,904
|
|
18
18
|
iatoolkit/infra/mail_app.py,sha256=PLGZdEs7LQ_9bmMRRxz0iqQdNa4xToAFyf9tg75wK8U,6103
|
|
19
|
-
iatoolkit/infra/openai_adapter.py,sha256=
|
|
19
|
+
iatoolkit/infra/openai_adapter.py,sha256=tbzd8aPAH5cQOJT-sD4ypqq2fWB6WiEIGuGesUDnQNk,3550
|
|
20
20
|
iatoolkit/infra/redis_session_manager.py,sha256=EPr3E_g7LHxn6U4SV5lT_L8WQsAwg8VzA_WIEZ3TwOw,3667
|
|
21
21
|
iatoolkit/infra/connectors/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
|
|
22
22
|
iatoolkit/infra/connectors/file_connector.py,sha256=HOjRTFd-WfDOcFyvHncAhnGNZuFgChIwC-P6osPo9ZM,352
|
|
@@ -48,13 +48,14 @@ iatoolkit/services/mail_service.py,sha256=2h-fcF3swZDya_o7IpgXkmuj3iEVHVCiHi7oVx
|
|
|
48
48
|
iatoolkit/services/onboarding_service.py,sha256=cMO2Ho1-G3wAeVNl-j25LwCMJjRwj3yKHpYKnZUFLDE,2001
|
|
49
49
|
iatoolkit/services/profile_service.py,sha256=TuWV5wVR7gUYylOPKcUR0KdxHAglRv0cXxO18kCgng0,20300
|
|
50
50
|
iatoolkit/services/prompt_manager_service.py,sha256=U-XmSpkeXvv1KRN4dytdMxSYBMRSB7y-UHcb18mk0nA,8342
|
|
51
|
-
iatoolkit/services/query_service.py,sha256=
|
|
51
|
+
iatoolkit/services/query_service.py,sha256=gtMEAQ7IRVrFAMq4h_Pc_lHlMlXFI6heLSuBYHenkfs,17502
|
|
52
52
|
iatoolkit/services/search_service.py,sha256=i1xGWu7ORKIIDH0aAQBkF86dVVbLQ0Yrooz5TiZ6aGo,1823
|
|
53
53
|
iatoolkit/services/sql_service.py,sha256=MIslAtpJWnTMgSD74nnqTvQj27p-lHiyRXc6OiA2C_c,2172
|
|
54
54
|
iatoolkit/services/tasks_service.py,sha256=itREO5rDnUIgsqtyCOBKDtH30QL5v1egs4qPTiBK8xU,6865
|
|
55
55
|
iatoolkit/services/user_feedback_service.py,sha256=ooy750qWmYOeJi-IJQofu8pLG4svGjGU_JKpKMURZkw,2353
|
|
56
56
|
iatoolkit/services/user_session_context_service.py,sha256=vYF_vWM37tPB_ZyPBJ6f6WTJVjT2j-4L8JfZbqbI93k,6775
|
|
57
57
|
iatoolkit/static/images/fernando.jpeg,sha256=W68TYMuo5hZVpbP-evwH6Nu4xWFv2bc8pJzSKDoLTeQ,100612
|
|
58
|
+
iatoolkit/static/js/chat_context_reload.js,sha256=kZOsHUAxjlRAAG-dt7SLWrFX5HbjD0ztJXLdgQc4eJo,2260
|
|
58
59
|
iatoolkit/static/js/chat_feedback.js,sha256=zlLEDQfEocGK7RKG2baqI-9fyQlqe6hVuAHOKTPmWek,4399
|
|
59
60
|
iatoolkit/static/js/chat_filepond.js,sha256=mzXafm7a506EpM37KATTK3zvAswO1E0KSUY1vKbwuRc,3163
|
|
60
61
|
iatoolkit/static/js/chat_history.js,sha256=4h6ldU7cDvgkW84fMKB8JReoxCX0NKSQAir_4CzAF9I,4382
|
|
@@ -80,7 +81,7 @@ iatoolkit/templates/chat_modals.html,sha256=NwwgPoOmVbjy4aO2eHsy1TUMXRiOfTOC5Jx_
|
|
|
80
81
|
iatoolkit/templates/error.html,sha256=c3dxieMygsvdjQMiQu_sn6kqqag9zFtVu-z5FunX6so,580
|
|
81
82
|
iatoolkit/templates/forgot_password.html,sha256=NRZqbNHJXSLNArF_KLbzuem-U57v07awS0ikI_DJbfM,2360
|
|
82
83
|
iatoolkit/templates/header.html,sha256=179agI7rnYwP_rvJNXIiVde5E8Ec5649_XKq6eew2Hk,1263
|
|
83
|
-
iatoolkit/templates/index.html,sha256=
|
|
84
|
+
iatoolkit/templates/index.html,sha256=ZeDBmZGZ_GlxQ8p_NA2Fdf4syTU5kXrJBO6q2P77wKY,7907
|
|
84
85
|
iatoolkit/templates/login_simulation.html,sha256=1svwCBPrJ3Gy6bD9WMuz25NBSdFgZt4j8_sC7HE6MFU,1270
|
|
85
86
|
iatoolkit/templates/onboarding_shell.html,sha256=r1ivSR2ci8GrDSm1uaD-cf78rfO1bKT5gXa-v5aHLAk,4659
|
|
86
87
|
iatoolkit/templates/signup.html,sha256=9ArDvcNQgHFR2dwxy-37AXzGUOeOsT7Nz5u0y6fAB3U,4385
|
|
@@ -89,13 +90,13 @@ iatoolkit/views/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,1
|
|
|
89
90
|
iatoolkit/views/base_login_view.py,sha256=qoMMrAezCJvzjcfNzIbd2vwHhksALIQfNK8f_9E8m0o,3241
|
|
90
91
|
iatoolkit/views/change_password_view.py,sha256=tM0woZyKdhY4XYjS_YXg2sKq3RYkXGfcq_eVAKrNvNM,4498
|
|
91
92
|
iatoolkit/views/chat_token_request_view.py,sha256=wf32_A2Sq8NHYWshCwL10Tovd1znLoD0jQjzutR3sVE,4408
|
|
92
|
-
iatoolkit/views/external_login_view.py,sha256=
|
|
93
|
+
iatoolkit/views/external_login_view.py,sha256=zjZZcFfOMzBbnoEgTX6VGnCPEmtpMS__5oY-_vx__80,3663
|
|
93
94
|
iatoolkit/views/file_store_api_view.py,sha256=Uz9f6sey3_F5K8zuyQz6SwYRKAalCjD1ekf-Mkl_Kfo,2326
|
|
94
95
|
iatoolkit/views/forgot_password_view.py,sha256=-qKJeeOBqJFdvDUk7rCNg1E1cDQnJQkozPpb0T0FgwA,3159
|
|
95
96
|
iatoolkit/views/history_api_view.py,sha256=x-tZhB8UzqrD2n-WDIfmHK9iVhGZ9f0yncsGs9mxwt0,1953
|
|
96
97
|
iatoolkit/views/index_view.py,sha256=P5aVdEWxsYOZGbzcXd6WFE733qZ7YXIoeqriUMAM6V8,1527
|
|
97
|
-
iatoolkit/views/init_context_api_view.py,sha256=
|
|
98
|
-
iatoolkit/views/llmquery_api_view.py,sha256=
|
|
98
|
+
iatoolkit/views/init_context_api_view.py,sha256=FMoVOoQPZ76CZ-jR5CHLWrJEg1k8_sfwlMyyNoYdrho,2651
|
|
99
|
+
iatoolkit/views/llmquery_api_view.py,sha256=ihRtZygDLAamz8DIJ0UEN73MG_SHzjgvQIznXvCPyxg,1816
|
|
99
100
|
iatoolkit/views/login_simulation_view.py,sha256=0Qt-puRnltI2HZxlfdyJmOf26-hQp3xjknGV_jkwV7E,3484
|
|
100
101
|
iatoolkit/views/login_view.py,sha256=ESJLKHGUKQw71STHK2AoxugQUJmxnPYlI13n7ZawLLg,5663
|
|
101
102
|
iatoolkit/views/prompt_api_view.py,sha256=MP0r-MiswwKcbNc_5KY7aVbHkrR218I8XCiCX1D0yTA,1244
|
|
@@ -104,7 +105,7 @@ iatoolkit/views/tasks_review_view.py,sha256=keLsLCyOTTlcoIapnB_lbuSvLwrPVZVpBiFC
|
|
|
104
105
|
iatoolkit/views/tasks_view.py,sha256=a3anTXrJTTvbQuc6PSpOzidLKQFL4hWa7PI2Cppcz8w,4110
|
|
105
106
|
iatoolkit/views/user_feedback_api_view.py,sha256=59XB9uQLHI4Q6QA4_XhK787HzfXb-c6EY7k1Ccyr4hI,2424
|
|
106
107
|
iatoolkit/views/verify_user_view.py,sha256=7XLSaxvs8LjBr3cYOUDa9B8DqW_50IGlq0IvmOQcD0Y,2340
|
|
107
|
-
iatoolkit-0.58.
|
|
108
|
-
iatoolkit-0.58.
|
|
109
|
-
iatoolkit-0.58.
|
|
110
|
-
iatoolkit-0.58.
|
|
108
|
+
iatoolkit-0.58.4.dist-info/METADATA,sha256=dor8o8KevZIZLxcCEVptNNHpE8Qs3mf1COVO6qeqfVU,9301
|
|
109
|
+
iatoolkit-0.58.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
110
|
+
iatoolkit-0.58.4.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
|
|
111
|
+
iatoolkit-0.58.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|