<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Learning Curve]]></title><description><![CDATA[Aprende IA como un ingeniero, no como un gurú de YouTube.]]></description><link>https://iamdgarcia.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!M1iw!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png</url><title>The Learning Curve</title><link>https://iamdgarcia.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 03 Sep 2026 01:19:03 GMT</lastBuildDate><atom:link href="/__u/iamdgarcia.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Daniel]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[iamdgarcia@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[iamdgarcia@substack.com]]></itunes:email><itunes:name><![CDATA[Daniel]]></itunes:name></itunes:owner><itunes:author><![CDATA[Daniel]]></itunes:author><googleplay:owner><![CDATA[iamdgarcia@substack.com]]></googleplay:owner><googleplay:email><![CDATA[iamdgarcia@substack.com]]></googleplay:email><googleplay:author><![CDATA[Daniel]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[#46 - El mito del System Prompt (y por qué Claude se lo salta)]]></title><description><![CDATA[cach&#233; optimization is all you need]]></description><link>https://iamdgarcia.substack.com/p/46-el-mito-del-system-prompt-y-por</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/46-el-mito-del-system-prompt-y-por</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Mon, 31 Aug 2026 04:01:54 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/213108541/6a749df3729f1ba9db7bcbf6ec7b52b7.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Esta semana me he quitado la gorra de creador de producto para ponerme la de mec&#225;nico: he estado destripando el tr&#225;fico de los principales <em>harnesses</em> de IA (<em>Claude Code</em>, <em>Codex</em>, <em>Aider</em>, <em>Pi</em>, <em>DeepSeek</em>) para entender c&#243;mo gestionan realmente el contexto.</p><p>Lo interesante no ha salido de ninguna documentaci&#243;n oficial, sino de mirar los logs de cada una de las trazas.</p><p><strong>El descubrimiento en los logs</strong></p><ul><li><p><strong>La expectativa:</strong> Esperaba encontrar un <em>System Prompt</em> perfectamente estructurado, gigantesco e inmutable, con todas las reglas sagradas del agente en el rol de sistema, tal y como dictan los manuales de <em>prompt engineering</em>.</p></li><li><p><strong>La realidad:</strong> El rol de sistema en <em>Claude Code</em> estaba pr&#225;cticamente vac&#237;o.</p></li><li><p><strong>El truco:</strong> Las instrucciones clave e indicaciones de contexto se inyectan din&#225;micamente como <em>system reminders</em> en los mensajes del propio usuario a lo largo de la conversaci&#243;n.</p></li></ul><p><strong>Por qu&#233; la teor&#237;a falla y gana el pragmatismo</strong></p><p>A primera vista parece una chapuza o un &#8220;truco sucio&#8221;, pero responde a dos restricciones de producci&#243;n muy concretas:</p><ol><li><p><strong>Prefix Caching (Latencia y Costes):</strong> Si cambias el <em>System Prompt</em> en cada interacci&#243;n para meterle contexto variable, rompes el cach&#233; de prefijo de la API. Mantener el mensaje de sistema est&#225;tico o m&#237;nimo permite congelar ese prefijo, bajando la latencia y la factura de tokens dr&#225;sticamente.</p></li><li><p><strong>Combate al Recency Bias:</strong> Los modelos tienden a olvidar las instrucciones del principio a medida que la ventana de contexto crece. Repetir recordatorios en el flujo del usuario mantiene al agente enfocado sin reescribir la base del sistema.</p></li></ol><p><strong>El impacto en c&#243;mo construyo ahora</strong></p><p>Ver c&#243;mo los propios ingenieros de Anthropic o los creadores de otros <em>harnesses</em> rompen las &#8220;buenas pr&#225;cticas&#8221; para priorizar el rendimiento te cambia el chip.</p><ul><li><p><strong>Menos arquitectura limpia, m&#225;s observabilidad:</strong> Sin un gateway para medir latencia, cach&#233; y tr&#225;fico real, est&#225;s programando a ciegas.</p></li><li><p><strong>Ajuste en mis propios agentes:</strong> He empezado a reestructurar las llamadas de mis herramientas para maximizar el <em>prefix cache</em> e inyectar contexto en los turnos de usuario en lugar de inflar el <em>System Prompt</em>.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Compartir The Learning Curve&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Compartir The Learning Curve</span></a></p><p></p><p>Much&#237;simas gracias a los mecenas que apoy&#225;is <strong>Cuaderno de Bit&#225;cora</strong> y hac&#233;is posible este diario de a bordo semana a semana. Si quieres recibir estos an&#225;lisis en tu correo o participar en la comunidad, puedes suscribirte en <strong>The Learning Curve</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Creando una app para procesar documentos con IA. Pt 6. Desplegamos el proyecto!]]></title><description><![CDATA[A recording from Daniel's live video]]></description><link>https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-411</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-411</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 30 Aug 2026 16:01:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212852392/896684b148a1769e8fed824aeda190c5.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Poco a poco nos vamos acercando al final de este proyecto.</p><p>En esta hora y media de video nos dedicamos a a&#241;adir una seguridad b&#225;sica en nuestra API y a hacerla disponible desde la nube para poder acceder desde cualquier parte.</p><p>abrimos la documentaci&#243;n de fastapi y seguimos las instrucciones para integrar una gesti&#243;n de usuarios. Finalmente nos quedamos con una gesti&#243;n de token tradicional.</p><p>Al final del video conectamos Langsmith para controlar las latencias y los costes del procesamiento de cada documento.</p><p>Tambi&#233;n te cuento una forma sencilla de reducir los costes a la hora de procesar documentos.</p><p></p><p>Te dejo por aqu&#237; el episodio anterior por si no lo hab&#237;as visto!</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8b3c1be6-bf20-4d80-b2a6-e7ac8cd64a5a&quot;,&quot;caption&quot;:&quot;Seguimos afinando nuestra aplicaci&#243;n para procesar tickets con IA.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Creando una app para procesar documentos con IA. Pt 5. Aprendemos a hacer comparaciones sem&#225;nticas&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-08-16T16:00:22.830Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4741a66-2aee-4726-8904-b7fa4d01b87f_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-714&quot;,&quot;section_name&quot;:&quot;Directos&quot;,&quot;video_upload_id&quot;:&quot;b42c0bfe-799b-41c6-b51b-530eb93eb689&quot;,&quot;id&quot;:210902439,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>Como comento en el directo, a partir de aqu&#237; hay mil cosas que se podr&#237;an hacer y estoy abierto a profundizar en esas que os resulten m&#225;s interesantes a vosotr@s.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-411/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-411/comments"><span>Deja un comentario</span></a></p><p></p><p>Una de las cosas que haremos en los siguientes directos ser&#225; configurar modelos Open Source. Si no sabes como hacerlo, te dejo aqu&#237; un video que explico como</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3a2f9772-509a-4115-838c-ece1bc5bb6e9&quot;,&quot;caption&quot;:&quot;&#191;Quieres probar un modelo open source pero no tienes una GPU?&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Usa cualquier modelo open source sin tener una GPU&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-08-20T13:01:00.363Z&quot;,&quot;cover_image&quot;:&quot;https://substack-video.s3.amazonaws.com/video_upload/post/211021397/917a9f08-ad85-4492-a6f6-2f96733f0e27/transcoded-1786618552.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/usa-cualquier-modelo-open-source&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:&quot;917a9f08-ad85-4492-a6f6-2f96733f0e27&quot;,&quot;id&quot;:211021397,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>y, por &#250;ltimo, te dejo por aqu&#237; algunos enlaces de inter&#233;s:</p><ul><li><p><a href="https://github.com/iamdgarcia/tlc_ai_doc_process_project">Repositorio</a></p></li><li><p>Utiliza <a href="https://novita.ai/?ref=mzblm2z">Novita.AI</a> para ejecutar modelos Open Source</p></li><li><p>Utiliza <a href="https://m.do.co/c/eddc62174250">DigitalOcean</a> para desplegar proyectos con un solo click</p></li></ul><p></p><p>Muchas gracias a los que estuv&#237;steis en la sesi&#243;n en directo.</p><p>Hasta la semana que viene!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Tu agente puede estar rompiendo su propia caché]]></title><description><![CDATA[Hay un error en el dise&#241;o de agentes que parece completamente inocente y puede estar haciendo que pagues m&#225;s y tengas m&#225;s latencia sin darte cuenta]]></description><link>https://iamdgarcia.substack.com/p/tu-agente-puede-estar-rompiendo-su</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/tu-agente-puede-estar-rompiendo-su</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 27 Aug 2026 13:03:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4432225a-fb4b-403c-b2d4-3fc91ee5d8b5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hoy vamos a hablar sobre una reflexi&#243;n que compart&#237; por LinkedIn hace unos d&#237;as.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!yDtu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 424w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 848w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yDtu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png" width="428" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:428,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:141433,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/212959631?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 424w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 848w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yDtu!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f5fadc-5c73-4d13-af30-ed4e167e4a27_428x531.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.linkedin.com/posts/iamdgarcia_el-otro-d%C3%ADa-leyendo-un-art%C3%ADculo-de-google-ugcPost-7496187980831756288-zvrS/">Link al post</a></figcaption></figure></div><p>y que encima es algo con lo que llevo peg&#225;ndome unas semanas en el trabajo</p><p>Lo descubr&#237; leyendo un art&#237;culo de Google sobre c&#243;mo dise&#241;ar agentes capaces de mantener conversaciones muy largas, los llamados <em>long horizon agents</em></p><p>El concepto es sencillo</p><p>Pero tiene una consecuencia bastante importante</p><h2>Empecemos por el prompt cache</h2><p>Cuando hacemos una llamada a un LLM, el modelo tiene que procesar el contexto antes de empezar a generar una respuesta</p><p>Esta fase se conoce como <strong>prefill</strong></p><p>ya te lo expliqu&#233; en este video</p><div id="youtube2-9IhScy-IkBw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9IhScy-IkBw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9IhScy-IkBw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Si nuestra conversaci&#243;n tiene 50.000 tokens de contexto y solo hemos a&#241;adido una pregunta nueva, ser&#237;a bastante absurdo tener que procesar esos 50.000 tokens desde cero en cada turno</p><p>Por eso existen los <strong>prompt caches</strong></p><p>Si una parte del prompt es exactamente igual que en la llamada anterior, el proveedor puede reutilizar ese procesamiento</p><p>Menos trabajo</p><p>Menor latencia</p><p>Menor coste</p><p>Hasta aqu&#237;, todo perfecto</p><p>El problema aparece cuando empezamos a construir agentes de verdad</p><h2>El problema del system prompt din&#225;mico</h2><p>Imagina que tienes un agente que conoce al usuario</p><p>En cada turno le puedes pasar cosas como:</p><ul><li><p>Su perfil</p></li><li><p>Un resumen de la conversaci&#243;n</p></li><li><p>Informaci&#243;n recuperada mediante RAG</p></li><li><p>El estado actual de una tarea</p></li><li><p>Las acciones que ha realizado</p></li><li><p>Informaci&#243;n sobre herramientas disponibles</p></li></ul><p>Todo esto suele acabar dentro del system prompt</p><p>ERROR</p><p>Si modificamos el system prompt en cada turno, <strong>el prefijo deja de ser id&#233;ntico</strong></p><p>Por tanto, la cach&#233; no puede reutilizarlo</p><p>Puedes tener un system prompt de 50.000 tokens y estar proces&#225;ndolo pr&#225;cticamente desde cero una y otra vez</p><p>La cach&#233; est&#225; activada</p><p>Pero en la pr&#225;ctica no te est&#225; sirviendo de nada</p><h2>Es parecido a un Docker build</h2><p>Esta analog&#237;a me parece especialmente &#250;til</p><p>Imagina que tienes un Dockerfile con muchas capas:</p><pre><code><code>FROM python
COPY requirements.txt .
RUN pip install ...
COPY app .
</code></code></pre><p>Si cambias una capa de las primeras, Docker tiene que reconstruir todo lo que viene despu&#233;s</p><p>Con el prompt ocurre algo parecido</p><p>Si modificas una peque&#241;a parte al principio del contexto, puedes invalidar todo lo que viene despu&#233;s</p><p>Por eso <strong>no solo importa qu&#233; informaci&#243;n introduces en el contexto</strong></p><p>Tambi&#233;n importa <strong>d&#243;nde la introduces</strong></p><h2>La soluci&#243;n: ordenar el contexto por estabilidad</h2><p>La propuesta de Google es separar la informaci&#243;n del agente en diferentes niveles dependiendo de cu&#225;nto cambia</p><h3>1. Informaci&#243;n congelada</h3><p>Al principio del prompt</p><ul><li><p>System instructions</p></li><li><p>Persona</p></li><li><p>Definiciones de herramientas</p></li><li><p>Reglas del agente</p></li></ul><p>Todo aquello que deber&#237;a ser id&#233;ntico durante toda la sesi&#243;n</p><p>Esta parte queremos que sea extremadamente estable</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fmZd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fmZd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg" width="496" height="1027.2625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2651,&quot;width&quot;:1280,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ver imagen&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ver imagen" title="Ver imagen" srcset="/__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fmZd!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac97640-dd60-47d1-a112-5858855001e3_1280x2651.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>2. Informaci&#243;n relativamente estable</h3><p>Despu&#233;s podemos colocar informaci&#243;n relacionada con el usuario</p><ul><li><p>Preferencias</p></li><li><p>Configuraci&#243;n</p></li><li><p>Perfil</p></li></ul><p>Contexto que cambia entre sesiones, pero no en cada turno</p><p>La idea es cargarla al comenzar la sesi&#243;n y no modificarla continuamente.</p><h3>3. Informaci&#243;n vol&#225;til</h3><p>Y al final dejamos todo aquello que cambia constantemente.</p><ul><li><p>Estado de la ejecuci&#243;n</p></li><li><p>Contadores</p></li><li><p>Warnings</p></li><li><p>Memorias recuperadas</p></li><li><p>Informaci&#243;n temporal</p></li><li><p>Resumen de la conversaci&#243;n</p></li></ul><p>Aqu&#237; s&#237; esperamos cambios.</p><p>La clave est&#225; en que <strong>los cambios ocurran lo m&#225;s tarde posible dentro del contexto</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!BA0q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!BA0q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg" width="352" height="728.2" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2648,&quot;width&quot;:1280,&quot;resizeWidth&quot;:352,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ver imagen&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ver imagen" title="Ver imagen" srcset="/__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!BA0q!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10029d25-bafe-4489-963a-9952ebef169e_1280x2648.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Pero podemos ir un paso m&#225;s all&#225;</h2><p>Hay informaci&#243;n din&#225;mica que ni siquiera necesita formar parte del system prompt</p><p>Por ejemplo:</p><pre><code><code>Usuario &#8594; Agente
"Busca vuelos a Roma"

Agente &#8594; Tool
search_flights("Madrid", "Rome")

