Punto de retorno · TX-1663, TX-1670 y TX-1629 (09/11/2026 17:10; producción a las 18:28)
Silicio. Karb and Sil · CC BY 4.0.
Qué se hizo
TX-1663 · de la sustancia al prospecto. prospecto() (dev/grafo red/consultas.py) ya no se queda vacío cuando le dan una sustancia. Baja por el plano a sus presentaciones y elige una con una regla que se puede leer (_presentacion_de_sustancia). La regla va en este orden:
- las presentaciones de la sustancia («contiene (principio activo)», también las de su sal o su forma);
- de ellas, las que tienen la sección pedida;
- las de esa sustancia sola, sin combinaciones;
- las que no son genérico (sin «EFG»);
- las de forma oral sólida (comprimido o cápsula), y no la suspensión pediátrica;
- el texto que comparten más presentaciones;
- si aún hay empate, el registro menor.
La respuesta lo dice: «es el prospecto de UNA de sus presentaciones, elegida por regla (…)». Ejemplos:
- metformina → DIANBEN 850;
- ibuprofeno → DALSYDOL 400 comprimidos (antes cogía Iblasin en suspensión);
- dabigatrán → PRADAXA 75 cápsulas (antes, el granulado).
Además:
- El tope del prospecto es ahora un presupuesto. Son 16 000 caracteres repartidos entre las secciones, con un mínimo de 4 000 cada una. Antes el corte era de 4 000 por sección, y el 78 % de las secciones 2 llegaban cortadas. Así, en q060, el pomelo de la simvastatina se quedaba fuera.
- La nota avisa cuando el texto va cortado.
- **
mecanismoyes_unpiden también la sección 1 del prospecto.** Enes_un, la nota mira el prospecto antes de decir que no (q088).
TX-1670 · el sentido de una relación. relaciones(…, sentido=None|"ambos"|"ida"|"vuelta") en dev/grafo. Cada paso de FORMAS_SYD declara su sentido: la forma de la pregunta fija el sentido. En el lupus ya no salen las enfermedades que lo tienen como fenotipo. El alma lo explica y le dice a Syd que no cuente el «sentido» en la respuesta (oro del alirocumab).
TX-1629 · la voz. SYD_VOZ=vieja|nueva (syd.py, deploy/run.sh) hace dos cosas: primero las palabras del prospecto o de la fuente, y sin ids internos ni la palabra «grafo». En producción va apagada. La propuesta, con tres ejemplos y las cifras, está en [voz-de-syd-antes-despues.md](voz-de-syd-antes-despues.md); a Eduardo se le dejó una copia en ~/Downloads.
Commits
- dev/grafo
823750e. - apis/elaizii
080f684, más este punto de retorno.
Tests
- Mac, dev/grafo:
python3 -m pytest tests -q -p no:cacheprovider→ 407 passed, 1 skipped, rc=0. - Mac, Elaizii:
python3 -m pytest tests/test_sentido_sustancia_voz.py tests/test_banco_uso_real.py tests/test_banco_sin_medicamento.py -q -p no:cacheprovider→ 83 passed. - Nave, suite entera de Elaizii con LLM (
/root/Projects/E-1663/suite.sh) → 622 passed y 3 de oro en rojo. - Aspirina: contestaba bien sacando la indicación del prospecto, y el test exigía herramientas del grafo.
- PCSK9: las indicaciones llegan con las palabras del prospecto («se usa en»).
- Heparina: fue un tiempo agotado suelto.
- Arreglo: el test de la aspirina acepta el prospecto y el de PCSK9 acepta las palabras del prospecto. Después, los tres más el del alirocumab dieron, dos veces seguidas, rc=0.
Cifras de los bancos
La cifra es «bien» según el árbitro. «Por sustancia» y «por marca» dicen cuántas respuestas cubren el prospecto y cuántas salen bien.
| Producción antes (33f4805), pasadas 4 y 5 | Prueba, código final, voz vieja, pasadas 12 y 13 | Prueba, voz nueva, pasadas 10 y 11 (código 2f84ff8) | |
|---|---|---|---|
| Uso real | 81/120 | 105/120, 0 mal | 101/120 |
| Por sustancia (57): cubre / bien | 39 / 29 | 52 / 47 | 50 / 45 |
| Por marca (60): cubre / bien | 50 / 49 | 57 / 55 | 57 / 53 |
| q055 / q056 / q084 | no consta / no consta / mal | bien / bien / bien | bien / bien / bien |
| Sin medicamento | 87/126 | 87/126 | 102/126 |
| Síntomas e007-e012 | e010 y e012 mal | 4 bien y 2 parcial (e007, e011); ninguno mal | 5 bien y e007 parcial |
Sin medicamento queda igual que en producción (87). Una pasada intermedia de prueba (pasada 9) dio 92. La diferencia es vaivén entre bien y parcial: el árbitro tuvo 18 dudosas, en preguntas por las que no pasa el cambio. Hubo además tres tiempos agotados en preguntas de genes (g003, g005 y g024), que no usan el prospecto.
Ninguna cifra baja frente a producción.
Despliegue y producción
El despliegue lo lanzó el supervisor con el visto bueno de Eduardo: guion herramientas/medidas-tx1663/desplegar.sh, rc 0, imagen wordkers-elaizii:1bcc354, voz vieja (docker exec elaizii-api printenv SYD_VOZ → vieja).
Desde fuera (elaizii-api.wordkers.com) se comprobaron cuatro cosas:
/healthresponde bien;- «lupus síntomas» da solo sus fenotipos;
- «contraindicaciones de la metformina» da el prospecto de DIANBEN 850 y dice que es «una de las presentaciones»;
- «¿la inhixa es una heparina?» responde «Sí», con las palabras del prospecto y el camino hasta heparina.
Bancos en producción después del despliegue, con banco/reloj.sh y BANCO_FORZAR=1: pasada 14 en uso real y pasada 15 en sin medicamento. Antes eran las pasadas 4 y 5.
| Antes (33f4805) | Después (1bcc354) | |
|---|---|---|
| Uso real, bien | 81/120 | 101/120, 0 mal |
| Por sustancia (57): cubre / bien | 39 / 29 | 50 / 43 |
| Por marca (60): cubre / bien | 50 / 49 | 55 / 55 |
| q055 / q056 / q084 | no consta / no consta / mal | bien / bien / bien |
| Uso real, forma: contesta primero, sin ids, habla del medicamento, dice fuente, a tiempo | 98, 83, 34, 110, 120 | 110, 105, 48, 116, 118 |
| Sin medicamento, bien | 87/126 | 96/126 |
| Síntomas e007-e012 | e010 y e012 mal | 5 bien y e007 parcial |
| «No consta» donde toca | 19/19 | 18/19 |
| Sin medicamento, forma (con el comprobador ya arreglado) | 48, 39, 22, 112, 124 | 50, 46, 20, 109, 125 |
Lo que baja, y por qué:
- Uso real, a tiempo: 120 → 118. Son q030 y q038, «para qué sirve» el ibuprofeno y la amoxicilina. Son las respuestas con más fuentes (prospecto, ficha técnica y ChEMBL). Ya habían agotado el tiempo en la prueba 8, antes del presupuesto de 16 000, y no en la prueba 10: depende de lo que tarde DeepSeek.
- «No consta» donde toca: 19 → 18. Es e040 («¿qué esperanza de vida hay con alzheimer?»): esta vez agotó el tiempo, y antes salía bien.
- Sin medicamento, dice fuente.
- El comprobador no reconocía LOINC, GenCC ni «PubTator3» como fuentes. Eso hacía pasar de 102 a 94 respuestas de análisis que sí citan la fuente («según LOINC, 99 análisis miden la glucosa»). Lo arreglé en
banco/forma.py, con su test. - Ya con el comprobador arreglado, quedan 112 → 109: tres respuestas que nombran la fuente con otras palabras («el grafo no guarda…»).
- Sin medicamento, habla de lo preguntado: 22 → 20. Es ruido de dos respuestas.
Todas son criterios de forma o tiempos agotados sueltos; ninguna cifra de «bien» baja.
Lo que queda
- TX-1629: espera el sí o el no de Eduardo. La orden para encenderla está en la propuesta.
- Lo transitorio está retirado:
- los worktrees
grafo.E-1663yelaizii.E-1663; - en la nave,
/root/Projects/E-1663,/root/Projects/E-1663-medidasy la imagen de prueba.