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:

  1. las presentaciones de la sustancia («contiene (principio activo)», también las de su sal o su forma);
  2. de ellas, las que tienen la sección pedida;
  3. las de esa sustancia sola, sin combinaciones;
  4. las que no son genérico (sin «EFG»);
  5. las de forma oral sólida (comprimido o cápsula), y no la suspensión pediátrica;
  6. el texto que comparten más presentaciones;
  7. 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.
  • **mecanismo y es_un piden también la sección 1 del prospecto.** En es_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 5Prueba, código final, voz vieja, pasadas 12 y 13Prueba, voz nueva, pasadas 10 y 11 (código 2f84ff8)
Uso real81/120105/120, 0 mal101/120
Por sustancia (57): cubre / bien39 / 2952 / 4750 / 45
Por marca (60): cubre / bien50 / 4957 / 5557 / 53
q055 / q056 / q084no consta / no consta / malbien / bien / bienbien / bien / bien
Sin medicamento87/12687/126102/126
Síntomas e007-e012e010 y e012 mal4 bien y 2 parcial (e007, e011); ninguno mal5 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:

  • /health responde 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, bien81/120101/120, 0 mal
Por sustancia (57): cubre / bien39 / 2950 / 43
Por marca (60): cubre / bien50 / 4955 / 55
q055 / q056 / q084no consta / no consta / malbien / bien / bien
Uso real, forma: contesta primero, sin ids, habla del medicamento, dice fuente, a tiempo98, 83, 34, 110, 120110, 105, 48, 116, 118
Sin medicamento, bien87/12696/126
Síntomas e007-e012e010 y e012 mal5 bien y e007 parcial
«No consta» donde toca19/1918/19
Sin medicamento, forma (con el comprobador ya arreglado)48, 39, 22, 112, 12450, 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-1663 y elaizii.E-1663;
  • en la nave, /root/Projects/E-1663, /root/Projects/E-1663-medidas y la imagen de prueba.
En esta página