Tool &#8594; Agente
"Encontrados 12 vuelos..."
</code></code></pre><p>Esa informaci&#243;n ya est&#225; entrando en el contexto como parte de la conversaci&#243;n</p><p>No necesitas reconstruir todo el system prompt para a&#241;adirla</p><p>Y esto nos permite mantener una propiedad muy interesante:</p><p><strong>todo lo que ocurri&#243; hasta el turno anterior puede seguir siendo cacheable.</strong></p><p>El resultado es que, despu&#233;s de calentar la cach&#233;, una gran parte del contexto puede reutilizarse en cada nueva llamada.</p><p>En el ejemplo que muestra Google, el cambio de arquitectura hace que aproximadamente el 95% del prompt pueda servirse desde cach&#233;.</p><p>Y ah&#237; es donde empieza a aparecer una diferencia enorme en agentes con sesiones largas.</p><h2>El detalle importante: medirlo</h2><p>Hay otra lecci&#243;n que me parece incluso m&#225;s importante</p><p><strong>No asumas que tu prompt est&#225; siendo cacheado. M&#237;delo</strong></p><p>Si el proveedor te devuelve m&#233;tricas sobre tokens cacheados, m&#237;ralas.</p><p>Porque puedes tener:</p><pre><code><code>Prompt cache: ON
</code></code></pre><p>y al mismo tiempo:</p><pre><code><code>Cached tokens: 0
</code></code></pre><p>Y eso significa que, t&#233;cnicamente, tienes caching.</p><p>Pero arquitect&#243;nicamente has dise&#241;ado tu agente para que nunca pueda aprovecharlo.</p><h2>Esto cambia c&#243;mo dise&#241;amos agentes</h2><p>Cuando empezamos a construir agentes, solemos pensar mucho en:</p><ul><li><p>Qu&#233; modelo utilizar</p></li><li><p>Qu&#233; herramientas darle</p></li><li><p>Qu&#233; memoria necesita</p></li><li><p>Qu&#233; prompt escribir</p></li></ul><p>Pero hay otra capa que empieza a ser igual de importante:</p><p><strong>c&#243;mo dise&#241;amos el contexto.</strong></p><ul><li><p>D&#243;nde ponemos cada pieza de informaci&#243;n</p></li><li><p>Qu&#233; cambia</p></li><li><p>Cu&#225;ndo cambia</p></li><li><p>Qu&#233; puede permanecer estable</p></li></ul><p>Y qu&#233; informaci&#243;n puede llegar mediante herramientas o mensajes en lugar de modificar continuamente las instrucciones del sistema</p><p>En agentes de pocas interacciones quiz&#225; esto no importe demasiado</p><p>Pero cuando hablamos de agentes que trabajan durante minutos, horas o incluso d&#237;as, con contextos enormes y cientos de llamadas al modelo, puede convertirse en una diferencia enorme de <strong>coste, latencia y escalabilidad</strong></p><p>Y esto es solo una peque&#241;a parte del <em>harness</em> que necesitas para construir agentes realmente eficientes</p><p>En los pr&#243;ximos art&#237;culos podemos entrar en m&#225;s patrones de dise&#241;o para construir agentes que no solo funcionen, sino que sean r&#225;pidos, baratos y capaces de escalar</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/tu-agente-puede-estar-rompiendo-su/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/tu-agente-puede-estar-rompiendo-su/comments"><span>Deja un comentario</span></a></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[#45 - La IA ha destruido el filtro más importante que teníamos]]></title><description><![CDATA[Construir un prototipo en dos horas no siempre es buena idea. Te cuento por qu&#233; nos hace falta recuperar el filtro de las 48 horas]]></description><link>https://iamdgarcia.substack.com/p/45-la-ia-ha-destruido-el-filtro-mas</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/45-la-ia-ha-destruido-el-filtro-mas</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Tue, 25 Aug 2026 04:00:49 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212514817/f65bf6cf820542bf6278d560d743d450.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>En este cap&#237;tulo 45 de <strong>Cuaderno de Bit&#225;cora</strong>, abro el diario tras unos d&#237;as de vacaciones totalmente desconectado del ordenador. Sin teclado, sin terminal y sin modelos de lenguaje a un clic de distancia.</p><p>Hoy hablo sobre una consecuencia directa del cap&#237;tulo anterior: c&#243;mo la velocidad a la que construimos con IA ha destruido el filtro de enfriamiento que ten&#237;an las ideas antes de convertirse en c&#243;digo.</p><p><strong>De qu&#233; va el episodio:</strong></p><ul><li><p><strong>El caos de la app de notas:</strong> La experiencia de volver con el m&#243;vil a reventar de arquitecturas, ideas de producto y soluciones pensadas en crudo.</p></li><li><p><strong>La trampa de la fricci&#243;n cero:</strong> Antes, el esfuerzo o la lentitud de picar c&#243;digo serv&#237;an como un control de calidad natural. Hoy, tardas dos horas en levantar un prototipo completo de algo que en realidad no necesitabas.</p></li><li><p><strong>El filtro que nos saltamos:</strong> Por qu&#233; releer esas notas unos d&#237;as despu&#233;s me revel&#243; que la mitad eran decisiones rid&#237;culamente complejas, y c&#243;mo el simple paso del tiempo limpia m&#225;s c&#243;digo in&#250;til que cualquier refactorizaci&#243;n.</p></li><li><p><strong>La regla de las 48 horas:</strong> La decisi&#243;n de usar la app de notas como un congelador antes de meterle un prompt a ChatGPT o abrir el editor.</p></li></ul><p>Si alguna vez has sentido la tentaci&#243;n de convertir en software cualquier pensamiento aleatorio a las diez de la noche solo porque ahora la IA te lo permite en minutos, este episodio es para ti.</p><p>El audio ya est&#225; disponible en el feed del podcast.</p><p>Much&#237;simas gracias a todos los mecenas que apoy&#225;is <strong>Cuaderno de Bit&#225;cora</strong> y hac&#233;is posible este diario de a bordo semana a semana. Si quieres leer las reflexiones que acompa&#241;an a cada entrega o unirte a la comunidad, recuerden que pod&#233;is suscribiros en la newsletter de Substack en <strong>The Learning Curve</strong>.</p><p></p><p>Escucha el cap&#237;tulo anterior aqu&#237; </p><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b80b0f1d-2e1d-4b7f-b567-2af4824c652d&quot;,&quot;caption&quot;:&quot;Aclaro mi postura antes de nada: no soy un neoluddita ni vengo a dar discursos alarmistas sobre la tecnolog&#237;a. Uso inteligencia artificial todos los d&#237;as. Me ahorra horas de tareas repetitivas, me limpia c&#243;digo sucio, me genera borradores y me permite avanzar a un ritmo que hace tres a&#241;os era impensable. Si me quitas la IA ma&#241;ana, tardo el doble en hace&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;#44 - El problema de usar IA para todo&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-08-17T04:01:14.123Z&quot;,&quot;cover_image&quot;:&quot;https://substack-video.s3.amazonaws.com/video_upload/post/211153978/dc104e82-5219-4911-a632-10e6fcc824b7/transcoded-1786698225.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/44-el-problema-de-usar-ia-para-todo&quot;,&quot;section_name&quot;:&quot;Cuaderno de Bit&#225;cora - Daniel Garc&#237;a&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:211153978,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>]]></content:encoded></item><item><title><![CDATA[Usa cualquier modelo open source sin tener una GPU]]></title><description><![CDATA[Descubre c&#243;mo utilizar modelos open source como Kimi K3 mediante Serverless Inference, sin descargar pesos, configurar GPUs ni desplegar tu propia infraestructura.]]></description><link>https://iamdgarcia.substack.com/p/usa-cualquier-modelo-open-source</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/usa-cualquier-modelo-open-source</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 20 Aug 2026 13:01:00 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211021397/54b375937d06bc114ccb52fdaf8ba1c9.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>&#191;Quieres probar un modelo open source pero no tienes una GPU?</p><p>Hasta hace no mucho, la respuesta era bastante inc&#243;moda.</p><p>Ten&#237;as que descargar los pesos, encontrar una GPU con suficiente VRAM, configurar CUDA, levantar un servidor de inference y encargarte de que todo funcionase.</p><p>Hoy puedes hacer algo mucho m&#225;s sencillo:</p><p><strong>elegir un modelo y llamarlo mediante una API.</strong></p><p>En este art&#237;culo vamos a utilizar <strong>Kimi K3</strong> como ejemplo y veremos c&#243;mo podemos utilizarlo mediante Serverless Inference con Novita. </p><h2>El problema de ejecutar un modelo open source</h2><p>Cuando hablamos de modelos open source, solemos pensar en todo lo que hay que montar alrededor del modelo: GPU, memoria, entorno de ejecuci&#243;n, servidor de inference, API y escalado.</p><p>Todo esto tiene sentido si quieres <strong>operar el modelo t&#250; mismo</strong>.</p><p>Pero muchas veces nuestro objetivo es bastante m&#225;s sencillo:</p><blockquote><p>Quiero utilizar el modelo dentro de mi aplicaci&#243;n.</p></blockquote><p>No necesito necesariamente saber qu&#233; GPU lo est&#225; ejecutando, c&#243;mo est&#225; configurado el servidor o c&#243;mo se distribuye el modelo.</p><p>Aqu&#237; es donde aparece <strong>Serverless Inference</strong>.</p><h2>&#191;Qu&#233; significa Serverless Inference?</h2><p>Serverless no significa que no existan servidores.</p><p>Significa que <strong>t&#250; no tienes que gestionarlos</strong>.</p><p>El proveedor se encarga de la infraestructura necesaria para ejecutar el modelo y t&#250; consumes esa capacidad mediante una API.</p><p>En el caso de Novita, puedes acceder a modelos mediante una API Serverless sin tener que desplegar t&#250; mismo la infraestructura de inference. <a href="https://novita.ai/es/models-console/model-detail/moonshotai-kimi-k3?utm_source=chatgpt.com">Kimi K3 en Novita</a></p><p>Y esto cambia bastante la barrera de entrada para experimentar con modelos grandes.</p><h2>Vamos a probar Kimi K3</h2><p>Para verlo en la pr&#225;ctica vamos a utilizar <strong>Kimi K3</strong>.</p><p>Kimi K3 es un modelo MoE con <strong>2,8 billones de par&#225;metros totales y 104.000 millones de par&#225;metros activos</strong>, adem&#225;s de una ventana de contexto de hasta 1 mill&#243;n de tokens.</p><p>Es un modelo orientado especialmente a tareas de razonamiento, programaci&#243;n y agentes.</p><p>Lo interesante para nosotros es que podemos acceder a &#233;l mediante la API Serverless de Novita.</p><p>No necesitamos ejecutar nosotros mismos toda esa infraestructura.</p><h2>Paso 1: crear una API key</h2><p>Entramos en Novita y creamos una API key.</p><p>Una vez tenemos nuestra clave, podemos utilizar el modelo desde c&#243;digo.</p><p>Y aqu&#237; hay algo especialmente interesante:</p><p><strong>la API es compatible con OpenAI.</strong></p><p>Por tanto, si ya has utilizado el SDK de OpenAI, la integraci&#243;n resulta muy sencilla.</p><h2>Paso 2: instalar el SDK</h2><p>En Python:</p><pre><code><code>pip install openai
</code></code></pre><p>Despu&#233;s creamos nuestro cliente:</p><pre><code><code>from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.novita.ai/openai"
)
</code></code></pre><h2>Paso 3: llamar a Kimi K3</h2><p>Ahora simplemente hacemos una petici&#243;n:</p><pre><code><code>response = client.chat.completions.create(
    model="moonshotai/kimi-k3",
    messages=[
        {
            "role": "user",
            "content": "Explain speculative decoding in simple terms"
        }
    ],
    max_tokens=1000
)

