044_reason_and_act_react_coding - IUGO-Studio/tech-ia GitHub Wiki

Resumen general:

El video explica el patrón ReAct (Reason and Act), considerado el primer framework para agentes de IA. ReAct combina el razonamiento ("Reason") y la acción ("Act") permitiendo que un modelo de lenguaje (LLM) razone sobre una tarea y decida qué acciones tomar, utilizando herramientas externas. Se presenta una implementación basada en un artículo de Simon Willison, adaptada a las bibliotecas más recientes de OpenAI. El ejemplo demuestra cómo un LLM puede usar herramientas como Wikipedia y una calculadora para responder preguntas, siguiendo un ciclo de Pensamiento (Thought), Acción (Action), Pausa (PAUSE), Observación (Observation).

Conceptos clave:

  • ReAct (Reason and Act): Un patrón para agentes de IA que combina el razonamiento y la acción.
  • Agente de IA (AI Agent): Un sistema que puede percibir su entorno, razonar, tomar decisiones y actuar para lograr objetivos.
  • Framework: Un conjunto de conceptos, herramientas y prácticas que sirven como base para construir algo (en este caso, un agente de IA).
  • Thought (Pensamiento): El LLM razona sobre la tarea o pregunta.
  • Action (Acción): El LLM decide qué herramienta utilizar.
  • PAUSE: El sistema espera a que se complete la acción y se obtenga una observación.
  • Observation (Observación): El resultado de la acción realizada.
  • Herramientas (Tools): Funciones o APIs externas que el LLM puede utilizar (ej: búsqueda en Wikipedia, calculadora).
  • Few-Shot Prompting: Proporcionar ejemplos al LLM para guiar su comportamiento.
  • Expresiones regulares (Regex): Se utilizan para extraer la acción decidida por el LLM del texto generado.
  • GPT-4o: El modelo de lenguaje de OpenAI utilizado en el ejemplo.
  • Prompt Engineering: El arte de crear prompts.
  • LLM: Modelo de lenguaje extenso.

Ejemplos prácticos:

  • Pregunta sobre la capital de Inglaterra:

    • Thought: El LLM decide buscar información sobre Inglaterra en Wikipedia.
    • Action: search Wikipedia: England
    • Observation: Se obtiene información de Wikipedia sobre Inglaterra.
    • Answer: El LLM proporciona la respuesta (la capital de Inglaterra).
  • Pregunta sobre una operación matemática (2 + 2):

    • Thought: El LLM decide usar la calculadora.
    • Action: calculate: 2 + 2
    • Observation: Se obtiene el resultado (4).
    • Answer: El LLM proporciona la respuesta.
  • Pregunta combinada (población de París * 2 + población de Londres):

    • El LLM realiza múltiples acciones (búsqueda en Wikipedia para París y Londres, luego cálculo).
    • Se muestra un ejemplo donde el LLM comete un error (debido a un formato incorrecto en el cálculo), y luego se muestra cómo se corrige en una segunda ejecución.

Consejos y buenas prácticas:

  • Define claramente las herramientas disponibles: El prompt debe especificar qué herramientas puede utilizar el LLM y cómo utilizarlas.
  • Utiliza Few-Shot Prompting para guiar el comportamiento: Proporciona ejemplos de cómo el LLM debe razonar y actuar.
  • Implementa funciones para cada herramienta: Crea funciones en Python (u otro lenguaje) que realicen las acciones correspondientes a cada herramienta.
  • Maneja los errores: Los LLMs pueden cometer errores, especialmente al realizar cálculos o interactuar con herramientas externas. Implementa lógica para detectar y manejar errores.
  • Observabilidad: Es importante poder monitorizar el comportamiento del agente, identificar cuándo se atasca o comete errores, y utilizar esa información para mejorar el prompt o las herramientas.
  • Estructura general del prompt:
Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [list_of_tools]
PAUSE
Observation: the result of the action
... (this Thought/Action/PAUSE/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Dudas o preguntas:

  • ¿Cómo se puede adaptar el patrón ReAct para utilizar otras herramientas, además de Wikipedia y una calculadora? Investigación: Se pueden definir nuevas acciones y funciones correspondientes a cualquier herramienta que se desee utilizar (ej: acceso a una base de datos, API de correo electrónico, etc.).

  • ¿Cómo se puede mejorar la robustez del agente ReAct para que sea menos propenso a errores? Investigación: Se pueden utilizar técnicas como el "Self-Consistency Sampling", mejorar el prompt con más ejemplos y descripciones más claras, o implementar mecanismos de retroalimentación y corrección de errores.

  • ¿Cómo se compara ReAct con otros frameworks o patrones para agentes de IA? Investigación: Existen otros frameworks como LangChain, AutoGPT, o BabyAGI, que ofrecen diferentes niveles de abstracción y funcionalidad. ReAct es un patrón relativamente simple y fundamental, que sirve como base para muchos de estos frameworks más avanzados.

  • En el ejemplo se ve un error, pero ¿existen mecanismos para recuperarse de ellos? Investigación: Sí, hay varias estrategias:

    • Reintentos: Si una acción falla (por ejemplo, un error de red), se puede reintentar automáticamente.
    • Corrección por el LLM: Se puede incluir en el prompt instrucciones para que el LLM detecte y corrija sus propios errores. Por ejemplo: "Si encuentras un error, explica por qué ocurrió y corrígelo".
    • Retroalimentación humana: En algunos casos, se puede incorporar un humano en el ciclo para corregir errores o proporcionar retroalimentación.
    • Mejorar el prompt: Un análisis cuidadoso de los errores puede revelar problemas en el prompt (ambigüedades, falta de ejemplos, etc.) que se pueden corregir.
    • Ajuste fino (fine-tuning): En casos más avanzados, se puede entrenar al LLM con datos específicos que incluyan ejemplos de errores y sus correcciones.
  • ¿Cuál es el significado de cajoling? Investigación: En el contexto del video, cajoling (que se traduce como "persuasión" o "engatusamiento") se refiere al esfuerzo y la experimentación necesarios para lograr que el LLM funcione correctamente con el patrón ReAct, antes de que existieran herramientas más sofisticadas como el function calling o el tool calling. Implica un proceso de prueba y error, ajustando el prompt y los ejemplos hasta lograr el comportamiento deseado.

⚠️ **GitHub.com Fallback** ⚠️