La siguiente es la parte 2 de 3 de la publicación original de Addy Osmani «Ingeniería del contexto: traer disciplina de ingeniería a las piezas». La Parte 1 se puede encontrar aquí. Gran Ingeniería del contexto logra un equilibrio, incluido todo lo que el modelo realmente necesita, pero evite los detalles irrelevantes o excesivos que podrían distraerlo (y aumentar el costo). Como Andrej Karpathy descrita, la ingeniería del contexto es una delicada combinación de ciencia y arte. La parte de «ciencia» implica seguir ciertos principios y técnicas para mejorar sistemáticamente el rendimiento. Por ejemplo, si está haciendo la generación de código, es casi científico que deba incluir mensajes de error y código relevantes; Si está haciendo preguntas sobre preguntas, es lógico recuperar documentos de apoyo y proporcionarlos al modelo. Existen métodos establecidos como la provisión de pocos disparos, la generación de recuperación acuática (RAG) y la impulso de la cadena de pensamiento que sabemos (de investigación y prueba) puede aumentar los resultados. También hay una ciencia respetar las limitaciones del modelo: cada modelo tiene un límite de longitud de contexto, y sobrecargar esa ventana no solo puede aumentar la latencia/costo, sino que potencialmente degradar la calidad si las piezas importantes se pierden en el ruido. Karpathy resumió bien: «Demasiado poco o de la forma incorrecta y el LLM no tiene el contexto correcto para el rendimiento óptimo. Demasiado irreelevante y el costo de LLM y el rendimiento podrían tener el rendimiento y el rendimiento y el rendimiento podría ser el rendimiento y el rendimiento. en técnicas para seleccionar, podar y formatear el contexto de manera óptima. Por ejemplo, el uso de incrustaciones para encontrar los documentos más relevantes para incluir (por lo que no está insertando texto no relacionado) o comprimiendo historias largas en resúmenes. Los investigadores incluso han catalogado los modos de falla de contextos largos, como intoxicación del contexto (donde una alucinación anterior en el contexto conduce a más errores) o distracción del contexto (donde demasiado detalles extraños hace que el modelo pierda el enfoque). Conociendo estas trampas, un buen ingeniero curará el contexto con cuidado. Luego está el lado del «arte»: la intuición y la creatividad nacidas de la experiencia. Esto se trata de comprender las peculiaridades y los comportamientos sutiles de LLMS. Piense en ello como un programador experimentado que «solo sabe» cómo estructurar el código para la legibilidad: un ingeniero de contexto experimentado desarrolla una sensación de cómo estructurar un aviso para un modelo determinado. Por ejemplo, puede sentir que un modelo tiende a hacerlo mejor si primero describe un enfoque de solución antes de sumergirse en detalles, por lo que incluye un paso inicial como «Pensemos paso a paso …» en el aviso. O nota que el modelo a menudo malinterpreta un término particular en su dominio, por lo que lo aclara preventivamente en el contexto. Estos no están en un manual: los aprendes observando salidas de modelo e iterando. Aquí es donde la artesanía rápida (en el antiguo sentido) todavía importa, pero ahora está al servicio del contexto más amplio. Es similar a los patrones de diseño de software: existe la ciencia en la comprensión de las soluciones comunes, pero el arte para saber cuándo y cómo aplicarlos. Explore algunas estrategias y patrones comunes que los ingenieros de contexto usan para crear contextos efectivos: recuperación del conocimiento relevante: una de las técnicas más poderosas es la generación de recuperación de la recuperación. Si el modelo necesita hechos o datos específicos del dominio que no se garanticen que estén en su memoria de entrenamiento, haga que su sistema obtenga esa información e incluya. Por ejemplo, si está construyendo un asistente de documentación, puede buscar su documentación e insertar los pasajes coincidentes superiores en el mensaje antes de hacer la pregunta. De esta manera, la respuesta del modelo se basará en datos reales que proporcionó en lugar de en su conocimiento interno a veces anticuado. Las habilidades clave aquí incluyen diseñar buenas consultas de búsqueda o espacios de incrustación para obtener el fragmento correcto y formatear el texto insertado claramente (con citas o citas) para que el modelo sepa que lo usa. Cuando las LLM «alucinan» los hechos, a menudo se debe a que no puimos proporcionar el hecho real: el retrieval es el antídoto para eso. Ejemplos de seguimiento e instrucciones de roles: esto se remonta a la ingeniería rápida clásica. Si desea que el modelo emita algo en un estilo o formato particular, muéstrelo ejemplos. Por ejemplo, para obtener una salida JSON estructurada, puede incluir un par de entradas y salidas de ejemplo en JSON en el mensaje, luego solicite una nueva. El contexto de pocos disparos enseña efectivamente el modelo con el ejemplo. Del mismo modo, establecer un rol o personalidad del sistema puede guiar el tono y el comportamiento («usted es un desarrollador experto de Python que ayuda a un usuario …»). Estas técnicas son alimentos básicos porque funcionan: sesgan el modelo hacia los patrones que desea. En la mentalidad de ingeniería de contexto, la redacción rápida y los ejemplos son solo una parte del contexto, pero siguen siendo cruciales. De hecho, se podría decir que la ingeniería rápida (instrucciones y ejemplos de elaboración de elaboración) ahora es un subconjunto de ingeniería de contexto: es una herramienta en el juego de herramientas. Todavía nos importa mucho el fraseo y los ejemplos demostrativos, pero también estamos haciendo todas estas otras cosas a su alrededor. Maniente de estado y memoria: muchas aplicaciones implican múltiples giros de interacción o sesiones de larga duración. La ventana de contexto no es infinita, por lo que una parte importante de la ingeniería del contexto es decidir cómo manejar el historial de conversación o los resultados intermedios. Una técnica común es la compresión resumida: después de cada pocas interacciones, resumirlas y usar el resumen en el futuro en lugar del texto completo. Por ejemplo, el Asistente de Claude de Anthrope hace esto automáticamente cuando las conversaciones se vuelven largas, para evitar el desbordamiento del contexto. (Verás que produce un «[Summary of previous discussion]” that condenses earlier turns.) Another tactic is to explicitly write important facts to an external store (a file, database, etc.) and then later retrieve them when needed rather than carrying them in every prompt. This is like an external memory. Some advanced agent frameworks even let the LLM generate “notes to self” that get stored and can be recalled in future steps. The art here is figuring out what to keep, when to summarize, and how to resurface Información pasada en el momento adecuado. De vuelta. Por ejemplo, un agente podría tener una regla: «Si el usuario hace una pregunta matemática, llame a la herramienta de calculadora». Después de usarlo, el resultado (digamos 42) se inserta en el indicador: «Salida de la herramienta: 42». Esto requiere formatear la salida de la herramienta con claridad y tal vez agregar una instrucción de seguimiento como «Dado este resultado, ahora responda la pregunta del usuario». Un montón de trabajo en los marcos de agentes (Langchain, etc.) es esencialmente la ingeniería del contexto en torno al uso de la herramienta: dar la vuelta al modelo de una lista de herramientas disponibles, junto con las pautas sintácticas para invocarlas, y plantarse cómo incorporar los resultados es que usted, el ingeniero, orquestan entre el modelo y el modelo externo. Se ajusta o es útil para incluirlo por completo. [massive JSON]… ahora responde la pregunta «. Puede extraer los pocos campos necesarios y presentar «Nombre del usuario: X, cuenta creada: Y, último inicio de sesión: Z.». Esto es más fácil para el modelo y también usa menos tokens. Habilitarlo. Por ejemplo, un programador de pares de IA puede implementar un flujo de trabajo como: Busque en el código de código de código. De manera controlada. La información. El patrón es frustrantemente común: comienza una sesión con un contexto bien elaborado y las instrucciones claras. Almacenamiento: son la memoria de trabajo del modelo. Flujos de trabajo: en general el tipo de tareas complejas donde brilla la ingeniería de contexto. suba una nueva instancia con un contexto fresco y se alimenta en el resumen de la instancia anterior «. Este enfoque preserva el estado esencial al tiempo que descarta el ruido. Esto ayuda al modelo a comprender qué priorizar. Refinamiento de contexto progresivo: después de un progreso significativo, reconstruye conscientemente el contexto desde cero. Sesiones. Ventana de contestación: para tareas muy largas, divídalos en fases con límites naturales donde puede restablecer el contexto. Más allá de Chat UX a las interacciones sofisticadas de los agentes.