print(response.choices[0].message.content)
</code></code></pre><p>Y ya est&#225;.</p><p>No hemos descargado Kimi K3.</p><p>No hemos configurado CUDA.</p><p>No hemos seleccionado una GPU.</p><p>No hemos instalado un inference server.</p><p>No hemos desplegado un contenedor.</p><p>Hemos hecho una petici&#243;n y hemos recibido una respuesta.</p><p>Ese es precisamente el valor de esta abstracci&#243;n.</p><h2>&#191;Cu&#225;nto cuesta?</h2><p>Kimi K3 se ofrece actualmente en Novita con pricing basado en tokens.</p><p>El precio que muestra actualmente Novita es de <strong>$3 por mill&#243;n de tokens de entrada</strong>, <strong>$0,30 por mill&#243;n de tokens le&#237;dos desde cach&#233;</strong> y <strong>$15 por mill&#243;n de tokens de salida</strong>. <a href="https://novita.ai/es/models-console/model-detail/moonshotai-kimi-k3?utm_source=chatgpt.com">Pricing de Kimi K3 en Novita</a></p><p>Esto significa que no necesitas mantener una GPU dedicada funcionando mientras no est&#225;s utilizando el modelo.</p><p>Pagas por el uso de inference.</p><h2>&#191;Y si quiero utilizar otro modelo?</h2><p>Aqu&#237; est&#225; la parte que me parece m&#225;s interesante.</p><p>La idea no es realmente <strong>Kimi K3</strong>.</p><p>Kimi K3 es simplemente nuestro ejemplo.</p><p>La idea es poder elegir un modelo open source y consumirlo mediante una API sin preocuparnos inicialmente por la infraestructura que hay detr&#225;s.</p><p>Novita ofrece un cat&#225;logo amplio de modelos y diferentes modalidades de inference.</p><p>Esto cambia la pregunta que nos hacemos como desarrolladores.</p><p>En lugar de empezar pensando:</p><blockquote><p>&#191;Qu&#233; GPU necesito para ejecutar este modelo?</p></blockquote><p>Podemos empezar pensando:</p><blockquote><p>&#191;Qu&#233; modelo quiero utilizar?</p></blockquote><p>Y despu&#233;s decidir c&#243;mo queremos consumirlo.</p><h2>&#191;Serverless significa que siempre es la mejor opci&#243;n?</h2><p>No.</p><p>Y esta distinci&#243;n es importante.</p><p>Hay una diferencia entre <strong>utilizar un modelo</strong> y <strong>operar un modelo</strong>.</p><p>Si quiero consumir un modelo r&#225;pidamente y abstraer la infraestructura, una plataforma como Novita tiene mucho sentido.</p><p>Si quiero controlar directamente la GPU, el container, el runtime o el deployment del modelo, probablemente quiera una soluci&#243;n como RunPod.</p><p>No se trata de que una opci&#243;n sea mejor que la otra.</p><p>Se trata de elegir el nivel de control que necesitas.</p><h2>La idea importante</h2><p>Creo que esta es una de las abstracciones m&#225;s interesantes que estamos viendo en infraestructura de IA:</p><p><strong>usar un modelo y operar un modelo son problemas diferentes.</strong></p><p>Durante mucho tiempo, para utilizar un modelo open source ten&#237;amos que ocuparnos tambi&#233;n de ejecutarlo.</p><p>Ahora podemos separar ambas cosas.</p><p>La infraestructura sigue existiendo.</p><p>Simplemente deja de ser nuestro problema.</p><p>Y eso permite que un developer pueda experimentar con modelos que, de otra forma, ser&#237;an bastante dif&#237;ciles de ejecutar localmente.</p><h2>Prueba Kimi K3</h2><p>Si quieres probar Kimi K3 sin montar tu propia infraestructura de inference, puedes hacerlo directamente desde Novita.</p><p><a href="https://novita.ai/?ref=mzblm2z&amp;utm_source=affiliate">Probar Kimi K3 con Novita</a></p><p>Y si quieres verlo paso a paso, en el v&#237;deo de esta semana lo hago desde cero:</p><p><strong>C&#243;mo usar un modelo de 2,8T de par&#225;metros sin tener una GPU.</strong></p><p>La idea que quiero que te lleves es sencilla:</p><blockquote><p><strong>Cuando quieras probar un modelo open source, quiz&#225; la primera pregunta ya no sea &#8220;&#191;qu&#233; GPU necesito?&#8221;, sino &#8220;&#191;d&#243;nde puedo consumirlo?&#8221;</strong></p></blockquote><p>Y esa diferencia est&#225; cambiando la forma en la que construimos con IA.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://novita.ai/?ref=mzblm2z&amp;utm_source=affiliate&quot;,&quot;text&quot;:&quot;Probar Kimi K3&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://novita.ai/?ref=mzblm2z&amp;utm_source=affiliate"><span>Probar Kimi K3</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[#44 - El problema de usar IA para todo]]></title><description><![CDATA[Delegar la ejecuci&#243;n te ahorra horas de trabajo mec&#225;nico, pero delegar el criterio te atrofia la capacidad de pensar]]></description><link>https://iamdgarcia.substack.com/p/44-el-problema-de-usar-ia-para-todo</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/44-el-problema-de-usar-ia-para-todo</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Mon, 17 Aug 2026 04:01:14 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/211153978/e821119fb4a6b4ea9bdbfaa8eddb8783.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Aclaro mi postura antes de nada: no soy un neoluddita ni vengo a dar discursos alarmistas sobre la tecnolog&#237;a. Uso inteligencia artificial todos los d&#237;as. Me ahorra horas de tareas repetitivas, me limpia c&#243;digo sucio, me genera borradores y me permite avanzar a un ritmo que hace tres a&#241;os era impensable. Si me quitas la IA ma&#241;ana, tardo el doble en hacer la mitad.</p><p>Estoy totalmente a favor de usarla para ganar tiempo.</p><p>El problema no es la herramienta. El problema es esta fiebre por met&#233;rsela a absolutamente todo y, sobre todo, la tentaci&#243;n de delegarle la &#250;nica parte de nuestro trabajo que de verdad nos pertenece: <strong>el pensamiento cr&#237;tico</strong>.</p><h2>La frontera entre ejecuci&#243;n y criterio</h2><p>El error en el que estamos cayendo es confundir dos conceptos que deber&#237;an estar completamente separados:</p><ul><li><p><strong>Delegar la ejecuci&#243;n:</strong> Es pedirle a un modelo que te escriba una funci&#243;n auxiliar, te d&#233; la sintaxis exacta de un comando que no recuerdas o te convierta un formato de datos a otro. T&#250; sabes exactamente qu&#233; quieres hacer y por qu&#233; lo necesitas. La IA solo te ahorra el tecleo mec&#225;nico. Ganaste tiempo y tu criterio sigue intacto.</p></li><li><p><strong>Delegar el criterio:</strong> Es abrir la terminal, tirarle a Claude Code un problema que ni te has parado a entender, ejecutar a ciegas lo que te chuta y, cuando salta un error, copiar la traza sin leerla para decirle <em>&#8220;no funciona, arr&#233;glalo&#8221;</em>.</p></li></ul><p>Cuando delegas el criterio, est&#225;s apagando el motor.</p><h2>El efecto GPS</h2><p>Nos est&#225; pasando lo mismo que cuando empezamos a meter la direcci&#243;n en la aplicaci&#243;n del m&#243;vil para ir a sitios por los que hab&#237;amos pasado cien veces. Al principio era una ayuda para evitar un atasco puntual. Con el tiempo, dejamos de mirar las calles, dejamos de memorizar puntos de referencia y entregamos la navegaci&#243;n.</p><blockquote><p>El resultado es que hoy hay gente incapaz de orientarse en su propio barrio si la pantalla del m&#243;vil no le dice d&#243;nde girar.</p></blockquote><p>Con la tecnolog&#237;a y el desarrollo nos est&#225; ocurriendo lo mismo a velocidad multiplicada. Si cada vez que nos topamos con un problema acudimos al chat antes de haber dedicado tres minutos a masticar la soluci&#243;n por nuestra cuenta, la capacidad de razonar se atrofia. Pensar cuesta energ&#237;a, y el cerebro siempre va a buscar la ruta de menor resistencia si se lo permitimos.</p><h2>Dos formas de estar frente a la pantalla</h2><p>Cada vez se nota m&#225;s la brecha entre dos formas de trabajar:</p><ol><li><p><strong>El perfil </strong><em><strong>sparring</strong></em><strong>:</strong> Utiliza la IA para rebotar ideas, cuestiona sus respuestas, revisa la arquitectura y entiende cada l&#237;nea que entra en su proyecto. Mantiene el control y usa la herramienta para acelerar.</p></li><li><p><strong>El perfil </strong><em><strong>cable</strong></em><strong>:</strong> Se limita a hacer de puente entre la ventana del chat y el repositorio. No razona sobre las decisiones t&#233;cnicas ni sobre las implicaciones del c&#243;digo. Simplemente pasa datos de un lado a otro.</p></li></ol><h2>Conclusi&#243;n</h2><p>Usar la IA para ahorrar tiempo en lo mec&#225;nico es ser eficiente. Usarla para evitar el esfuerzo de pensar nos regala una falsa sensaci&#243;n de velocidad a costa de perder la capacidad de resolver problemas cuando la herramienta falla o el escenario se complica.</p><p>La herramienta tiene que ir siempre por detr&#225;s de la l&#243;gica humana, nunca por delante. En el momento en que la m&#225;quina decide el <em>porqu&#233;</em> y nosotros solo nos dedicamos a pulsar botones, dejamos de construir.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Creando una app para procesar documentos con IA. Pt 5. Aprendemos a hacer comparaciones semánticas]]></title><description><![CDATA[Mira ahora | A recording from Daniel's live video]]></description><link>https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-714</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-714</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 16 Aug 2026 16:00:22 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210902439/b3659ac42eca26005da4ff5cedb0769f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Seguimos afinando nuestra aplicaci&#243;n para procesar tickets con IA.</p><p>En esta sesi&#243;n definimos diferentes m&#233;todos de validaci&#243;n para asegurarnos de que nunca se a&#241;ada nada no deseado en nuestra base de datos.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Muse Glimmer: el nuevo modelo de Meta que puedes ejecutar en tu propio PC]]></title><description><![CDATA[Prueba Muse Glimmer, el nuevo modelo de Meta, sin necesidad de una GPU potente: qu&#233; es, c&#243;mo funciona y c&#243;mo empezar a usarlo en minutos.]]></description><link>https://iamdgarcia.substack.com/p/muse-glimmer-el-nuevo-modelo-de-meta</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/muse-glimmer-el-nuevo-modelo-de-meta</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 13 Aug 2026 13:03:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/38987a04-4be8-4d88-8266-e6100abaeb0e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Meta acaba de volver a poner el foco en los modelos abiertos.</p><p>Y esta vez no estamos hablando de un modelo gigantesco que necesita un cluster de GPUs para funcionar.</p><p>Se llama <strong>Muse Glimmer</strong>.</p><p>Es un modelo de aproximadamente <strong>30.000 millones de par&#225;metros</strong>, con capacidades multimodales, razonamiento, uso de herramientas y tareas agenticas, pero dise&#241;ado espec&#237;ficamente para poder ejecutarse en hardware de consumo. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Y lo m&#225;s interesante es que <strong>puedes probarlo ahora mismo sin tener una GPU de 24 GB o 32 GB</strong>.</p><p>Vamos a verlo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!GGGG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!GGGG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png" width="1282" height="1064" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1064,&quot;width&quot;:1282,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:602668,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/210868088?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GGGG!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8534effd-27cc-45a8-91d2-660b18327740_1282x1064.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Post original: https://research.meta.ai/blog/introducing-muse-glimmer-open-agentic-model</figcaption></figure></div><p></p><h2>&#191;Qu&#233; es Muse Glimmer?</h2><p>Muse Glimmer es un modelo de lenguaje desarrollado por <strong>Meta Superintelligence Labs</strong> y publicado bajo licencia Apache 2.0. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Pero llamarlo simplemente &#8220;un LLM de 30B&#8221; se queda bastante corto.</p><p>Meta lo ha dise&#241;ado pensando especialmente en <strong>agentes de IA</strong>.</p><p>Eso significa que el modelo no est&#225; pensado &#250;nicamente para responder preguntas.</p><p>Est&#225; entrenado para trabajar en tareas de varios pasos, utilizar herramientas, escribir y depurar c&#243;digo, recuperarse de errores y mantener planes durante workflows relativamente largos. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Adem&#225;s, es multimodal.</p><p>Puede recibir texto e im&#225;genes, por lo que puede trabajar con capturas de pantalla, documentos, gr&#225;ficos o interfaces visuales adem&#225;s de texto. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Y aqu&#237; viene una de las partes m&#225;s interesantes.</p><h3>30B no significa necesariamente que necesites 30B de VRAM</h3><p>Muse Glimmer ha sido optimizado espec&#237;ficamente para inferencia local.</p><p>Meta proporciona versiones cuantizadas de aproximadamente 4 bits que reducen el tama&#241;o del modelo a menos de 20 GB.</p><p>Seg&#250;n Meta, una de las versiones est&#225; pensada para GPUs de 24 GB y otra para GPUs de 32 GB. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Esto hace posible ejecutar un modelo de esta categor&#237;a en hardware que hasta hace poco habr&#237;a parecido insuficiente.</p><p>Y todav&#237;a hay otra optimizaci&#243;n interesante.</p><h2>Speculative decoding</h2><p>Muse Glimmer viene acompa&#241;ado de un peque&#241;o modelo denominado <strong>DFlash</strong>.</p><p>En lugar de generar los tokens estrictamente uno a uno, DFlash propone bloques de tokens y el modelo principal los verifica en paralelo.</p><p>Si las predicciones son correctas, se pueden aceptar varios tokens de una vez.</p><p>Esto es lo que conocemos como <strong>speculative decoding</strong>.</p><div class="pullquote"><p>Si quieres que haga un post hablando en profunidad de lo que es el speculative decoding y como acelera la inferencia de los LLMs, d&#233;jame un comentario</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/muse-glimmer-el-nuevo-modelo-de-meta/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/muse-glimmer-el-nuevo-modelo-de-meta/comments"><span>Deja un comentario</span></a></p></div><p>Seg&#250;n las mediciones publicadas por Meta, esta t&#233;cnica puede aumentar considerablemente la velocidad de generaci&#243;n. En una RTX 5090, por ejemplo, Meta reporta pasar de 74,9 tokens por segundo sin especulaci&#243;n a 233,4 tokens por segundo utilizando DFlash. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Es decir, no solo han intentado hacer que el modelo quepa en una GPU de consumo.</p><p>Tambi&#233;n han trabajado en que sea suficientemente r&#225;pido para utilizarlo en aplicaciones interactivas y agentes.</p><h2>&#191;Y c&#243;mo puedo probarlo?</h2><p>Aqu&#237; tenemos dos opciones.</p><p>La primera es ejecutarlo localmente.</p><p>La segunda, y la que vamos a utilizar en este tutorial, es probarlo mediante una API.</p><p>&#191;Por qu&#233;?</p><p>Porque para probar el modelo no necesitamos descargar 20 GB de pesos ni tener una GPU compatible.</p><p>Hugging Face permite utilizar modelos mediante <strong>Inference Providers</strong>, que act&#250;an como una capa com&#250;n para acceder a diferentes proveedores de inferencia. Adem&#225;s, puedes cambiar de proveedor sin modificar pr&#225;cticamente tu integraci&#243;n. (<a href="https://huggingface.co/docs/inference-providers/integrations/index">Hugging Face</a>)</p><p>En el caso de Muse Glimmer, actualmente podemos utilizar <strong>Together AI</strong> como proveedor.</p><p><a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?inference_api=true&amp;inference_provider=together&amp;language=python&amp;client=openai&amp;utm_source=chatgpt.com">Muse Glimmer 30B en Hugging Face</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!aady!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!aady!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png" width="1456" height="779" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:779,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:312944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/210868088?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aady!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcedc19c3-084c-4a14-8c0e-a40b2d818b73_1988x1064.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Paso 1. Crear una cuenta en Hugging Face</h2><p>Lo primero es crear una cuenta en Hugging Face si todav&#237;a no tienes una.</p><p>Despu&#233;s necesitaremos un token de acceso.</p><p>Puedes encontrar la configuraci&#243;n de tokens dentro de tu cuenta de Hugging Face.</p><p>La ventaja de utilizar Hugging Face Inference Providers es que podemos utilizar un &#250;nico token de Hugging Face para acceder a diferentes proveedores compatibles. (<a href="https://huggingface.co/docs/inference-providers/integrations/index">Hugging Face</a>)</p><p><a href="https://huggingface.co/join?utm_source=chatgpt.com">Crear una cuenta en Hugging Face</a></p><h2>Paso 2. Instalar el cliente de OpenAI</h2><p>Vamos a utilizar el SDK de OpenAI porque Together AI proporciona una API compatible con este formato.</p><p>Instalamos el cliente:</p><pre><code><code>pip install openai</code></code></pre><p>Y configuramos nuestro token de Hugging Face:</p><pre><code><code>export HF_TOKEN="tu_token_de_huggingface"</code></code></pre><h2>Paso 3. Hacer nuestra primera llamada</h2><p>Ahora podemos utilizar el modelo directamente desde Python.</p><pre><code><code>from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.environ["HF_TOKEN"],
)

response = client.chat.completions.create(
    model="meta-models/Muse-Glimmer-30B",
    messages=[
        {
            "role": "user",
            "content": "Expl&#237;came qu&#233; es speculative decoding."
        }
    ],
    provider="together",
)

print(response.choices[0].message.content)
</code></code></pre><p>La idea es muy sencilla.</p><p>Nuestro c&#243;digo habla con Hugging Face.</p><p>Hugging Face enruta la petici&#243;n hacia Together AI.</p><p>Together AI ejecuta Muse Glimmer.</p><p>Y nosotros recibimos la respuesta.</p><p>Todo esto sin descargar el modelo.</p><h2>Paso 4. Probar el razonamiento</h2><p>Muse Glimmer est&#225; especialmente orientado hacia tareas de razonamiento y agentes.</p><p>Por eso merece la pena probar algo un poco m&#225;s complejo que un simple &#8220;&#191;qu&#233; es Python?&#8221;.</p><p>Por ejemplo:</p><pre><code><code>response = client.chat.completions.create(
    model="meta-models/Muse-Glimmer-30B",
    messages=[
        {
            "role": "system",
            "content": "Reasoning strength: high"
        },
        {
            "role": "user",
            "content": """
            Tengo una aplicaci&#243;n Python que procesa im&#225;genes
            en tiempo real y empieza a quedarse sin memoria
            despu&#233;s de varias horas.

            Prop&#243;n un proceso sistem&#225;tico para encontrar
            el origen del problema y explica qu&#233; m&#233;tricas
            monitorizar&#237;as.
            """
        }
    ],
    provider="together",
)

print(response.choices[0].message.content)
</code></code></pre><p>Una de las cosas interesantes de Glimmer es precisamente que permite controlar la intensidad del razonamiento mediante el par&#225;metro <code>Reasoning strength</code>, con niveles <code>low</code>, <code>medium</code>, <code>high</code> y <code>xhigh</code>.</p><p>Meta recomienda <code>high</code> o <code>xhigh</code> para problemas complejos, programaci&#243;n y tareas agenticas. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><h2>Paso 5. Probar sus capacidades multimodales</h2><p>Y aqu&#237; es donde empieza a ponerse interesante.</p><p>Muse Glimmer no trabaja &#250;nicamente con texto.</p><p>Su arquitectura incorpora un encoder de percepci&#243;n espec&#237;fico de aproximadamente 1.800 millones de par&#225;metros que permite introducir im&#225;genes junto con el texto. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Por ejemplo, podemos enviarle una captura de pantalla y preguntarle qu&#233; est&#225; ocurriendo.</p><pre><code><code>response = client.chat.completions.create(
    model="meta-models/Muse-Glimmer-30B",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Analiza esta captura de pantalla y dime qu&#233; problema ves."
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/screenshot.png"
                    }
                }
            ]
        }
    ],
    provider="together",
)

print(response.choices[0].message.content)
</code></code></pre><p>Esto abre la puerta a casos de uso mucho m&#225;s interesantes.</p><p>Un agente que entiende una interfaz.</p><p>Un agente que analiza documentos.</p><p>Un agente que interpreta gr&#225;ficos.</p><p>O incluso un agente capaz de observar el estado de una aplicaci&#243;n y decidir qu&#233; hacer a continuaci&#243;n.</p><h2>&#191;Y si quiero ejecutarlo localmente?</h2><p>Aqu&#237; est&#225; probablemente la parte m&#225;s interesante de Muse Glimmer.</p><p>No necesitas obligatoriamente una API.</p><p>Meta ha publicado versiones optimizadas para hardware de consumo y tambi&#233;n proporciona artefactos para diferentes runtimes. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Puedes utilizar, entre otros:</p><p><strong>llama.cpp</strong></p><p><strong>vLLM</strong></p><p><strong>SGLang</strong></p><p><strong>Docker Model Runner</strong></p><p>Y tambi&#233;n existen cuantizaciones compatibles con herramientas como Ollama, LM Studio y otros runtimes locales. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Por ejemplo, Hugging Face proporciona directamente un ejemplo para levantarlo con vLLM:</p><pre><code><code>pip install vllm

vllm serve "meta-models/Muse-Glimmer-30B"
</code></code></pre><p>A partir de ah&#237; puedes utilizar una API compatible con OpenAI desde tu propia m&#225;quina. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Para una GPU de consumo, sin embargo, merece la pena utilizar una de las versiones cuantizadas y aprovechar DFlash para acelerar la generaci&#243;n.</p><h2>&#191;Merece la pena probarlo?</h2><p>Creo que s&#237;.</p><p>Pero no porque sea simplemente &#8220;otro modelo de 30B&#8221;.</p><p>Lo interesante de Muse Glimmer es la combinaci&#243;n.</p><p><strong>30B de par&#225;metros</strong></p><p><strong>Multimodalidad</strong></p><p><strong>Razonamiento</strong></p><p><strong>Tool use</strong></p><p><strong>Capacidades agenticas</strong></p><p><strong>Contexto de m&#225;s de 128K tokens</strong></p><p><strong>Cuantizaci&#243;n para hardware de consumo</strong></p><p><strong>Speculative decoding</strong></p><p>Todo ello en un modelo con licencia Apache 2.0. (<a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?client=openai&amp;inference_api=true&amp;inference_provider=together&amp;language=python">Hugging Face</a>)</p><p>Y esto representa una tendencia que me parece especialmente importante.</p><p>Cada vez estamos viendo m&#225;s modelos que no compiten &#250;nicamente por ser m&#225;s grandes.</p><p>Compiten por ser <strong>m&#225;s eficientes</strong>.</p><p>Modelos que pueden ejecutarse localmente.</p><p>Modelos que utilizan cuantizaci&#243;n.</p><p>Modelos que utilizan speculative decoding.</p><p>Modelos que est&#225;n dise&#241;ados alrededor de agentes y herramientas.</p><p>Porque el futuro de los modelos no va a consistir &#250;nicamente en preguntarles cosas.</p><p>Va a consistir en darles un objetivo y dejar que hagan el trabajo.</p><p>Y para eso, la arquitectura que rodea al modelo importa tanto como el modelo en s&#237;.</p><h2>Para probarlo ahora mismo</h2><p>Si quieres experimentar con Muse Glimmer sin instalar nada, esta es probablemente la forma m&#225;s sencilla:</p><p><a href="https://huggingface.co/meta-models/Muse-Glimmer-30B?inference_api=true&amp;inference_provider=together&amp;language=python&amp;client=openai&amp;utm_source=chatgpt.com">Probar Muse Glimmer 30B en Hugging Face</a></p><p>Si quieres entender c&#243;mo funciona la capa que permite utilizar diferentes proveedores desde Hugging Face:</p><p><a href="https://huggingface.co/docs/inference-providers/integrations/index?utm_source=chatgpt.com">Hugging Face Inference Providers</a></p><p>Y si quieres utilizar Together AI directamente para desplegar modelos mediante inferencia serverless:</p><p><a href="https://docs.together.ai/docs/serverless/models?utm_source=chatgpt.com">Together AI Serverless Models</a></p><p>Y si est&#225;s buscando una plataforma en la que ejecutar todos los modelos open source de forma sencilla, yo estoy empezando a usar Novita.AI. Super intuitiva y con todos los modelos actualizados.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://novita.ai/?ref=mzblm2z&amp;utm_source=affiliate&quot;,&quot;text&quot;:&quot;Probar Novita.AI&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://novita.ai/?ref=mzblm2z&amp;utm_source=affiliate"><span>Probar Novita.AI</span></a></p><p></p><p>Si tienes una GPU con suficiente memoria, entonces el siguiente paso es todav&#237;a m&#225;s interesante:</p><p><strong>ejecutarlo localmente y comparar su rendimiento con otros modelos de ~30B.</strong></p><p>Ah&#237; es donde realmente podemos empezar a ver qu&#233; significa que un modelo est&#233; dise&#241;ado para ejecutarse localmente.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Creando una app para procesar documentos con IA en directo Pt. 4]]></title><description><![CDATA[Creamos nuestras primeras validaciones de datos]]></description><link>https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-263</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos-263</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 09 Aug 2026 16:01:02 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209930027/4143e3b3eee17d896c78fe735fdd8892.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>En la sesi&#243;n de hoy hemos construido nuestros primeros validadores de datos.</p><p>Est&#225; muy bien sacar informaci&#243;n estructurada de fotos</p><p>pero si no validamos que los datos son correctos antes de meterlos en la base de datos&#8230;</p><p>tendremos problemas en el futuro</p><p>As&#237; que hoy nos hemos centrado en:</p><ul><li><p>evitar tickets duplicados</p></li><li><p>validar el nombre del supermercado en base a los valores de las tablas</p></li></ul><p></p><p>Recuerda que llevamos varias sesiones levantando este sistema desde cero: una API en FastAPI que recibe la imagen de un ticket, un LLM que extrae los datos de forma estructurada, y una base de datos SQL normalizada donde todo queda guardado con upsert para evitar duplicados.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9043bab2-0633-40d5-bd07-2ca9bc6b748b&quot;,&quot;caption&quot;:&quot;En la sesi&#243;n de hoy hemos construido el dashboard de Luma Spend &#8212; el proyecto que convierte fotos de tickets de supermercado en datos analizables.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Desarrollando una app para procesar documentos con IA en directo. Parte 3: Generamos un dashboard de explotaci&#243;n con Claude Code&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-08-02T16:02:07.357Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f849ebe-84cf-4ba9-8f9d-a43326e245a6_1672x941.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/desarrollando-una-app-para-procesar&quot;,&quot;section_name&quot;:&quot;Cuaderno de Bit&#225;cora - Daniel Garc&#237;a&quot;,&quot;video_upload_id&quot;:&quot;2b2771d7-b010-4b6b-950e-12ccbe6a439e&quot;,&quot;id&quot;:208977745,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>Como siempre, si quieres apoyar el canal puedes hacerlo a trav&#233;s de mis enlaces de afiliado:</p><p></p><p><strong>DigitalOcean</strong><span> &#8212; la plataforma que uso para desplegar APIs y servicios. Con mi c&#243;digo te llevas 200$ de cr&#233;dito gratis para empezar: </span><a href="https://m.do.co/c/eddc62174250">m.do.co/c/eddc62174250</a></p><p><strong>Netlify</strong><span> &#8212; la mejor forma de desplegar proyectos frontend de forma sencilla y r&#225;pida: </span><a href="https://join.netlify.com/uk2itht31g7b">join.netlify.com/uk2itht31g7b</a></p>]]></content:encoded></item><item><title><![CDATA[Graph Engineering: la siguiente habilidad que todo ingeniero de IA va a necesitar]]></title><description><![CDATA[El prompt engineering fue solo el principio. Descubre por qu&#233; Graph Engineering ser&#225; la habilidad clave para construir la pr&#243;xima generaci&#243;n de agentes de IA.]]></description><link>https://iamdgarcia.substack.com/p/graph-engineering-la-siguiente-habilidad</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/graph-engineering-la-siguiente-habilidad</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 06 Aug 2026 13:02:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e32a76c0-f38b-4a88-970d-a215e60f8e36_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hace un a&#241;o todo el mundo hablaba de <em>prompt engineering</em>.</p><p>Hace seis meses, la conversaci&#243;n pas&#243; a los <em>AI Agents</em>.</p><p>Y durante las &#250;ltimas semanas hay un nuevo t&#233;rmino apareciendo en todos lados:</p><p><strong>Graph Engineering.</strong></p><p>No es una nueva librer&#237;a.</p><p>No es un nuevo framework.</p><p>Y tampoco es una palabra de moda inventada por alguna startup para vender consultor&#237;a.</p><p>Es un cambio de mentalidad sobre c&#243;mo dise&#241;amos sistemas de agentes.</p><p>Y creo que va a ser una de las habilidades m&#225;s importantes de los pr&#243;ximos a&#241;os.</p><h2>El problema de los agentes lineales</h2><p>La mayor&#237;a de agentes que veo construidos hoy siguen exactamente el mismo patr&#243;n.</p><pre><code><code>Leer informaci&#243;n
      &#8595;
Pensar
      &#8595;
Escribir respuesta
      &#8595;
Revisar
      &#8595;
Terminar
</code></code></pre><p>Es c&#243;modo.</p><p>Es f&#225;cil de entender.</p><p>Y funciona.</p><p>Pero tiene un problema enorme.</p><p>Todo ocurre de forma secuencial.</p><p>Cada paso espera al anterior, incluso cuando realmente no existe ninguna dependencia.</p><p>Imagina que quieres revisar un repositorio con 200 archivos.</p><p>La forma tradicional ser&#237;a:</p><pre><code><code>Archivo 1
Archivo 2
Archivo 3
...
Archivo 200
</code></code></pre><p>Un agente.</p><p>Una tarea.</p><p>Un contexto.</p><p>Mucho tiempo esperando.</p><h2>El trabajo nunca fue una l&#237;nea</h2><p>Cuando empiezas a analizar los problemas reales descubres algo curioso.</p><p>La mayor&#237;a de tareas son independientes.</p><p>Revisar el archivo <code>auth.py</code> no necesita esperar a que termine <code>database.py</code>.</p><p>Buscar vulnerabilidades en una carpeta no depende de analizar otra.</p><p>Resumir cinco documentos distintos tampoco requiere hacerlo uno detr&#225;s de otro.</p><p>Entonces...</p><p>&#191;Por qu&#233; seguimos dise&#241;ando agentes como si todo fuera una cadena?</p><p>La respuesta es sencilla.</p><p>Porque pensamos en prompts.</p><p>No pensamos en grafos.</p><h2>&#191;Qu&#233; es realmente Graph Engineering?</h2><p>Graph Engineering consiste en dise&#241;ar el trabajo como un <strong>grafo de dependencias</strong>.</p><p>Cada nodo representa una tarea.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XpV3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 424w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 848w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XpV3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png" width="821" height="469" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:469,&quot;width&quot;:821,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="/__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 424w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 848w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XpV3!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee5482f-0897-4191-bd14-8656c61813e3_821x469.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cada arista representa una dependencia real.</p><p>Si dos nodos no necesitan compartir informaci&#243;n...</p><p>...pueden ejecutarse al mismo tiempo.</p><p>Eso cambia completamente la escala.</p><p>En lugar de esto:</p><pre><code><code>A &#8594; B &#8594; C &#8594; D
</code></code></pre><p>empiezas a construir algo as&#237;:</p><pre><code><code>          A
      /   |   \
     B    C    D
      \   |   /
          E
</code></code></pre><p>Ahora tienes m&#250;ltiples agentes trabajando en paralelo y &#250;nicamente sincronizando cuando realmente hace falta.</p><p>No est&#225;s optimizando el prompt.</p><p>Est&#225;s optimizando la arquitectura.</p><h2>La pregunta m&#225;s importante</h2><p>Hay una pregunta que me parece brillante.</p><p>Cada vez que escribas:</p><blockquote><p>&#8220;Y despu&#233;s...&#8221;</p></blockquote><p>preg&#250;ntate:</p><p><strong>&#191;El siguiente paso necesita realmente el resultado del anterior?</strong></p><p>Si la respuesta es no...</p><p>...esa dependencia sobra.</p><p>Y probablemente puedas ejecutar ambos pasos simult&#225;neamente.</p><p>Es una forma extremadamente sencilla de descubrir paralelismo que normalmente pasa desapercibido.</p><h2>Lo interesante no es la velocidad</h2><p>Mucha gente piensa que Graph Engineering sirve para hacer las cosas m&#225;s r&#225;pidas.</p><p>S&#237;.</p><p>Pero eso es casi un efecto secundario.</p><p>Lo realmente importante es la escala.</p><p>Imagina un agente encargado de revisar un monorepo enorme.</p><p>En lugar de analizar un archivo tras otro...</p><p>puede lanzar decenas de agentes especializados.</p><p>Uno revisa autenticaci&#243;n.</p><p>Otro busca secretos expuestos.</p><p>Otro analiza calidad del c&#243;digo.</p><p>Otro ejecuta pruebas.</p><p>Otro verifica los resultados de todos los anteriores.</p><p>Cada uno trabaja con su propio contexto.</p><p>Cada uno toma decisiones independientes.</p><p>Y al final existe un nodo que sintetiza todo.</p><p>Eso ser&#237;a pr&#225;cticamente imposible dentro de una &#250;nica conversaci&#243;n con un LLM.</p><h2>El enemigo invisible: el contexto compartido</h2><p>Aqu&#237; aparece otro concepto interesante.</p><p>Muchos sistemas crean varios agentes...</p><p>...pero todos comparten exactamente el mismo historial.</p><p>Eso no son varios agentes.</p><p>Es el mismo agente con varias pesta&#241;as abiertas.</p><p>Si un agente revisa su propio trabajo usando exactamente el mismo contexto...</p><p>no est&#225; verificando nada.</p><p>Simplemente est&#225; reafirmando su respuesta anterior.</p><p>Los buenos sistemas a&#237;slan el contexto.</p><p>Cada nodo recibe &#250;nicamente la informaci&#243;n que necesita.</p><p>Y eso hace que las verificaciones sean mucho m&#225;s fiables.</p><h2>Graph Engineering no significa &#8220;m&#225;s agentes&#8221;</h2><p>Uno de los errores m&#225;s comunes es pensar:</p><p>&#8220;Si un agente funciona bien...</p><p>diez funcionar&#225;n diez veces mejor.&#8221;</p><p>No.</p><p>Un mal dise&#241;o con cien agentes sigue siendo un mal dise&#241;o.</p><p>De hecho ser&#225; m&#225;s caro.</p><p>M&#225;s lento de depurar.</p><p>Y much&#237;simo m&#225;s dif&#237;cil de mantener.</p><p>La clave nunca es el n&#250;mero de agentes.</p><p>La clave es dise&#241;ar correctamente las dependencias entre ellos.</p><h2>Esto ya est&#225; ocurriendo</h2><p>Durante mucho tiempo los agentes fueron simplemente una secuencia de llamadas al modelo.</p><p>Ahora herramientas como Claude Code, OpenAI Codex, LangGraph o los sistemas internos de muchas empresas empiezan a construir flujos mucho m&#225;s parecidos a grafos que a conversaciones.</p><p>La conversaci&#243;n est&#225; dejando paso a la orquestaci&#243;n.</p><p>Y creo que esa diferencia ser&#225; enorme.</p><p>Dentro de unos a&#241;os probablemente dejaremos de preguntar:</p><blockquote><p>&#8220;&#191;Qu&#233; prompt utilizaste?&#8221;</p></blockquote><p>Para empezar a preguntar:</p><blockquote><p>&#8220;&#191;C&#243;mo dise&#241;aste el grafo?&#8221;</p></blockquote><p>Porque el valor ya no estar&#225; &#250;nicamente en escribir mejores instrucciones.</p><p>Estar&#225; en saber dividir un problema complejo en cientos de tareas independientes que colaboran entre s&#237;.</p><h2>Mi predicci&#243;n</h2><p>Creo que estamos viviendo exactamente el mismo cambio que ocurri&#243; hace a&#241;os con los sistemas distribuidos.</p><p>Al principio escrib&#237;amos programas secuenciales.</p><p>Despu&#233;s aprendimos concurrencia.</p><p>M&#225;s tarde llegaron los sistemas distribuidos.</p><p>Y finalmente apareci&#243; toda una disciplina dedicada &#250;nicamente a dise&#241;ar arquitecturas escalables.</p><p>Con los agentes est&#225; ocurriendo lo mismo.</p><p>El prompt fue el primer paso.</p><p>Los agentes fueron el segundo.</p><p>El siguiente paso es aprender a dise&#241;ar el sistema completo.</p><p>No importa si utilizas Claude Code, Codex, LangGraph o cualquier otra plataforma.</p><p>Lo importante es dejar de pensar en una conversaci&#243;n...</p><p>...y empezar a pensar en un grafo.</p><p></p><h2>Si todo esto te resulta nuevo, probablemente te falta una pieza</h2><p>En este art&#237;culo hemos hablado de c&#243;mo conectar agentes.</p><p>Pero hay una pregunta que hemos dado por hecha:</p><p><strong>&#191;Qu&#233; hace exactamente cada nodo del grafo?</strong></p><p>La respuesta son las <em>Skills</em>.</p><p>Una Skill encapsula conocimiento, procesos y buenas pr&#225;cticas para una tarea concreta. Cuando empiezas a construir sistemas complejos, descubres que el verdadero trabajo no est&#225; en escribir un prompt gigantesco, sino en reutilizar peque&#241;as capacidades especializadas que puedes combinar una y otra vez.</p><p>Hace unas semanas escrib&#237; una gu&#237;a completa sobre este tema que puedes leer aqu&#237;:</p><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;40579776-7e32-4617-ac1b-58957dd66265&quot;,&quot;caption&quot;:&quot;M&#225;s APIs.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Los agentes de IA no solo necesitan herramientas. Necesitan habilidades&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-23T13:00:43.463Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bc879d6-b231-4e88-8d8a-e7a6e96e0316_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/los-agentes-de-ia-no-solo-necesitan&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:206805101,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Despu&#233;s vuelve a este art&#237;culo. Ver&#225;s Graph Engineering con otros ojos.</p><p></p><p>Si prefieres no construir todas esas Skills desde cero, la <strong>Claude OS Collection</strong> re&#250;ne las mismas arquitecturas y componentes reutilizables que utilizo en mis proyectos para acelerar el desarrollo de sistemas ag&#233;nticos.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.gumroad.com/l/claude-os-collection&quot;,&quot;text&quot;:&quot;Consigue mi set de skills&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://iamdgarcia.gumroad.com/l/claude-os-collection"><span>Consigue mi set de skills</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Aprende a sacarle el máximo partido a StackNotes]]></title><description><![CDATA[Recap de la sesi&#243;n en directo]]></description><link>https://iamdgarcia.substack.com/p/aprende-a-sacarle-el-maximo-partido</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/aprende-a-sacarle-el-maximo-partido</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Wed, 05 Aug 2026 08:57:03 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209805146/5059214954629b93699c34e766092025.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Utilizamos esta sesi&#243;n en directo para ense&#241;ar todas las nuevas funcionalidades de ofrece la plataforma de StackNotes.</p><p></p><p>Puedes registrarte gratis aqu&#237;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://stacknotes.iamdgarcia.com/&quot;,&quot;text&quot;:&quot;StackNotes&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://stacknotes.iamdgarcia.com/"><span>StackNotes</span></a></p><p>si quieres revisar el resto de la documentaci&#243;n te la dejo por aqu&#237;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/s/stacknotes&quot;,&quot;text&quot;:&quot;Documentaci&#243;n&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/s/stacknotes"><span>Documentaci&#243;n</span></a></p>]]></content:encoded></item><item><title><![CDATA[Desarrollando una app para procesar documentos con IA en directo. Parte 3: Generamos un dashboard de explotación con Claude Code]]></title><description><![CDATA[Construyendo un dashboard con Claude Code]]></description><link>https://iamdgarcia.substack.com/p/desarrollando-una-app-para-procesar</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/desarrollando-una-app-para-procesar</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 02 Aug 2026 16:02:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/208977745/7f67160f3cefbd9c70038df6d8e02993.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>En la sesi&#243;n de hoy hemos construido el dashboard de Luma Spend &#8212; el proyecto que convierte fotos de tickets de supermercado en datos analizables.</p><p>Si el nombre se lo ha inventado nuestra becaria Clauda</p><p></p><p>Recuerda que llevamos varias sesiones levantando este sistema desde cero: una API en FastAPI que recibe la imagen de un ticket, un LLM que extrae los datos de forma estructurada, y una base de datos SQL normalizada donde todo queda guardado con upsert para evitar duplicados.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;500de92e-ffb0-4b13-b1da-3dbb9279c0f9&quot;,&quot;caption&quot;:&quot;Si est&#225;s empezando a crear tus primeros proyectos con IA esto te interesa&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Creando una app para procesar documentos con IA en directo. Parte 2&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-26T16:03:19.812Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/751be051-06dd-4201-974c-571b5018b7ce_1672x941.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos&quot;,&quot;section_name&quot;:&quot;Cuaderno de Bit&#225;cora - Daniel Garc&#237;a&quot;,&quot;video_upload_id&quot;:&quot;90a37b7b-5271-49be-bb74-35b8ecb349dd&quot;,&quot;id&quot;:208063305,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;fde3aa48-7659-4755-a72c-008b9bf41974&quot;,&quot;caption&quot;:&quot;Segunda semana probando el entorno de directos de Substack.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Probamos stream desde OBS y montamos una API para procesar documentos con IA&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-07-19T16:02:42.041Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76471fa8-3a27-494b-9908-624eef2d9a0c_1672x941.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos&quot;,&quot;section_name&quot;:&quot;Cuaderno de Bit&#225;cora - Daniel Garc&#237;a&quot;,&quot;video_upload_id&quot;:&quot;aee93182-0dcc-48c3-90bf-d7c5eecdc1e4&quot;,&quot;id&quot;:207157826,&quot;type&quot;:&quot;podcast&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Hoy ha tocado hacer esos datos visibles.</p><p>Hemos dise&#241;ado el endpoint <code>GET /api/v1/dashboard/report</code>, implementado las queries de agregaci&#243;n sobre tickets, productos y supermercados, y conectado la vista HTML para que se hidrate en tiempo real con <code>fetch</code>. Tambi&#233;n hemos generado m&#225;s de 500 tickets de prueba para poder ver el dashboard con datos reales y validar que las m&#233;tricas tienen sentido.</p><p></p><p>Al final de la sesi&#243;n, Luma Spend tiene un cuadro de mando funcional que muestra gasto por supermercado, productos m&#225;s comprados y evoluci&#243;n mensual del gasto.</p><div><hr></div><p>Como siempre, si quieres apoyar el canal puedes hacerlo a trav&#233;s de mis enlaces de afiliado:</p><p><strong>DigitalOcean</strong> &#8212; la plataforma que uso para desplegar APIs y servicios. Con mi c&#243;digo te llevas 200$ de cr&#233;dito gratis para empezar: <a href="https://m.do.co/c/eddc62174250">m.do.co/c/eddc62174250</a></p><p><strong>Netlify</strong> &#8212; la mejor forma de desplegar proyectos frontend de forma sencilla y r&#225;pida: <a href="https://join.netlify.com/uk2itht31g7b">join.netlify.com/uk2itht31g7b</a></p>]]></content:encoded></item><item><title><![CDATA[Ya puedes probar Kimi K3 en segundos con DigitalOcean (sin desplegar GPUs)]]></title><description><![CDATA[Uno de los modelos open-weight m&#225;s prometedores del momento ya est&#225; disponible como servicio serverless. Descubre qu&#233; hace especial a Kimi K3 y c&#243;mo empezar a utilizarlo desde Python o Claude Code en]]></description><link>https://iamdgarcia.substack.com/p/ya-puedes-probar-kimi-k3-en-segundos</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/ya-puedes-probar-kimi-k3-en-segundos</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 30 Jul 2026 13:02:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/82570f0d-9a7f-4f4e-820e-bcd7a4fb21c2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Durante las &#250;ltimas semanas, <strong>Kimi K3</strong> se ha convertido en uno de los modelos de inteligencia artificial m&#225;s comentados dentro de la comunidad. No es habitual que un modelo open-weight genere tanto inter&#233;s, pero Kimi K3 lo ha conseguido gracias a una combinaci&#243;n poco com&#250;n: un rendimiento muy competitivo en tareas de programaci&#243;n y razonamiento, una arquitectura especialmente eficiente y unos costes de inferencia sorprendentemente bajos.</p><p>Hasta hace muy poco, probar un modelo de este tama&#241;o implicaba descargar cientos de gigabytes de pesos, configurar una infraestructura de inferencia con herramientas como vLLM o SGLang y disponer de una o varias GPUs capaces de ejecutarlo. En otras palabras, era una barrera de entrada importante para cualquiera que simplemente quisiera experimentar con &#233;l.</p><p>Eso acaba de cambiar.</p><p>DigitalOcean ha incorporado <strong>Kimi K3</strong> a su servicio de <strong>Serverless Inference</strong>, permitiendo utilizar el modelo mediante una API administrada, sin preocuparse por servidores, GPUs o despliegues. Si ya has trabajado con APIs compatibles con OpenAI, la experiencia resulta pr&#225;cticamente id&#233;ntica: obtienes una clave, realizas una llamada HTTP y comienzas a generar respuestas en cuesti&#243;n de minutos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!rTwa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 424w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 848w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rTwa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png" width="577" height="449" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:449,&quot;width&quot;:577,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288488,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/208940010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 424w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 848w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rTwa!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde20d2cc-14d2-44ab-9cc7-f1f1e89b82c4_577x449.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>M&#225;s all&#225; del propio modelo, este lanzamiento representa una tendencia muy interesante: los mejores modelos open-source ya no solo compiten en calidad con muchos modelos propietarios, sino que adem&#225;s empiezan a ofrecer una experiencia de uso igual de sencilla.</p><p>En este art&#237;culo veremos qu&#233; hace especial a Kimi K3, por qu&#233; tanta gente est&#225; hablando de &#233;l y c&#243;mo puedes empezar a utilizarlo desde DigitalOcean en menos de cinco minutos.</p><h2>&#191;Qu&#233; es Kimi K3?</h2><p>Kimi K3 es el &#250;ltimo modelo desarrollado por <strong>Moonshot AI</strong>, una de las empresas chinas que m&#225;s r&#225;pido est&#225; evolucionando en el ecosistema de modelos fundacionales.</p><p>A diferencia de muchos modelos propietarios, Kimi K3 es un modelo <strong>open-weight</strong>, lo que significa que sus pesos est&#225;n disponibles p&#250;blicamente para que cualquiera pueda desplegarlo, estudiarlo o adaptarlo a sus necesidades.</p><p>Sin embargo, que un modelo sea abierto no significa necesariamente que sea f&#225;cil de utilizar. Ejecutar un modelo de estas dimensiones sigue requiriendo una infraestructura considerable, especialmente si queremos obtener una latencia baja o atender m&#250;ltiples usuarios simult&#225;neamente.</p><p>Ah&#237; es donde entran en juego plataformas como DigitalOcean.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7W__!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 424w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 848w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7W__!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png" width="577" height="823" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:823,&quot;width&quot;:577,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/208940010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 424w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 848w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7W__!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e997d9d-92cc-410f-a580-ae3f9f91a72d_577x823.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>&#191;Por qu&#233; est&#225; generando tanto inter&#233;s?</h2><p>La raz&#243;n principal no es &#250;nicamente su rendimiento en benchmarks. Lo realmente interesante es la combinaci&#243;n de varios factores que hacen que Kimi K3 resulte especialmente atractivo para desarrolladores e ingenieros de IA.</p><h3>Una arquitectura Mixture of Experts</h3><p>Kimi K3 utiliza una arquitectura <strong>Mixture of Experts (MoE)</strong>.</p><p>En lugar de activar todos los par&#225;metros del modelo en cada inferencia, el sistema selecciona &#250;nicamente los expertos m&#225;s adecuados para responder a cada token.</p><p>Esto permite construir modelos enormes sin que el coste computacional crezca de forma proporcional.</p><p>En la pr&#225;ctica obtenemos un modelo con una gran capacidad de representaci&#243;n, pero con un coste de inferencia mucho menor que un modelo denso de tama&#241;o equivalente.</p><h3>Una gesti&#243;n mucho m&#225;s eficiente de la memoria</h3><p>Uno de los aspectos m&#225;s interesantes del paper es la optimizaci&#243;n del uso de la <strong>KV Cache</strong>.</p><p>Cuando un modelo genera texto, necesita almacenar informaci&#243;n sobre todos los tokens anteriores para mantener el contexto de la conversaci&#243;n.</p><p>En modelos tradicionales, esta memoria crece r&#225;pidamente conforme aumenta el contexto, convirti&#233;ndose en uno de los principales cuellos de botella.</p><p>Kimi K3 introduce una representaci&#243;n mucho m&#225;s eficiente que reduce significativamente ese consumo de memoria sin perder calidad.</p><p>Si has visto alguno de los diagramas t&#233;cnicos del paper probablemente parezca un mecanismo extremadamente complejo. Sin embargo, la idea es bastante sencilla: almacenar &#250;nicamente la informaci&#243;n realmente necesaria para reconstruir el contexto en lugar de guardar una copia completa de todas las representaciones intermedias.</p><p>Es precisamente esta optimizaci&#243;n la que permite manejar contextos largos de forma mucho m&#225;s eficiente.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pWN9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 424w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 848w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pWN9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png" width="440" height="844" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:844,&quot;width&quot;:440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142417,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/208940010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 424w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 848w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pWN9!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf302f54-ccb4-4935-9202-400b6b3437f8_440x844.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.linkedin.com/posts/iamdgarcia_a-primera-vista-este-diagrama-parece-imposible-share-7487152123512692736-q_75/?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAACRzL0MBc1mnbU7GBmC1uNFZxNubK90c-rI">Enlace al post</a></figcaption></figure></div><h3>Muy competitivo en programaci&#243;n</h3><p>Otro de los motivos por los que Kimi K3 ha llamado tanto la atenci&#243;n es su rendimiento en tareas relacionadas con el desarrollo de software.</p><p>Seg&#250;n los resultados publicados por Moonshot AI, el modelo obtiene resultados muy competitivos en benchmarks de programaci&#243;n, razonamiento matem&#225;tico y resoluci&#243;n de problemas complejos, situ&#225;ndose sorprendentemente cerca de algunos modelos propietarios mucho m&#225;s conocidos.</p><p>Para muchos desarrolladores, esto convierte a Kimi K3 en una alternativa muy interesante para tareas de generaci&#243;n de c&#243;digo, revisi&#243;n de proyectos o asistencia durante el desarrollo.</p><h2>La verdadera noticia no es Kimi K3</h2><p>Curiosamente, la parte m&#225;s interesante de este lanzamiento no es el propio modelo.</p><p>La verdadera noticia es que empieza a ser posible consumir modelos open-weight exactamente igual que utilizamos GPT-4, Claude o Gemini.</p><p>Hace apenas un a&#241;o el proceso habitual era algo parecido a esto:</p><ul><li><p>Descargar cientos de gigabytes de pesos.</p></li><li><p>Configurar CUDA.</p></li><li><p>Instalar vLLM.</p></li><li><p>Desplegar uno o varios servidores.</p></li><li><p>Gestionar GPUs.</p></li><li><p>Configurar balanceadores y escalado.</p></li></ul><p>Hoy el proceso se reduce pr&#225;cticamente a tres pasos:</p><ul><li><p>Crear una API Key.</p></li><li><p>Copiar un endpoint.</p></li><li><p>Enviar una petici&#243;n HTTP.</p></li></ul><p>Ese cambio reduce enormemente la barrera de entrada y hace que experimentar con nuevos modelos sea mucho m&#225;s sencillo.</p><h2>Probando Kimi K3 desde DigitalOcean</h2><p>Una vez accedemos al panel de inferencia de DigitalOcean, &#250;nicamente necesitamos crear una API Key y seleccionar Kimi K3 como modelo disponible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!s5NN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 424w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 848w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 1272w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!s5NN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png" width="1238" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1238,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180385,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/208940010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 424w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 848w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 1272w, /__u/substackcdn.com/image/fetch/$s_!s5NN!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98cb9599-52e1-4740-836f-96f9471765c0_1238x882.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Despu&#233;s podemos utilizar un script tan sencillo como este:</p><pre><code><code>import requests

url = "https://inference.do-ai.run/v1/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_MODEL_ACCESS_KEY"
}
data = {
    "model": "kimi-k3",
    "messages": [
        {
            "role": "user",
            "content": "What is the capital of France?"
        }
    ],
    "max_tokens": 100
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
</code></code></pre><p>Y eso es todo.</p><p>No hay GPUs.</p><p>No hay despliegues.</p><p>No hay servidores que mantener.</p><p>Simplemente realizamos una llamada a la API y comenzamos a utilizar el modelo.</p><h2>Repositorio de ejemplo</h2><p>Para facilitar las pruebas he preparado un peque&#241;o repositorio con el ejemplo completo.</p><p>El proyecto incluye:</p><ul><li><p>Un ejemplo m&#237;nimo utilizando el cliente oficial de OpenAI.</p></li><li><p>Configuraci&#243;n mediante variables de entorno.</p></li><li><p>Un README con todos los pasos necesarios para comenzar en menos de cinco minutos.</p></li></ul><p>La idea es que puedas clonar el repositorio, a&#241;adir tu API Key y empezar a experimentar inmediatamente.</p><h2>&#191;Y si quieres utilizarlo desde Claude Code?</h2><p>Una de las ventajas de que DigitalOcean exponga una API compatible con OpenAI es que podemos reutilizarla en pr&#225;cticamente cualquier herramienta del ecosistema.</p><p>Si utilizas <strong>Claude Code</strong>, no necesitas modificar tu flujo de trabajo.</p><p>Basta con utilizar <strong>LiteLLM</strong> como proxy y configurar DigitalOcean como proveedor del modelo.</p><p>Hace unas semanas publiqu&#233; una gu&#237;a completa explicando c&#243;mo realizar esta configuraci&#243;n paso a paso, por lo que no voy a repetir todo el proceso aqu&#237;.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;80900c62-19b6-4bca-99b2-82d74a104ec6&quot;,&quot;caption&quot;:&quot;Si usas Claude Code, probablemente ya te has encontrado con su mayor limitaci&#243;n: el coste.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;&#191;Claude Code te est&#225; vaciando la cartera? &#128721;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-12T17:30:58.981Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1e82151-065c-4c6e-8e22-f67695cb8018_1376x768.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/el-truco-para-usar-claude-code-gratis&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:193545167,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:3,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Si todav&#237;a no la has le&#237;do, te recomiendo empezar por ese art&#237;culo y volver despu&#233;s para probar Kimi K3 como backend.</p><p>De esta forma podr&#225;s utilizar uno de los modelos open-weight m&#225;s interesantes del momento directamente desde Claude Code sin cambiar tu forma habitual de trabajar.</p><p></p><div class="pullquote"><p>Si todav&#237;a no tienes cuenta de DigitalOcean, registr&#225;ndote con este link conseguir&#225;s 5$ como regalo de bienvenida.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://m.do.co/c/eddc62174250&quot;,&quot;text&quot;:&quot;Conseguir 5$ en tokens&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://m.do.co/c/eddc62174250"><span>Conseguir 5$ en tokens</span></a></p></div><p></p><h2>Conclusi&#243;n</h2><p>Hace apenas un a&#241;o, ejecutar un modelo open de este nivel estaba reservado para quienes dispon&#237;an de una infraestructura considerable.</p><p>Hoy basta con registrarse en un proveedor de inferencia serverless, generar una API Key y escribir unas pocas l&#237;neas de Python.</p><p>Ese cambio es mucho m&#225;s importante que el lanzamiento de un nuevo modelo.</p><p>Significa que cada vez resulta m&#225;s sencillo probar, comparar e integrar modelos abiertos en aplicaciones reales sin asumir el coste operativo de mantener la infraestructura.</p><p>Kimi K3 probablemente no ser&#225; el &#250;ltimo modelo que llegue a plataformas como DigitalOcean. De hecho, todo apunta a que este ser&#225; el camino habitual durante los pr&#243;ximos a&#241;os: modelos abiertos, APIs compatibles con OpenAI y una experiencia de desarrollo pr&#225;cticamente id&#233;ntica independientemente del proveedor que elijamos.</p><p>Y eso es una gran noticia para cualquiera que construya aplicaciones basadas en inteligencia artificial.</p><h2>Recursos</h2><p>Si quieres seguir profundizando, aqu&#237; tienes algunos recursos que pueden resultarte &#250;tiles:</p><ul><li><p>Mi gu&#237;a para utilizar Claude Code con LiteLLM y DigitalOcean como proveedor de inferencia.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c0153f61-1e83-4903-b501-0885cc48d91b&quot;,&quot;caption&quot;:&quot;Si usas Claude Code, probablemente ya te has encontrado con su mayor limitaci&#243;n: el coste.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;&#191;Claude Code te est&#225; vaciando la cartera? &#128721;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo sobre IA fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las rrss. Uso https://stacknotes.iamdgarcia.com para gestionar mi cuenta&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-12T17:30:58.981Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1e82151-065c-4c6e-8e22-f67695cb8018_1376x768.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/el-truco-para-usar-claude-code-gratis&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:193545167,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:3,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></li><li><p>El <a href="https://github.com/iamdgarcia/digitalocean-kimi-k3-python">repositorio de ejemplo</a> con el cliente de Python utilizado en este art&#237;culo.</p></li><li><p>La <a href="https://www.digitalocean.com/blog/whats-new-on-inference-engine#week-of-july-27">documentaci&#243;n oficial</a> de DigitalOcean Serverless Inference.</p></li><li><p>El <a href="https://www.kimi.com/blog/kimi-k3">paper t&#233;cnico</a> de Kimi K3 publicado por Moonshot AI.</p></li></ul><p></p>]]></content:encoded></item><item><title><![CDATA[Creando una app para procesar documentos con IA en directo. Parte 2]]></title><description><![CDATA[Mira ahora | Mira como depuramos el proceso de extraer cualquier informaci&#243;n de una imagen utilizando LLMs]]></description><link>https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/creando-una-app-para-procesar-documentos</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 26 Jul 2026 16:03:19 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/208063305/6a7197050021c05067e30b8ccee79d8d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Si est&#225;s empezando a crear tus primeros proyectos con IA esto te interesa</p><p>Estamos creando una app para extraer informaci&#243;n de tickets de la compra y almacenarlos en una base de datos para poder explotarlos en el futuro.</p><p>Utilizando LLMs como palanca para extraer toda la informaci&#243;n necesaria.</p><p></p><p>Sin hoja de ruta, todo es improvisado.</p><p>Para que puedas ver como es el proceso l&#243;gico de una persona que trabaja esto en el d&#237;a a d&#237;a.</p><p>En el video de hoy nos dedicamos a ajustar la extracci&#243;n de datos con IA y a generar el primer modelo de datos para guardar esa informaci&#243;n.</p><p>La semana que viene tendremos nuestro primer dashboard completo. </p><p></p><div class="install-substack-app-embed install-substack-app-embed-web" data-component-name="InstallSubstackAppToDOM"><img class="install-substack-app-embed-img" src="/__u/substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png"><div class="install-substack-app-embed-text"><div class="install-substack-app-header">Obt&#233;n m&#225;s de Daniel en la app de Substack</div><div class="install-substack-app-text">Disponible para iOS y Android</div></div><a href="/__u/substack.com/app/app-store-redirect?utm_campaign=app-marketing&amp;utm_content=author-post-insert&amp;utm_source=iamdgarcia" target="_blank" class="install-substack-app-embed-link"><button class="install-substack-app-embed-btn button primary">Descargar la app</button></a></div>]]></content:encoded></item><item><title><![CDATA[Los agentes de IA no solo necesitan herramientas. Necesitan habilidades]]></title><description><![CDATA[La mayor&#237;a de la gente piensa que el futuro de los agentes de IA consiste en darles acceso a m&#225;s herramientas.]]></description><link>https://iamdgarcia.substack.com/p/los-agentes-de-ia-no-solo-necesitan</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/los-agentes-de-ia-no-solo-necesitan</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 23 Jul 2026 13:00:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5bc879d6-b231-4e88-8d8a-e7a6e96e0316_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>M&#225;s APIs.</p><p>M&#225;s servidores MCP.</p><p>M&#225;s integraciones.</p><p>Pero despu&#233;s de pasar el &#250;ltimo a&#241;o construyendo agentes para producci&#243;n, he llegado a una conclusi&#243;n: hemos estado optimizando la capa equivocada.</p><p>El mayor salto en el rendimiento de un agente no viene de darle una API m&#225;s.</p><p>Viene de ense&#241;arle <strong>c&#243;mo pensar</strong>.</p><h2>La analog&#237;a del ingeniero de software</h2><p>Imagina que contratas a un nuevo ingeniero de software.</p><p>El primer d&#237;a le das acceso a:</p><ul><li><p>GitHub</p></li><li><p>VS Code</p></li><li><p>Slack</p></li><li><p>Jira</p></li><li><p>Docker</p></li><li><p>AWS</p></li></ul><p>Enhorabuena.</p><p>Ahora tiene acceso a las mismas herramientas que utilizan tus ingenieros senior.</p><p>&#191;Eso significa que ya es un ingeniero senior?</p><p>Por supuesto que no.</p><p>La diferencia no est&#225; en las herramientas.</p><p>Est&#225; en la experiencia acumulada.</p><p>Los ingenieros senior saben:</p><ul><li><p>c&#243;mo depurar problemas de forma sistem&#225;tica</p></li><li><p>c&#243;mo revisar c&#243;digo</p></li><li><p>c&#243;mo planificar grandes refactorizaciones</p></li><li><p>c&#243;mo comunicarse con el equipo</p></li><li><p>cu&#225;ndo merece la pena optimizar</p></li><li><p>cu&#225;ndo <strong>no</strong> merece la pena optimizar</p></li></ul><p>Nada de eso son herramientas.</p><p>Son <strong>habilidades</strong>.</p><p>Y con los agentes de IA ocurre exactamente lo mismo.</p><h2>Las tres capas de un agente de IA</h2><p>La mayor&#237;a de la gente solo piensa en una de ellas.</p><h3>Capa 1: Herramientas</h3><p>Las herramientas son acciones.</p><p>Permiten que un agente interact&#250;e con el mundo exterior.</p><p>Por ejemplo:</p><ul><li><p>Leer archivos</p></li><li><p>Ejecutar c&#243;digo en Python</p></li><li><p>Buscar en Internet</p></li><li><p>Llamar a una API</p></li><li><p>Consultar una base de datos</p></li><li><p>Crear Pull Requests en GitHub</p></li></ul><p>Sin herramientas, un agente no puede hacer mucho m&#225;s que generar texto.</p><p>Son el equivalente a darle manos a una persona.</p><h2>Capa 2: Conocimiento</h2><p>El conocimiento responde preguntas.</p><p>Aqu&#237; es donde entran tecnolog&#237;as como <strong>RAG</strong>, <strong>bases de datos vectoriales</strong>, <strong>bases de conocimiento</strong> o los <strong>recursos expuestos mediante MCP</strong>.</p><p>En lugar de depender &#250;nicamente de lo que aprendi&#243; durante el entrenamiento, el modelo puede recuperar informaci&#243;n externa como:</p><ul><li><p>documentaci&#243;n de la empresa</p></li><li><p>especificaciones t&#233;cnicas</p></li><li><p>wikis internas</p></li><li><p>documentos PDF</p></li><li><p>datos de clientes</p></li><li><p>conversaciones anteriores</p></li></ul><p>La recuperaci&#243;n de conocimiento responde a una pregunta muy concreta:</p><blockquote><p><strong>&#191;Qu&#233; necesito saber antes de tomar esta decisi&#243;n?</strong></p></blockquote><p>Es la memoria del agente.</p><h2>Capa 3: Habilidades</h2><p>Esta es la capa de la que casi nadie habla.</p><p>Una habilidad es conocimiento experto reutilizable.</p><p>Le ense&#241;a al agente <strong>c&#243;mo</strong> abordar una tarea.</p><p>Piensa en las habilidades como playbooks ejecutables.</p><p>Por ejemplo:</p><h3>Habilidad de depuraci&#243;n</h3><p>En lugar de decir simplemente:</p><p><em>&#8220;Arregla este bug.&#8221;</em></p><p>La habilidad podr&#237;a indicar al agente que:</p><ol><li><p>Reproduzca el problema.</p></li><li><p>A&#237;sle el componente que falla.</p></li><li><p>Revise los cambios recientes.</p></li><li><p>Genere hip&#243;tesis.</p></li><li><p>Valide cada hip&#243;tesis.</p></li><li><p>Implemente la soluci&#243;n m&#225;s peque&#241;a posible.</p></li><li><p>Escriba pruebas de regresi&#243;n.</p></li></ol><p>El modelo no se ha vuelto m&#225;s inteligente.</p><p>Simplemente est&#225; siguiendo un mejor proceso.</p><h2>Las habilidades no son prompts</h2><p>Este es uno de los errores m&#225;s comunes.</p><p>Una buena habilidad es mucho m&#225;s que un prompt largo.</p><p>Los frameworks modernos de agentes suelen empaquetar las habilidades junto con:</p><ul><li><p>instrucciones estructuradas</p></li><li><p>flujos de trabajo</p></li><li><p>ejemplos</p></li><li><p>&#225;rboles de decisi&#243;n</p></li><li><p>plantillas reutilizables</p></li><li><p>scripts auxiliares</p></li><li><p>documentaci&#243;n de apoyo</p></li></ul><p>Despu&#233;s, el propio agente decide cu&#225;ndo cargar esa habilidad.</p><p>Curiosamente, es muy parecido a c&#243;mo trabajamos los humanos.</p><p>Un ingeniero de software no memoriza todas las soluciones posibles.</p><p>Recupera modelos mentales que ha ido construyendo durante a&#241;os.</p><p>Las habilidades permiten que los agentes hagan exactamente eso.</p><h2>&#191;D&#243;nde encaja MCP en todo esto?</h2><p>MCP (<em>Model Context Protocol</em>) se ha vuelto enormemente popular.</p><p>Pero mucha gente interpreta mal cu&#225;l es su funci&#243;n.</p><p>Un servidor MCP es, principalmente, una interfaz estandarizada para exponer capacidades.</p><p>Esas capacidades pueden incluir:</p><ul><li><p>herramientas</p></li><li><p>recursos</p></li><li><p>prompts</p></li><li><p>datos estructurados</p></li></ul><p>Por ejemplo, un servidor MCP de GitHub podr&#237;a exponer:</p><ul><li><p>b&#250;squeda de repositorios</p></li><li><p>creaci&#243;n de issues</p></li><li><p>apertura de Pull Requests</p></li><li><p>acceso a documentaci&#243;n</p></li></ul><p>Mientras que un servidor MCP de Notion podr&#237;a ofrecer:</p><ul><li><p>documentaci&#243;n de proyectos</p></li><li><p>notas de reuniones</p></li><li><p>diagramas de arquitectura</p></li></ul><p>MCP no sustituye a las habilidades.</p><p>Simplemente da acceso a capacidades externas.</p><p>Las habilidades ense&#241;an al agente c&#243;mo utilizar esas capacidades de forma eficaz.</p><h2>Un modelo mental &#250;til</h2><p>Piensa en un agente como si fuera un chef.</p><p>Las <strong>herramientas</strong> son el equipamiento de la cocina.</p><p>El cuchillo.</p><p>El horno.</p><p>La batidora.</p><p>El <strong>conocimiento</strong> es el libro de recetas.</p><p>Los ingredientes.</p><p>Las temperaturas.</p><p>Las proporciones.</p><p>Las <strong>habilidades</strong> son los a&#241;os de experiencia cocinando.</p><p>Saber cu&#225;ndo algo est&#225; demasiado hecho.</p><p>C&#243;mo equilibrar sabores.</p><p>C&#243;mo salvar un plato cuando algo sale mal.</p><p>Comprar un horno mejor no convierte a nadie en un chef con estrella Michelin.</p><p>Del mismo modo, darle otra API a un LLM tampoco lo convierte en un mejor agente.</p><h2>Por qu&#233; las habilidades ser&#225;n la verdadera ventaja competitiva</h2><p>Todos los modelos de frontera son cada vez m&#225;s inteligentes.</p><p>El uso de herramientas se est&#225; estandarizando.</p><p>La adopci&#243;n de MCP est&#225; creciendo r&#225;pidamente.</p><p>Dentro de poco, pr&#225;cticamente todo el mundo tendr&#225; acceso a los mismos modelos y a herramientas muy parecidas.</p><p>La diferencia ya no ser&#225; el acceso.</p><p>Ser&#225; la experiencia.</p><p>Las organizaciones que consigan capturar sus mejores pr&#225;cticas en forma de habilidades reutilizables estar&#225;n encapsulando a&#241;os de conocimiento interno.</p><p>Cada nuevo agente heredar&#225; autom&#225;ticamente esa experiencia.</p><p>Y ese es un multiplicador mucho m&#225;s potente que a&#241;adir otra integraci&#243;n.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>Construyendo tu propio sistema operativo para agentes</h2><p>Esta idea cambi&#243; por completo mi forma de dise&#241;ar agentes.</p><p>Antes me preguntaba:</p><p><em>&#8220;&#191;Qu&#233; herramientas deber&#237;a darle a este agente?&#8221;</em></p><p>Ahora me hago otra pregunta:</p><p><em>&#8220;&#191;Qu&#233; experiencia deber&#237;a heredar este agente?&#8221;</em></p><p>Por eso empec&#233; a construir colecciones de sistemas operativos y habilidades reutilizables que encapsulan flujos de trabajo reales de ingenier&#237;a, y no simplemente prompts.</p><p>Ya sea para depurar sistemas en producci&#243;n, dise&#241;ar arquitecturas, revisar c&#243;digo, escribir documentaci&#243;n t&#233;cnica u orquestar flujos de trabajo complejos con IA, el objetivo siempre es el mismo:</p><p><strong>Darles experiencia a los agentes, no solo acceso.</strong></p><p>Si est&#225;s construyendo agentes de IA para proyectos serios, empieza a pensar m&#225;s all&#225; de las APIs y las integraciones.</p><p>Ens&#233;&#241;ales c&#243;mo trabajan los expertos.</p><p>Ah&#237; es donde llegar&#225; la pr&#243;xima gran revoluci&#243;n en productividad.</p><h2>&#191;Quieres agentes que trabajen como ingenieros senior desde el primer d&#237;a?</h2><p>He empaquetado muchas de estas metodolog&#237;as en una colecci&#243;n de sistemas operativos y habilidades reutilizables que puedes instalar directamente en Claude Code.</p><p>Incluye flujos de trabajo para ingenier&#237;a de software, estrategias de depuraci&#243;n, dise&#241;o de arquitectura, revisi&#243;n de c&#243;digo, desarrollo con IA y mucho m&#225;s.</p><p>Puedes ver la colecci&#243;n completa aqu&#237;:</p><p><strong>Claude OS Collection</strong></p><p><a href="https://iamdgarcia.gumroad.com/l/claude-os-collection">https://iamdgarcia.gumroad.com/l/claude-os-collection</a></p><p>y&#8230; si te gustar&#237;a que hiciese una recopilaci&#243;n de alg&#250;n otro sector&#8230; </p><div class="directMessage button" data-attrs="{&quot;userId&quot;:110450931,&quot;userName&quot;:&quot;Daniel&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><p></p>]]></content:encoded></item><item><title><![CDATA[Probamos stream desde OBS y montamos una API para procesar documentos con IA]]></title><description><![CDATA[Mira ahora | Segunda sesi&#243;n en directo en Substack]]></description><link>https://iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 19 Jul 2026 16:02:42 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207157826/724cd74b335e1bca49a4dd4cbc210641.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Segunda semana probando el entorno de directos de Substack.</p><p></p><p>Aprovechamos los primeros minutos para comentar un tema algo pol&#233;mico:</p><p>Est&#225; dejando de tener sentido el t&#233;rmino &#8220;AI Engineer&#8221;??</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos/comments"><span>Deja un comentario</span></a></p><p></p><p>En la segunda parte del directo nos lanzamos directamente a crear un mini proyecto para aprender a generar un extractor de documentos utilizando IA.</p><p></p><p>La idea es ver hasta donde llegamos sin escribir una l&#237;nea de c&#243;digo.</p><p></p><p>De momento ya hemos creado la estructura de nuestra API y procesado nuestro primer documento.</p><p></p><p>El objetivo a largo plazo ser&#225; tener una peque&#241;a app conectada a telegram para poder subir los tickets de la compra y poder realizar distintos an&#225;lisis posteriormente.</p><p>En paralelo, otro agente conversacional nos permitir&#225; analizar nuestras estad&#237;sticas de foma conversacional. </p><p>La idea es ir continuando con este proyecto en directo para que pod&#225;is ver la realidad de hacer proyectos personales usando IA.</p><p>Intentar&#233; seguir mejorando la calidad de los directos durante las pr&#243;ximas semanas.</p><p>Como siempre, todo tipo de feedback es bienvenido:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/probamos-stream-desde-obs-y-montamos/comments"><span>Deja un comentario</span></a></p><p></p><p>Si este contenido te resulta &#250;til y quieres que sigamos publicando recursos sobre IA para equipos de desarrollo, puedes apoyar la comunidad haci&#233;ndote mecenas:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Estás tirando el 80% de tu dinero en Claude Code ]]></title><description><![CDATA[(y hay una soluci&#243;n en 10 minutos)]]></description><link>https://iamdgarcia.substack.com/p/estas-tirando-el-80-de-tu-dinero</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/estas-tirando-el-80-de-tu-dinero</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:08:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/_a3OUtFS2NQ" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hace dos semanas publiqu&#233; un v&#237;deo sobre esto. Antes de mandarte al v&#237;deo, quiero explic&#225;rtelo tambi&#233;n por texto &#8212; porque el concepto merece leerse despacio.</p><p>Si usas Claude Code en equipo, lo m&#225;s probable es que est&#233;s pagando por el mismo trabajo varias veces. No porque Claude sea caro. Sino porque no tienes ninguna capa en medio que recuerde lo que ya proces&#243;.</p><p>Eso tiene soluci&#243;n. Y se llama <strong>prompt caching</strong> con LiteLLM.</p><h1>El problema en cuesti&#243;n</h1><p>Cuando haces una pregunta con Claude Code, le mandas mucho m&#225;s que tu pregunta. Le mandas el contexto completo: las instrucciones del proyecto, el fichero que tienes abierto, el historial de la conversaci&#243;n. Todo eso son tokens. Y todos esos tokens se cobran.</p><p>Ahora imagina que t&#250; y un compa&#241;ero trabaj&#225;is en el mismo repositorio. Los dos us&#225;is Claude Code. Los dos le pregunt&#225;is cosas sobre el mismo c&#243;digo.</p><p>&#191;Qu&#233; ocurre? Que Claude recibe el mismo contexto dos veces. Lo procesa dos veces. Os cobra a los dos.</p><p>Es como contratar a un consultor para que lea tu documentaci&#243;n, te responda y te cobre. Al d&#237;a siguiente mandas a otra persona con la misma documentaci&#243;n. El consultor la vuelve a leer entera. Y te vuelve a cobrar.</p><p>En un equipo de cinco personas trabajando sobre el mismo repositorio, esto se multiplica. Pagas cinco veces por contexto que podr&#237;a procesarse una sola vez.</p><p></p><h2>La soluci&#243;n: un gateway en medio</h2><p>LiteLLM es un proxy open source que se sienta entre tu equipo y la API de Claude. En lugar de que cada desarrollador llame directamente a Anthropic, todos llaman a LiteLLM. Y LiteLLM se encarga de hablar con Claude.</p><p>La gracia est&#225; en el <strong>prompt caching</strong> de Anthropic. Claude puede guardar en memoria partes del contexto &#8212; el system prompt, el contenido de un fichero, las instrucciones del proyecto &#8212; y reutilizarlos sin volver a procesarlos. Los tokens cacheados cuestan un 90% menos que los tokens normales.</p><p>LiteLLM activa esto autom&#225;ticamente. No tienes que cambiar nada en tu forma de trabajar.</p><p></p><h1>C&#243;mo funciona el flujo</h1><p><strong>Primera petici&#243;n &#8212; Cache MISS</strong></p><p>Dev 1 hace una pregunta sobre el c&#243;digo. La petici&#243;n llega a LiteLLM. LiteLLM no tiene nada guardado a&#250;n &#8212; es la primera vez que alguien pregunta con ese contexto. Reenv&#237;a la petici&#243;n a Claude con la cabecera de cach&#233; activada. Claude procesa todo, responde, y guarda el contexto en memoria.</p><p>Pagas el 100% del coste. Normal. Es la primera vez.</p><p><strong>Segunda petici&#243;n &#8212; Cache HIT</strong></p><p>Dev 2 entra a trabajar. Mismo repositorio, contexto similar. La petici&#243;n llega a LiteLLM. Esta vez s&#237; tiene algo guardado.</p><p>LiteLLM no necesita mandarle a Claude el contexto completo otra vez. Claude ya lo tiene en memoria. Solo procesa la parte nueva &#8212; la pregunta espec&#237;fica de Dev 2.</p><p>El coste se desploma. En contextos t&#237;picos de trabajo en equipo &#8212; 10.000, 20.000 tokens de contexto compartido &#8212; el ahorro real se acerca al 80%.</p><p></p><h1>Por qu&#233; es especialmente potente en equipos</h1><p>El prompt caching funciona bien en cualquier caso. Pero escala de forma extraordinaria cuando hay contexto compartido.</p><p>Un equipo que trabaja sobre el mismo monorepo comparte el mismo system prompt, los mismos ficheros de configuraci&#243;n, las mismas instrucciones de proyecto. Ese contexto es el que m&#225;s tokens consume. Y es exactamente el que se cachea.</p><p>Cuanto m&#225;s grande el equipo y m&#225;s cohesionado el contexto de trabajo, mayor es el ahorro.</p><p>Esto tambi&#233;n aplica a ti solo: si haces varias preguntas seguidas sobre el mismo fichero, cada pregunta posterior aprovecha la cach&#233; de la anterior. El sistema aprende a ser eficiente sin que hagas nada diferente.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jdJb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 424w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 848w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jdJb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png" width="1456" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f764b593-a80c-44ec-a893-816adadf538a_2510x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:319240,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/204954404?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 424w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 848w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jdJb!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff764b593-a80c-44ec-a893-816adadf538a_2510x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h1>C&#243;mo montarlo</h1><p>La configuraci&#243;n es m&#225;s sencilla de lo que parece. Instalas LiteLLM, lo arrancas con tu clave de Anthropic, y apuntas Claude Code a tu instancia local en lugar de a Anthropic directamente. Todo lo dem&#225;s es transparente &#8212; el mismo Claude, la misma calidad de respuestas, a una fracci&#243;n del coste.</p><p>Tengo un v&#237;deo dedicado a la instalaci&#243;n paso a paso aqu&#237;:</p><div id="youtube2-LXOz2e4wMc4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LXOz2e4wMc4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LXOz2e4wMc4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><h1>El v&#237;deo completo</h1><p>Si prefieres verlo explicado visualmente, con el diagrama del flujo de datos y la narraci&#243;n completa, lo tienes aqu&#237;. Dura menos de siete minutos.</p><div id="youtube2-_a3OUtFS2NQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_a3OUtFS2NQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_a3OUtFS2NQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><p>Si este contenido te resulta &#250;til y quieres que sigamos publicando recursos sobre IA para equipos de desarrollo, puedes apoyar la comunidad haci&#233;ndote mecenas:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>Gracias por leer.</p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Cuaderno de Bitácora en VIvo. Hablamos de los problemas de la IA en la industria y respondo vuestras preguntas]]></title><description><![CDATA[Mira ahora | Distinto formato pero mismo contenido]]></description><link>https://iamdgarcia.substack.com/p/cuaderno-de-bitacora-en-vivo-hablamos</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/cuaderno-de-bitacora-en-vivo-hablamos</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 12 Jul 2026 16:02:02 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/205723204/d7d9ebd0921de804432d7d56755323b0.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Quer&#237;a aprovechar para probar la funcionalidad de los directos y que mejor forma que grabando un nuevo episodio de cuaderno de bit&#225;cora. </p><p>Matamos dos p&#225;jaros de un tiro.</p><p>Como os digo en el video, me gustar&#237;a que esta secci&#243;n empiece a estar algo m&#225;s enfocada en resolver vuestras dudas.</p><p>Tambi&#233;n podemos intentar traer invitados!</p><p>Dime en los comentarios</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/cuaderno-de-bitacora-en-vivo-hablamos/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/cuaderno-de-bitacora-en-vivo-hablamos/comments"><span>Deja un comentario</span></a></p><div class="install-substack-app-embed install-substack-app-embed-web" data-component-name="InstallSubstackAppToDOM"><img class="install-substack-app-embed-img" src="/__u/substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png"><div class="install-substack-app-embed-text"><div class="install-substack-app-header">Obt&#233;n m&#225;s de Daniel en la app de Substack</div><div class="install-substack-app-text">Disponible para iOS y Android</div></div><a href="/__u/substack.com/app/app-store-redirect?utm_campaign=app-marketing&amp;utm_content=author-post-insert&amp;utm_source=iamdgarcia" target="_blank" class="install-substack-app-embed-link"><button class="install-substack-app-embed-btn button primary">Descargar la app</button></a></div>]]></content:encoded></item><item><title><![CDATA[Cómo programar con agentes de IA sin escribir una línea de código]]></title><description><![CDATA[te cuento como trabajan los (buenos) ingenieros en 2026]]></description><link>https://iamdgarcia.substack.com/p/como-programar-con-agentes-de-ia</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/como-programar-con-agentes-de-ia</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Thu, 09 Jul 2026 13:03:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e4fa40d8-46ff-4e80-bd28-1c4f98b197f5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>La semana pasada constru&#237; una feature compleja &#8212; mensajes directos masivos a suscriptores de Substack &#8212; sin escribir una sola l&#237;nea de c&#243;digo. No porque la IA lo hiciera todo, sino porque aprend&#237; a dirigirla correctamente.</p><p>Hoy te explico el proceso exacto que segu&#237;. No los detalles t&#233;cnicos de la feature, sino c&#243;mo trabajar con un agente de IA para ir desde una idea hasta c&#243;digo en producci&#243;n.</p><p>Son tres fases: doc funcional, doc t&#233;cnico, implementaci&#243;n. Y entre cada una hay un paso que la mayor&#237;a se salta: el an&#225;lisis adversario.</p><h1>El punto de partida: una idea sin forma</h1><p>Alguien de mi comunidad me pas&#243; un enlace a un producto de la competencia &#8212; una extensi&#243;n de Chrome de pago que enviaba DMs masivos a suscriptores de Substack. </p><p>Cobran 20$ por algo que para mi no tiene mucho valor</p><p>y ya sab&#233;is que yo me debo a mi comunidad</p><p>asi que&#8230;</p><p>Quer&#237;a replicarlo como feature gratuita en StackNotes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!yt4B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 424w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 848w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yt4B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png" width="640" height="652.2553191489362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:958,&quot;width&quot;:940,&quot;resizeWidth&quot;:640,&quot;bytes&quot;:187669,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/202540508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 424w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 848w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yt4B!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F546fabe2-b08b-49b0-a5e0-efe73fbb96c9_940x958.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Problema: ten&#237;a una idea vaga y capturas de pantalla. No sab&#237;a exactamente qu&#233; hac&#237;a, c&#243;mo funcionaba por dentro, ni qu&#233; necesitaba para construirlo.</p><p>y, por supuesto, tampoco me sobra el tiempo para hacer estas cosas.</p><p>Ah&#237; empieza el proceso.</p><p></p><p>inciso.</p><p>Por si eres nuevo por aqu&#237;, te cuento que hace unos meses constru&#237; una herramienta gratuita para gestionar la publicaci&#243;n de notas en substack y ha ido creciendo poco a poco hacia una herramienta completa de gesti&#243;n de substack. </p><p>Se llama <a href="https://stacknotes.iamdgarcia.com/">Stacknotes</a> y si eres creador, seguro que te interesa.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0ab06aaa-66ac-4f63-a5a1-751227a5d730&quot;,&quot;caption&quot;:&quot;Durante meses he estado trabajando en algo que empez&#243; como un proyecto personal, casi experimental.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Como programar tus notas en Substack de forma gratuita&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo un #buildinpublic sobre la inteligencia artificial fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las redes sociales.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-16T06:01:55.410Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e954ae73-0940-411b-8e2f-051ca05d8a9e_747x1024.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/para-vosotros-creadores&quot;,&quot;section_name&quot;:&quot;StackNotes&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:175716210,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:22,&quot;comment_count&quot;:10,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h1>Fase 1: El documento funcional</h1><p>El documento funcional responde a una pregunta simple: <strong>&#191;qu&#233; hace el usuario?</strong></p><p>No qu&#233; hace el sistema. No c&#243;mo se implementa. Solo: &#191;qu&#233; ve el usuario, qu&#233; puede hacer, qu&#233; pasa cuando lo hace?</p><h2>C&#243;mo generarlo con Claude</h2><p>Lo primero que hice fue darle a Claude toda la informaci&#243;n de entrada que ten&#237;a: el texto de la p&#225;gina de venta del competidor y siete capturas de pantalla de la extensi&#243;n en uso.</p><p>El prompt fue:</p><div class="pullquote"><p>&#8221;Analiza este producto competidor. Extrae todas las funcionalidades: qu&#233; puede hacer el usuario, qu&#233; controles tiene, qu&#233; informaci&#243;n ve. S&#233; exhaustivo.&#8221;</p></div><p>Claude extrajo:</p><p>- Campo de mensaje con `{{USER_NAME}}` para personalizaci&#243;n</p><p>- Delay configurable entre env&#237;os para no parecer spam</p><p>- Filtros por tipo de suscriptor (free / paid / todos)</p><p>- Toggle &#8220;Only Empty Chat&#8221; para no molestar a quien ya tienes conversaci&#243;n</p><p>- Toggle &#8220;Unique Message&#8221; para no repetir mensajes</p><p>- Barra de progreso con pausa y reanudaci&#243;n en tiempo real</p><p>En tres minutos ten&#237;a el inventario completo de lo que necesitaba construir.</p><h2>Lo que el doc funcional NO incluye</h2><p>Aqu&#237; es donde mucha gente se equivoca: el doc funcional no menciona tecnolog&#237;a. No dice &#8220;edge function&#8221;, no dice &#8220;base de datos&#8221;, no dice &#8220;API&#8221;. Solo describe comportamiento desde el punto de vista del usuario.</p><p>Si empiezas a hablar de implementaci&#243;n en esta fase, contaminas el dise&#241;o. Las decisiones t&#233;cnicas deber&#237;an seguir a los requisitos funcionales, no al rev&#233;s.</p><h2>El primer an&#225;lisis adversario</h2><p>Antes de pasar a la doc t&#233;cnica, hice algo que cambi&#243; el dise&#241;o por completo.</p><p>Un truquito made in Daniel</p><p>que a mi me funciona de lujo siempre</p><p> le ped&#237; a Claude que atacara su propio trabajo</p><p>Hay mil formas de hacerlo, incluso ya he compartido con alguno de vosotros por privado alguna forma m&#225;s avanzada de robustecer un dise&#241;o</p><p>Si quieres que hable m&#225;s en profundidad de ello, d&#233;jame un comentario con tus dudas al respecto</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/p/como-programar-con-agentes-de-ia/comments&quot;,&quot;text&quot;:&quot;Deja un comentario&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/p/como-programar-con-agentes-de-ia/comments"><span>Deja un comentario</span></a></p><p></p><div class="pullquote"><p>&#8221;Revisa este documento funcional. &#191;Qu&#233; casos de uso no hemos contemplado? &#191;Qu&#233; har&#237;a el usuario que no est&#225; cubierto? &#191;Qu&#233; funcionalidad obvia falta?&#8221;</p></div><p>Claude me devolvi&#243; algo que no hab&#237;a pensado: &#191;y si quieres hacer esto autom&#225;ticamente para cada nuevo suscriptor?</p><p>Auto-welcome. Mensaje autom&#225;tico de bienvenida cuando alguien se suscribe.</p><p>Una pregunta adversaria cambi&#243; el alcance del proyecto. Y lo descubrimos antes de escribir una l&#237;nea de c&#243;digo, no despu&#233;s de desplegar.</p><p><strong>Esta es la clave del an&#225;lisis adversario en la fase funcional</strong>: no es un ejercicio acad&#233;mico. Es encontrar los requisitos ocultos antes de que el dise&#241;o t&#233;cnico los excluya por omisi&#243;n.</p><h1>Fase 2: El documento t&#233;cnico</h1><p>Con el doc funcional cerrado y validado, pas&#233; a la arquitectura t&#233;cnica. Esta fase responde a: <strong>&#191;c&#243;mo construye el sistema lo que el usuario necesita?</strong></p><p>El prompt:</p><div class="pullquote"><p>&#8221;Tenemos este documento funcional. Ahora dise&#241;a la arquitectura t&#233;cnica. Considera las restricciones: SPA en React, Supabase como backend, los navegadores bloquean peticiones cross-origin. Dame opciones, no una sola soluci&#243;n.&#8221;</p></div><p>&#8220;Dame opciones, no una sola soluci&#243;n&#8221; &#8212; esto es importante. Si no lo pides expl&#237;citamente, Claude tender&#225; a darte la primera opci&#243;n que encuentre. Pedir m&#250;ltiples opciones te fuerza a tomar una decisi&#243;n informada.</p><p>Claude present&#243; tres arquitecturas diferentes. Para cada una describi&#243;: c&#243;mo funciona, qu&#233; ventajas tiene, qu&#233; problemas podr&#237;a causar.</p><h3>C&#243;mo elegir entre opciones</h3><p>No le ped&#237; a Claude que eligiera (aunque si no tienes ni idea de lo que est&#225; hablando, quiz&#225;s tu mejor opci&#243;n es que lo haga). </p><p>Yo eleg&#237;, con criterios que Claude no pod&#237;a tener: qu&#233; parte del sistema necesito que sea f&#225;cil de depurar, cu&#225;nto complejidad quiero asumir, qu&#233; prefiero que falle de una forma visible.</p><p>Claude sabe sobre patrones de arquitectura. Yo s&#233; sobre mis prioridades.</p><h3>El doc t&#233;cnico tambi&#233;n descubre potenciales fallos</h3><p>Al dise&#241;ar la arquitectura, Claude identific&#243; algo que el doc funcional no hab&#237;a resuelto: para enviar un DM a alguien en Substack necesitas su ID num&#233;rico, no su email. &#191;Los datos que ya tenemos inclu&#237;an ese ID?</p><p>Claro, para saber esto tuve que hacer alguna prueba manual desde el navegador para ver c&#243;mo se mandaban los mensajes. </p><p>Aprovech&#233; algunos DMs que ten&#237;a pendientes de contestar para ver la estructura de la petici&#243;n </p><p>Abr&#237; DevTools en Substack, inspeccion&#233; la respuesta de la API de suscriptores, y le copi&#233; lo que ve&#237;a. Claude lo confirm&#243;: s&#237;, el ID estaba ah&#237;.</p><p>Esto ilustra algo que pasa constantemente: <strong>el doc t&#233;cnico descubre inc&#243;gnitas que el doc funcional asum&#237;a resueltas</strong>. Es normal. No es un fallo del proceso.</p><p>Como siempre digo, esto es algo iterativo</p><h2>El segundo an&#225;lisis adversario</h2><p>Antes de implementar, con la arquitectura sobre la mesa, hice el an&#225;lisis adversario t&#233;cnico:</p><div class="pullquote"><p>&#8221;Asume que esta arquitectura tiene un fallo fundamental que no hemos visto. &#191;Cu&#225;l ser&#237;a? &#191;Qu&#233; supuesto estamos dando por sentado que podr&#237;a ser falso?&#8221;</p></div><p>Claude identific&#243; varios riesgos: que las cookies de sesi&#243;n podr&#237;an expirar, que Substack podr&#237;a limitar la frecuencia de peticiones, que los delays entre mensajes necesitar&#237;an ajuste.</p><p>Pero hubo uno que no identific&#243; correctamente &#8212; y aqu&#237; est&#225; la lecci&#243;n m&#225;s importante del proceso.</p><p>Claude propuso que el proxy del servidor podr&#237;a hacer peticiones a Substack con las cookies del usuario. Eso sonaba razonable. Era incorrecto.</p><p>Lo que Claude no sab&#237;a (y yo no me acordaba) es que Substack usa Cloudflare Bot Management, que emite cookies de seguridad ligadas a la IP del navegador y su fingerprint TLS. Un servidor en un datacenter, por mucho que tenga las cookies correctas, siempre recibe 403.</p><p>Esto no era algo que el an&#225;lisis adversario sobre papel pudiera descubrir. Solo lo descubrimos al ejecutar el c&#243;digo y leer los logs.</p><blockquote><p>El an&#225;lisis adversario reduce riesgos, no los elimina. Su valor est&#225; en encontrar los problemas obvios antes de implementar. Los problemas no obvios se encuentran en producci&#243;n.</p></blockquote><h2>Fase 3: La implementaci&#243;n</h2><p>Con doc funcional, doc t&#233;cnico y an&#225;lisis adversario completados, la implementaci&#243;n fue la parte m&#225;s mec&#225;nica del proceso.</p><h2>Agentes en paralelo</h2><p>En lugar de pedirle a Claude que construyera todo secuencialmente, us&#233; cuatro agentes en paralelo, cada uno con una tarea independiente:</p><p>- Agente 1: la migraci&#243;n de base de datos</p><p>- Agente 2: las funciones del backend</p><p>- Agente 3: el hook de React con la l&#243;gica de estado</p><p>- Agente 4: la interfaz de usuario</p><p>En paralelo. Sin esperar a que uno terminara para empezar el siguiente.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2Zz1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 424w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 848w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2Zz1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png" width="484" height="531.3082706766917" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1314,&quot;width&quot;:1197,&quot;resizeWidth&quot;:484,&quot;bytes&quot;:1126556,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/202540508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 424w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 848w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2Zz1!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3dfc543-1554-4df1-89fd-d0018cd0969b_1197x1314.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Esto funcion&#243; porque la spec era precisa. Cuando la especificaci&#243;n es ambigua, los agentes toman decisiones de dise&#241;o impl&#237;citas, y esas decisiones son las que luego provocan bugs dif&#237;ciles de diagnosticar. Cuando la spec es clara, el c&#243;digo generado es predecible.</p><p>Ojo, esto no es necesario, pero te ahorra bastante tiempo. Siempre que los trabajos no se solapen, yo suelo paralelizar lo m&#225;ximo posible para ahorrar tiempo</p><h2>C&#243;mo dar contexto a cada agente</h2><p>Cada agente recibi&#243; tres cosas:</p><p>1. El fragmento del doc t&#233;cnico relevante para su tarea</p><p>2. El contexto del proyecto (qu&#233; stack, qu&#233; patrones existen)</p><p>3. Una instrucci&#243;n de l&#237;mites: qu&#233; NO debe tocar</p><p>Sin los l&#237;mites, los agentes tienden a refactorizar cosas que no deb&#237;an tocar, a a&#241;adir abstracciones que no pediste, o a cambiar convenciones existentes porque les parecen mejores.</p><h1>El debugging como proceso, no como magia</h1><p>La implementaci&#243;n inicial no funcion&#243; perfectamente. Hubo varios bugs. Aqu&#237; es donde mucha gente pierde la fe en el proceso: &#8220;la IA rompi&#243; algo&#8221;.</p><p>No es as&#237; como funciona. El debugging con IA es un proceso de darle informaci&#243;n espec&#237;fica y pedirle hip&#243;tesis espec&#237;ficas.</p><h2>Qu&#233; no hacer</h2><div class="pullquote"><p>&#8221;Arr&#233;glalo, algo est&#225; fallando.&#8221;</p></div><p>Esta instrucci&#243;n es in&#250;til. Claude no puede ver los logs, no sabe qu&#233; est&#225; pasando, y va a proponer hip&#243;tesis a ciegas.</p><p>Aqu&#237; viene el principal problema del vibe coding cuando lo hace alguien que no sabe ni por donde le da el aire</p><h2>Qu&#233; hacer</h2><p>1. Copia los logs exactos</p><p>2. Describe el comportamiento observado vs el esperado</p><p>3. Pide hip&#243;tesis ordenadas por probabilidad</p><p>4. Valida cada hip&#243;tesis antes de pasar a la siguiente</p><div class="pullquote"><p>&#8221;La campa&#241;a se lanza pero no llama a la API de Substack. Los logs muestran [X]. El comportamiento esperado es [Y]. &#191;Cu&#225;les son las tres causas m&#225;s probables?&#8221;</p></div><p>Con informaci&#243;n espec&#237;fica, Claude puede diagnosticar con precisi&#243;n. Sin ella, adivina.</p><h2>Cu&#225;ndo el diagn&#243;stico de Claude no puede funcionar</h2><p>Hubo un momento donde Claude identific&#243; una causa probable pero la soluci&#243;n propuesta era arquitecturalmente imposible &#8212; el servidor no puede hacer ciertas peticiones a Substack, sin importar c&#243;mo se configure.</p><p>Esto requiri&#243; juicio humano: reconocer que el problema no era de configuraci&#243;n sino de dise&#241;o. La soluci&#243;n fue cambiar la arquitectura, no parchear el c&#243;digo.</p><p>Claude puede diagnosticar dentro del espacio de soluciones que conoce. Detectar que est&#225;s fuera de ese espacio es trabajo tuyo.</p><p></p><h1>El proceso completo</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!JYjY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_webp, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!JYjY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png" width="502" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:502,&quot;bytes&quot;:1152779,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://iamdgarcia.substack.com/i/202540508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_424, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_848, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_1272, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!JYjY!, /__u/iamdgarcia.substack.com/w_1456, /__u/iamdgarcia.substack.com/c_limit, /__u/iamdgarcia.substack.com/f_auto, /__u/iamdgarcia.substack.com/q_auto:good, /__u/iamdgarcia.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3331e7-a5ab-403f-958a-4fd0199d735f_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Diagrama de generaci&#243;n de c&#243;digo con IA</figcaption></figure></div><p></p><p>Lo que el humano hace en cada paso:</p><p>- <strong>Doc funcional</strong>: proveer inputs reales (capturas, texto), validar que cubre todos los casos de uso</p><p>- <strong>An&#225;lisis adversario</strong>: hacer las preguntas inc&#243;modas, no aceptar la primera respuesta</p><p>- <strong>Doc t&#233;cnico</strong>: elegir entre opciones con criterios propios, no delegar la decisi&#243;n</p><p>- <strong>Implementaci&#243;n</strong>: definir l&#237;mites claros para cada agente, revisar que el c&#243;digo generado sea coherente con la spec</p><p>- <strong>Debugging</strong>: proveer informaci&#243;n espec&#237;fica, detectar cu&#225;ndo la soluci&#243;n propuesta no puede funcionar</p><p>Lo que Claude hace en cada paso:</p><p>- Estructurar y completar lo que describes</p><p>- Proponer opciones con trade-offs</p><p>- Generar c&#243;digo sobre especificaciones claras</p><p>- Diagnosticar con la informaci&#243;n que le das</p><p></p><h1>Lo que cambia cuando sigues este proceso</h1><p>El error m&#225;s com&#250;n que veo es saltarse la doc funcional y la doc t&#233;cnica, ir directamente a &#8220;construye esto&#8221; y luego intentar arreglar lo que sale.</p><p>El c&#243;digo que sale de &#8220;construye esto&#8221; sin spec es funcional pero fr&#225;gil. Las decisiones de dise&#241;o quedan impl&#237;citas en la generaci&#243;n, no en un documento que puedes revisar y cuestionar. Cuando algo falla, no sabes si el error es en los requisitos, en la arquitectura, o en el c&#243;digo.</p><p>Cuando sigues el proceso completo, sabes exactamente en qu&#233; capa est&#225; el problema.</p><p>No quiero alargarme mucho, tengo un post explicando por qu&#233; es mala idea acumular deuda t&#233;cnica</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;3012c182-340f-4b21-b9de-56bb3e6e108d&quot;,&quot;caption&quot;:&quot;Entrenar un modelo hoy es gratis. Mantenerlo en producci&#243;n te puede costar la empresa.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;El coste oculto de la IA&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:110450931,&quot;name&quot;:&quot;Daniel&quot;,&quot;bio&quot;:&quot;Escribo un #buildinpublic sobre la inteligencia artificial fuera de rrss. Analizo c&#243;mo se usa en la empresa, c&#243;mo levanto proyectos propios y qu&#233; necesitas para rentabilizar esta tecnolog&#237;a fuera de las redes sociales.&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ef16447-7603-4eb2-9260-fed2ac60c83d_800x800.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-16T13:01:42.599Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d9935f1-048d-42aa-8113-0d17097dfe82_1376x768.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://iamdgarcia.substack.com/p/el-coste-oculto-de-la-ia&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:189864342,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:3132587,&quot;publication_name&quot;:&quot;The Learning Curve&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!M1iw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8676e9f6-f2a8-4d51-a9db-be4d6851b791_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>Si has llegado hasta aqu&#237;, d&#233;jame recordarte varias cosas:</p><p>Una parte de mi trabajo consiste en ayudar a empresas y particulares en temas de Inteligencia artificial</p><p>Bien desarrollado</p><p>o bien aconsejando y/o acompa&#241;ando</p><p>si quieres m&#225;s informaci&#243;n, puedes rellenar el formulario de mi web</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://servicios.iamdgarcia.com/&quot;,&quot;text&quot;:&quot;AQU&#205;&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://servicios.iamdgarcia.com/"><span>AQU&#205;</span></a></p><p>Por otro lado, ya sab&#233;is que The Learning Curve es una comunidad gratuita</p><p>Considero que la mayor&#237;a de contenido de pago que hay por ah&#237; no merece la pena (la herramienta sobre la que hemos trabajado en este post es un ejemplo de ello)</p><p>hay gente cobrando 20$/mes por cosas similares</p><p>yo intento traerlas gratis</p><p>porque entiendo que no todo el mundo est&#225; en la misma situaci&#243;n.</p><p>Stacknotes para m&#237; es un gasto</p><p>Sin embargo, tengo un sistema de mecenas para apoyar el contenido que hago</p><p>Es un precio simb&#243;lico de 5$/mes pero para m&#237; significa un mundo</p><p>Te dejo aqu&#237; el enlace</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe&quot;,&quot;text&quot;:&quot;Apoyar The Learning Curve&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/iamdgarcia.substack.com/subscribe"><span>Apoyar The Learning Curve</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Como aprendo yo una tecnología de IA en menos de una semana]]></title><description><![CDATA[Escucha ahora | Caso de estudio: Claude code]]></description><link>https://iamdgarcia.substack.com/p/como-aprendo-yo-una-tecnologia-de</link><guid isPermaLink="false">https://iamdgarcia.substack.com/p/como-aprendo-yo-una-tecnologia-de</guid><dc:creator><![CDATA[Daniel]]></dc:creator><pubDate>Sun, 05 Jul 2026 16:02:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/204451943/ab76dde4afc484243138b54be412a453.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><strong>Caso de estudio: Claude Code.</strong> Mi proceso exacto de los primeros siete d&#237;as: qu&#233; hice, en qu&#233; orden, qu&#233; fall&#243; y el marco que puedes aplicar t&#250; con cualquier herramienta de IA que aparezca.</p><p></p><div class="pullquote"><p>En este episodio te cuento c&#243;mo lo evalu&#233; y, sobre todo, el proceso que utilizo para aprender cualquier tecnolog&#237;a nueva de IA en menos de una semana.</p></div><p></p><p>Si eres de los que siente que se pierde todos los trenes tecnol&#243;gicos, tranquil@, no est&#225;s sol@.</p><p>Lecturas relacionadas:</p><p><a href="https://youtube.com/playlist?list=PLwV2lf38OMMtdSki3bcJBiyGSilOGmgwl&amp;si=L_lQ127BYfMEPiMP">Curso gratuito sobre desarrollo de sistemas ag&#233;nticos</a></p><p><span>&#8226; Observabilidad para LLMs con Langfuse</span><br><br><a href="https://langfuse.com/docs">Langfuse Documentation</a></p><p><span>&#8226; Evaluaci&#243;n de aplicaciones RAG</span><br><br><a href="https://docs.ragas.io/">Ragas Framework</a></p><p><span>&#8226; Versionado de prompts y tracing</span><br><br><a href="https://smith.langchain.com/">LangSmith</a></p><p><span>&#8226; OpenTelemetry para sistemas de IA</span><br><br><a href="https://opentelemetry.io/">OpenTelemetry</a></p><p>Nos vemos en el pr&#243;ximo episodio.</p><p>Si te gusta lo que hago y quieres colaborar para que pueda seguir siendo gratis para el resto del p&#250;blico, te recomiendo echarle un vistazo al sistema de mecenas:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://iamdgarcia.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Learning Curve is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>