Instrucciones del sistema

En este documento, se describen las instrucciones del sistema y las prácticas recomendadas para escribir instrucciones del sistema eficaces. Si deseas obtener información para agregar instrucciones del sistema a tus instrucciones, consulta Usa instrucciones del sistema.

Las instrucciones del sistema son un conjunto de instrucciones que el modelo procesa antes de procesar las instrucciones. Te recomendamos que uses instrucciones del sistema para indicarle al modelo cómo quieres que se comporte y responda a las instrucciones. Por ejemplo, puedes incluir elementos como un arquetipo para adoptar, información contextual y instrucciones de formato.

Las instrucciones del sistema son especialmente útiles en los casos en que deseas proporcionar al modelo información que un usuario final no puede ver ni cambiar, lo que puede ayudarte a proporcionarle contexto adicional para comprender la tarea, proporcionar respuestas más personalizadas y cumplir con lineamientos específicos sobre la interacción completa del usuario con el modelo. Además, las instrucciones del sistema son beneficiosas cuando deseas ejecutar varias instrucciones con el mismo conjunto de instrucciones.

Cuando se establecen instrucciones del sistema, se aplican a toda la solicitud. Las instrucciones del sistema funcionan en varios turnos de usuario y modelo cuando se incluyen en la instrucción. Aunque las instrucciones del sistema son independientes del contenido del mensaje, siguen siendo parte de los mensajes generales y, por lo tanto, están sujetas a las políticas de uso de datos estándar.

Modelos compatibles

Los siguientes modelos admiten instrucciones del sistema:

  • Todas las versiones del modelo Gemini 1.5 Pro
  • Todas las versiones del modelo Gemini 1.5 Flash
  • Gemini 1.0 Pro versión gemini-1.0-pro-002

Casos de uso

Por lo general, recomendamos usar instrucciones del sistema para realizar una o más de las siguientes acciones:

  • Define un arquetipo o un rol
  • Define el formato de salida
  • Define el estilo y el tono de la salida
  • Define los objetivos o las reglas de la tarea
  • Proporciona contexto adicional para la instrucción

Arquetipo o rol

Puedes influir en la forma en que un modelo responde a las instrucciones definiendo un arquetipo o un rol en las instrucciones del sistema.

Por ejemplo, supongamos que quieres usar un modelo para enseñar a los estudiantes a escribir ensayos. Compara la diferencia en las respuestas del modelo cuando definas los siguientes roles:

  • Eres un bot que tiene la tarea de enseñar a los estudiantes universitarios a escribir un ensayo sobre un tema determinado.
  • Eres un bot que tiene la tarea de ayudar a los estudiantes de primaria a escribir un ensayo sobre un tema determinado.
Instrucciones del sistema Bot para estudiantes universitarios Bot para estudiantes de primaria
Eres un bot que tiene la tarea de enseñar a los estudiantes universitarios a escribir un artículo sobre un tema determinado. Eres un bot que tiene la tarea de ayudar a los estudiantes de primaria a escribir un ensayo sobre un tema determinado.
Instrucción Asunto: Fotosíntesis Asunto: Fotosíntesis
Respuesta

Cómo escribir un artículo sobre la fotosíntesis: Una guía para estudiantes universitarios

La fotosíntesis es un proceso fascinante y complejo que forma la base de la vida en la Tierra. Escribir un artículo sobre este tema puede ser una experiencia gratificante, ya que te permite profundizar en sus complejidades y comprender su importancia. A continuación, se muestra un desglose de cómo abordar esta tarea:

  1. Cómo elegir un enfoque:
    • Descripción general amplia: Puedes proporcionar una descripción general exhaustiva de la fotosíntesis, que incluya sus etapas, requisitos, subproductos y su rol en el ecosistema.
    • Aspecto específico: Elige un aspecto específico de la fotosíntesis para explorarlo en detalle, como los siguientes:
      • El papel de la luz en la fotosíntesis.
      • Los diferentes tipos de fotosíntesis (C3, C4 y CAM).
      • El impacto de los factores ambientales en la fotosíntesis.
      • La evolución de la fotosíntesis.
      • Las aplicaciones de la fotosíntesis en la biotecnología.
    • Estudio comparativo: Compara y contrasta los diferentes aspectos de la fotosíntesis en diferentes organismos (plantas, algas y bacterias).
  2. Investigación y recopilación de información:
    • Fuentes confiables: Usa revistas académicas, fuentes en línea y libros de texto de confianza. Evita depender únicamente de Wikipedia o de sitios web generales.
    • Búsqueda de palabras clave: Usa palabras clave como "fotosíntesis", "cloroplastos", "clorofila", "reacciones dependientes de la luz", "ciclo de Calvin", etcétera.
    • Toma notas: Organiza tu investigación tomando notas detalladas y resumiendo los puntos clave. Asegúrate de citar las fuentes de forma correcta.
  3. Estructura y esquema del documento:
    • Introducción:
      • Presenta brevemente la fotosíntesis y su importancia.
      • Expresa tu planteamiento de tesis y describe con claridad el argumento principal de tu trabajo.
    • Párrafos del cuerpo:
      • Desarrolla tus puntos en una secuencia lógica con evidencia de tu investigación.
      • Usa encabezados y subtítulos para organizar el documento y facilitar su lectura.
      • Cada párrafo debe enfocarse en una sola idea y proporcionar pruebas que la respalden.
    • Conclusión:
      • Resume tus puntos principales y vuelve a plantear tu tesis.
      • Analiza las implicaciones de tus hallazgos y sugiere líneas de investigación futuras.
  4. Escritura y edición:
    • Lenguaje claro y conciso: Usa un lenguaje claro y conciso, y evita la jerga, a menos que sea necesario.
    • Argumentos basados en evidencia: Apoya tus afirmaciones con evidencia de tu investigación.
    • Citas correctas: Usa un estilo de citas coherente (MLA, APA o Chicago) en todo el documento.
    • Revisión y edición: Revisa y edita con cuidado tu trabajo en busca de errores gramaticales, ortográficos y de puntuación.
  5. Sugerencias adicionales:
    • Ayudas visuales: Usa diagramas, gráficos o tablas para ilustrar conceptos complejos.
    • Casos de éxito: Si corresponde, incluye casos de éxito relevantes para demostrar las aplicaciones reales de la fotosíntesis.
    • Conexión personal: Encuentra una forma de conectar el tema con tus propios intereses o experiencias.

Títulos de artículos de ejemplo:

  • El papel de la intensidad de la luz en la fotosíntesis: un estudio comparativo
  • La evolución de la fotosíntesis: de los primeros organismos vivos a las plantas modernas
  • Aprovechar la fotosíntesis: el potencial de la biotecnología
  • El impacto del cambio climático en la fotosíntesis: una perspectiva global

Recuerda: Un artículo bien escrito sobre la fotosíntesis debe ser claro, informativo y atractivo. Si sigues estos pasos y utilizas una base sólida de investigación, puedes producir un artículo exitoso que demuestre tu comprensión de este proceso biológico esencial.

Es un tema interesante. La fotosíntesis es muy importante para la vida en la Tierra. Sigue estos pasos para escribir un artículo sobre el tema:

  1. Piensa en lo que ya sabes:
    • ¿Qué es la fotosíntesis?
    • ¿Qué necesita una planta para realizar la fotosíntesis?
    • ¿Qué produce una planta durante la fotosíntesis?
    • ¿Conoces algún dato interesante sobre la fotosíntesis?
  2. Investiga y obtén más información:
    • Libros: Consulta tu biblioteca para encontrar libros sobre plantas, la naturaleza o la ciencia.
    • Sitios web: Busca sitios web para niños que expliquen la fotosíntesis de una manera simple. Asegúrate de que los sitios web sean confiables (como los de National Geographic o la NASA).
    • Pídele ayuda a un adulto: Pídele a tu profesor, madre, padre o bibliotecario que te ayude a encontrar información.
  3. Organiza tus pensamientos:
    • Título: Piensa en un título atractivo para tu trabajo, como “El asombroso proceso de la fotosíntesis” o “Cómo las plantas producen su propio alimento”.
    • Introducción: Comienza con una oración que capte la atención del lector. Explica qué es la fotosíntesis en términos sencillos.
    • Cuerpo principal: Divide el texto en párrafos. Cada párrafo debe enfocarse en una idea clave sobre la fotosíntesis:
      • Qué necesitan las plantas: luz solar, agua y dióxido de carbono.
      • Qué producen las plantas: Azúcar (para alimentos) y oxígeno.
      • Por qué es importante la fotosíntesis: nos proporciona alimentos a nosotros y a los animales, y limpia el aire.
    • Conclusión: Resume lo que aprendiste sobre la fotosíntesis. También puedes compartir tu dato favorito o una pregunta que aún tengas.
  4. Escribe tu trabajo:
    • Usa un lenguaje claro y sencillo.
    • No tengas miedo de usar imágenes o dibujos para explicar las cosas.
    • Revisa tu trabajo para ver si hay errores ortográficos y gramaticales.
  5. Dale tu toque personal.
    • Agrega un toque personal a tu trabajo.
    • Comparte una experiencia o observación que hayas tenido sobre las plantas.
    • Dibuja un diagrama para mostrar cómo funciona la fotosíntesis.

Recuerda: Tú eres el experto en tu trabajo. Diviértete aprendiendo y escribiendo sobre la fotosíntesis.

Formato de salida

Puedes influir en la forma en que un modelo le asigna un formato a su respuesta si defines un formato de salida, como Markdown o JSON, en las instrucciones del sistema.

Por ejemplo, supongamos que deseas usar un modelo para resumir las opiniones de los clientes sobre tu empresa. Compara la diferencia en las respuestas del modelo cuando defines los siguientes formatos de salida:

  • Muestra tu respuesta en JSON. Al final, fuera del objeto JSON, escribe de 3 a 5 oraciones de consejos para la empresa sobre cómo mejorar.
  • No hay requisitos de formato.
Instrucciones del sistema JSON Sin requisitos de formato

Eres un profesional de relaciones públicas para empresas de alta gama. Sigue estas instrucciones y basa tu respuesta en la entrada del usuario proporcionada.

Instrucciones:

  • Lee las opiniones que se te enviaron.
  • Resume los pros y los contras de la empresa en función de las opiniones.
  • Muestra tu respuesta en JSON.
  • Al final, fuera del objeto JSON, escribe de 3 a 5 oraciones de consejos para la empresa sobre cómo mejorar.
  • Sea conciso.
  • Apégate a los hechos.
  • No alucines.
  • Si hay opiniones contradictorias, incluye solo la que se registró más.
  • No incluyas información irrelevante.
  • No menciones a ningún revisor por su nombre.

Eres un profesional de relaciones públicas para empresas de alta gama. Sigue estas instrucciones y basa tu respuesta en la entrada del usuario proporcionada.

Instrucciones:

  • Lee las opiniones que se te enviaron.
  • Resume los pros y los contras de la empresa en función de las opiniones.
  • Sea conciso.
  • Apégate a los hechos.
  • No alucines.
  • Si hay opiniones contradictorias, incluye solo la que se registró más.
  • No incluyas información irrelevante.
  • No menciones a ningún revisor por su nombre.
Instrucción

Chad Brocker: 4 estrellas

El spa era maravilloso. La atmósfera te relaja apenas entras. Es como si estuvieras en trance. No tienes que preocuparte por NADA. Los trabajadores tienen tu agenda y te guían durante la experiencia. Todo lo que me ofrecieron fue increíble. El masaje, el tratamiento facial, el baño de lodo. Además, tienen una política de 0 teléfonos celulares, por lo que realmente te sientes en un mundo completamente diferente. Sin embargo, es un poco caro.

Ver la instrucción completa

Lisa Simmens: 5 estrellas

La pasamos muy bien. Mi mejor amiga y yo nos regalamos un día de spa para nuestros cumpleaños. Cuando te digo que nuestras vidas cambiaron, es verdad. Los empleados hacen todo lo posible para garantizar que tengas la mejor experiencia posible. Desde hacerte preguntas hasta brindarte servicios de alta calidad y asegurarse de que llegues a cada una de tus citas a tiempo, fueron lo mejor. ¡Volveremos pronto! P.D.: ¡Obtén el tratamiento de exfoliación corporal completo!

Allie Wood: 2 estrellas

Si bien el personal fue excelente en su servicio de atención al cliente, el masaje DOLIÓ y la cara ME ARDIÓ en el tratamiento facial. Además, no te permitieron tener tu teléfono celular, lo que genera más estrés. El ambiente era tranquilo y relajante, pero no tener mi teléfono celular me impedía relajarme. Además, era caro.

Suzy Michaels: 3 estrellas

El entorno de este espacio no es de este mundo. Es realmente como entrar al cielo. Los servicios fueron los mejores que he tenido. PERO no ofrecieron ningún tipo de refrigerio. Vamos, al menos deberían ofrecer agua.

Martin Wong: 4 estrellas

Una experiencia increíble. Mi única queja es no poder consultar mi teléfono.

Debbie Ruiz: 5 estrellas

Un entorno increíble. Trabajadores increíbles. Servicios increíbles. Además, es un entorno libre de teléfonos celulares, lo que fue muy liberador y contribuyó a la atmósfera pacífica. Definitivamente se lo recomiendo a todo el mundo.

Lucy Mantel: 1 estrella

No hay refrigerios. No se permiten teléfonos celulares. Masaje malo. No es una experiencia muy buena. No la recomiendo.

Respuesta
    {
      ""pros"": [
        ""relaxing atmosphere"",
        ""attentive and efficient staff"",
        ""high-quality services""
      ],
      ""cons"": [
        ""pricey"",
        ""no cell phone policy"",
        ""no refreshments""
      ]
    }
    

Si bien el spa recibió elogios por su ambiente tranquilo, su personal excepcional y sus servicios de primer nivel, hay algunas áreas que se pueden mejorar. Abordar las inquietudes de los clientes sobre la estricta política de no usar teléfonos celulares y la falta de refrigerios podría mejorar significativamente la experiencia general. Considera ofrecer un área designada para que los huéspedes accedan a sus teléfonos si es necesario y proporcionar agua de cortesía o una selección limitada de bebidas.

Ventajas: El spa ofrece un ambiente tranquilo y relajante con servicios de alta calidad. Los clientes alaban el servicio al cliente excepcional que brinda el personal.

Desventajas: La política de no usar teléfonos celulares del spa es un punto de debate, ya que algunos huéspedes consideran que ayuda a relajarse y otros que es estresante. Varios revisores consideraron que los precios eran altos.

Estilo y tono

Puedes influir en la respuesta de un modelo definiendo su estilo y tono de salida, como la verbosidad, la formalidad y el nivel de lectura objetivo, en las instrucciones del sistema.

Por ejemplo, supongamos que quieres usar un modelo para escribir propuestas para iniciativas gubernamentales. Compara la diferencia en las respuestas del modelo cuando defines los siguientes tonos:

  • Profesional
  • Informal
Instrucciones del sistema Profesional Informal

Eres redactor de propuestas gubernamentales. Tu tarea es elaborar propuestas para futuras campañas. En función de la plantilla y la entrada del usuario, proporciona una propuesta para la próxima campaña.

  • No uses Internet.
  • Las respuestas de cada sección no deben tener más de dos oraciones.
  • Escribe en un tono profesional.
  • Proporciona respuestas en formato Markdown.

Plantilla de propuesta:

  • La idea principal:
  • El desafío
  • La solución
  • Público objetivo
  • Mensaje clave
  • Canales
  • Contenido destacado
  • Resultados esperados
  • Por qué elegirnos
  • Llamado a la acción

Eres redactor de propuestas gubernamentales. Tu tarea es elaborar propuestas para futuras campañas. En función de la plantilla y la entrada del usuario, proporciona una propuesta para la próxima campaña.

  • No uses Internet.
  • Las respuestas de cada sección no deben tener más de dos oraciones.
  • Escribe en un tono informal.
  • Proporciona respuestas en formato Markdown.

Plantilla de propuesta:

  • La idea principal:
  • El desafío
  • La solución
  • Público objetivo
  • Mensaje clave
  • Canales
  • Contenido destacado
  • Resultados esperados
  • Por qué elegirnos
  • Llamado a la acción
Instrucción

El objetivo de esta campaña es generar conciencia e inspirar cambios de comportamiento prácticos hacia la sostenibilidad a través del uso de experiencias digitales interactivas. A través de la publicación de contenido educativo y la organización de eventos impulsados por la comunidad en Facebook y X, atraeré a personas conscientes del medio ambiente de entre 20 y 45 años, incluidos estudiantes, profesionales y familias. Mi objetivo es fomentar el conocimiento público y promover mejoras mensurables en los comportamientos ecológicos. Con mi experiencia en el marketing digital y un gran enfoque en la sostenibilidad, diseñaré una campaña de alto impacto que empodere a las personas para que realicen cambios significativos y sostenibles en su vida diaria. Quiero que esta campaña cree contenido variado, atractivo y, a la vez, informativo.

Respuesta

La gran idea: Fortalecer a las personas de 20 a 45 años para que adopten un estilo de vida sostenible a través de experiencias digitales interactivas y participación comunitaria.

El desafío: Muchas personas no conocen las acciones prácticas y cotidianas que pueden realizar para promover la sustentabilidad ambiental.

La solución: Una campaña multiplataforma que utiliza Facebook y X para publicar contenido educativo y atractivo, y fomentar la participación de la comunidad a través de experiencias y eventos interactivos.

Público objetivo: Personas conscientes del medio ambiente de entre 20 y 45 años, incluidos estudiantes, profesionales y familias.

Mensaje clave: Los pequeños cambios en los hábitos diarios pueden tener un impacto positivo significativo en el medio ambiente.

Canales: Facebook y X.

Contenido destacado: Cuestionarios interactivos, videos educativos, sesiones de preguntas y respuestas con expertos y desafíos comunitarios que promueven prácticas sostenibles

Resultados esperados: Mayor conocimiento de las prácticas de vida sustentable y mejoras medibles en los comportamientos ecológicos dentro del público objetivo.

Por qué nosotros: Experiencia comprobada en marketing digital y pasión por promover la sustentabilidad, lo que garantiza una campaña atractiva y de alto impacto.

Llamado a la acción: Únete a la campaña en Facebook y X para aprender, participar y marcar la diferencia para un futuro sostenible.

La gran idea: Lanzaremos un movimiento digital para que la sustentabilidad sea genial. Con desafíos interactivos y contenido atractivo, inspiraremos acciones reales y transformaremos la vida ecológica de una tarea en un viaje compartido.

El desafío: seamos sinceros, saber sobre la sustentabilidad y actuar en consecuencia son dos cosas diferentes. Nos enfrentamos a la apatía y a la falta de conciencia sobre los cambios simples y cotidianos.

La solución: Nos encontraremos con nuestro público donde esté, en plataformas como Facebook y X, para ofrecer una combinación dinámica de contenido educativo, desafíos divertidos y eventos impulsados por la comunidad. Piensa en cuestionarios interactivos, infografías que se pueden compartir y reuniones locales.

Público objetivo: Nos enfocamos en personas conscientes del medio ambiente de entre 20 y 45 años (estudiantes, profesionales y familias) que desean marcar la diferencia.

Mensaje clave: Pequeños pasos, gran impacto Tienes el poder de crear un futuro más sustentable con decisiones simples y cotidianas.

Canales: Aprovecharemos el poder del marketing en redes sociales a través de campañas atractivas en Facebook y X.

Contenido destacado: Espera una combinación de contenido informativo y que se pueda compartir, como infografías atractivas, videos que invitan a la reflexión, sugerencias rápidas y historias de éxito inspiradoras.

Resultados esperados: Mediremos el éxito a través de un mayor nivel de participación (me gusta, veces que se compartió, comentarios) y tráfico del sitio web, y, en última instancia, apuntaremos a un aumento medible en los comportamientos ecológicos dentro de nuestro público objetivo.

Por qué nosotros: Nuestro equipo combina la experiencia en marketing digital con una verdadera pasión por la sostenibilidad, lo que genera una campaña que es impactante y atractiva.

Llamado a la acción: Únete al movimiento Sigue nuestra página, participa en nuestros desafíos y comparte tu recorrido hacia una vida sustentable con tu red.

Objetivos y reglas

Puedes influir en la respuesta de un modelo definiendo objetivos o reglas, es decir, lo que el modelo debe o no hacer, en las instrucciones del sistema.

Por ejemplo, supongamos que quieres usar un modelo para escribir código de Python. Compara la diferencia en las respuestas del modelo cuando defines las siguientes reglas:

  • Cuando generes código, asegúrate de incluir docstrings que expliquen las entradas, salidas y el uso de cada método.
  • Genera solo código, no incluyas ninguna cadena de documentos.
Instrucciones del sistema Cadenas de documentos Sin docstrings
Cuando generes código, asegúrate de incluir docstrings que expliquen las entradas, salidas y el uso de cada método. Genera solo código, no incluyas ninguna cadena de documentos.
Instrucción Crea un array 2D en Python y un algoritmo de búsqueda de ruta A* para identificar la ruta más corta entre dos puntos de la cuadrícula.
Respuesta
    import heapq

    class Node:
        """"""
        Represents a node in the grid for A* pathfinding.

        Attributes:
            x (int): The x-coordinate of the node.
            y (int): The y-coordinate of the node.
            parent (Node, optional): The parent node in the path. Defaults to None.
            g (int): Cost from the start node to this node. Defaults to 0.
            h (int): Estimated cost from this node to the end node. Defaults to 0.
        """"""

        def __init__(self, x, y, parent=None):
            self.x = x
            self.y = y
            self.parent = parent
            self.g = 0
            self.h = 0

        def __lt__(self, other):
            """"""Compares nodes based on their f-score (g + h).""""""
            return (self.g + self.h) < (other.g + other.h)

    def a_star(grid, start, end):
        """"""
        Implements the A* pathfinding algorithm.

        Args:
            grid (list): A 2D array representing the grid, where 0 is walkable and 1 is an obstacle.
            start (tuple): The starting point coordinates (x, y).
            end (tuple): The end point coordinates (x, y).

        Returns:
            list: A list of coordinates representing the shortest path, or None if no path is found.
        """"""

        rows = len(grid)
        cols = len(grid[0])

        # Create start and end nodes
        start_node = Node(start[0], start[1])
        end_node = Node(end[0], end[1])

        # Initialize open and closed lists
        open_list = []
        closed_list = set()

        # Add the start node to the open list
        heapq.heappush(open_list, start_node)

        while open_list:
            # Get the node with the lowest f-score
            current_node = heapq.heappop(open_list)

            # Add the current node to the closed list
            closed_list.add((current_node.x, current_node.y))

            # Check if we've reached the goal
            if current_node.x == end_node.x and current_node.y == end_node.y:
                # Reconstruct and return the path
                path = []
                while current_node:
                    path.append((current_node.x, current_node.y))
                    current_node = current_node.parent
                return path[::-1]  # Return reversed path

            # Explore neighboring nodes
            for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]:  # Up, Down, Left, Right
                neighbor_x = current_node.x + dx
                neighbor_y = current_node.y + dy

                # Check if the neighbor is within the grid bounds
                if 0 <= neighbor_x < cols and 0 <= neighbor_y < rows:
                    # Check if the neighbor is walkable and not in the closed list
                    if grid[neighbor_y][neighbor_x] == 0 and (neighbor_x, neighbor_y) not in closed_list:
                        # Create a neighbor node
                        neighbor_node = Node(neighbor_x, neighbor_y, parent=current_node)

                        # Calculate the cost to reach the neighbor
                        neighbor_node.g = current_node.g + 1

                        # Calculate the heuristic (Manhattan distance)
                        neighbor_node.h = abs(neighbor_node.x - end_node.x) + abs(neighbor_node.y - end_node.y)

                        # Add the neighbor to the open list if it's a better path
                        if neighbor_node not in open_list:
                            heapq.heappush(open_list, neighbor_node)

        # No path found
        return None

    # Example usage:
    grid = [
        [0, 0, 0, 0, 0],
        [0, 1, 0, 1, 0],
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0]
    ]

    start = (0, 0)
    end = (4, 4)

    path = a_star(grid, start, end)

    if path:
        print(""Shortest path:"", path)
    else:
        print(""No path found."")
    

Explicación:

  1. Clase de nodo:
    • Representa una celda en la cuadrícula.
    • Almacena las coordenadas (x, y), el nodo superior, g (costo desde el inicio) y h (heurística hasta el final).
    • __lt__ permite comparar nodos para la cola de prioridad (con heapq) según f = g + h.
  2. Función a_star:
    • Toma los puntos grid, start y end como entrada.
    • Inicializa open_list (nodos para explorar) y closed_list (nodos explorados).
    • Usa heapq para recuperar de manera eficiente el nodo con la puntuación f más baja de open_list.
    • Realiza un bucle hasta que se encuentre end o open_list esté vacío (sin ruta).
    • Explora los vecinos, calcula los costos (g, h) y actualiza el open_list.
    • Reconstruye y muestra la ruta cuando se llega a end.
  3. Ejemplo de uso:
    • Crea un grid de muestra y define los puntos start y end.
    • Llama a a_star para encontrar la ruta.
    • Imprime la ruta más corta o indica si no existe una ruta.
    import heapq

    class Node:
        def __init__(self, position, parent=None):
            self.position = position
            self.parent = parent
            self.g = 0
            self.h = 0
            self.f = 0

        def __lt__(self, other):
            return self.f < other.f

    def astar(grid, start, end):
        rows = len(grid)
        cols = len(grid[0])

        open_list = []
        closed_list = set()

        start_node = Node(start)
        end_node = Node(end)

        open_list.append(start_node)

        while open_list:
            current_node = heapq.heappop(open_list)

            if current_node.position == end_node.position:
                path = []
                while current_node:
                    path.append(current_node.position)
                    current_node = current_node.parent
                return path[::-1]

            closed_list.add(current_node.position)

            for neighbor in get_neighbors(grid, current_node):
                if neighbor.position in closed_list:
                    continue

                if neighbor not in open_list:
                    neighbor.g = current_node.g + 1
                    neighbor.h = manhattan_distance(neighbor.position, end_node.position)
                    neighbor.f = neighbor.g + neighbor.h
                    neighbor.parent = current_node
                    heapq.heappush(open_list, neighbor)
                else:
                    if neighbor.g > current_node.g + 1:
                        neighbor.g = current_node.g + 1
                        neighbor.f = neighbor.g + neighbor.h
                        neighbor.parent = current_node
                        heapq.heapify(open_list)

        return None  # No path found

    def get_neighbors(grid, node):
        rows = len(grid)
        cols = len(grid[0])
        row, col = node.position
        neighbors = []
        if row > 0 and grid[row - 1][col] == 0:
            neighbors.append(Node((row - 1, col)))
        if row < rows - 1 and grid[row + 1][col] == 0:
            neighbors.append(Node((row + 1, col)))
        if col > 0 and grid[row][col - 1] == 0:
            neighbors.append(Node((row, col - 1)))
        if col < cols - 1 and grid[row][col + 1] == 0:
            neighbors.append(Node((row, col + 1)))
        return neighbors

    def manhattan_distance(a, b):
        return abs(a[0] - b[0]) + abs(a[1] - b[1])

    # Example usage
    grid = [
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [0, 0, 0, 0, 0],
    ]

    start = (0, 0)
    end = (4, 4)

    path = astar(grid, start, end)
    print(path)
    

Contexto

Puedes influir en la forma en que un modelo responde a las instrucciones agregando contexto adicional en las instrucciones del sistema.

Por ejemplo, supongamos que quieres usar un modelo para escribir discursos para eventos. Compara la diferencia en las respuestas del modelo cuando proporcionas el siguiente contexto:

  • Elementos que debes incluir en el discurso
  • Sin contexto adicional.
Instrucciones del sistema Elementos que debes incluir en el discurso Sin contexto adicional

Ayuda al usuario a escribir un discurso basado en la información proporcionada:

  • Evento
  • Tamaño del público
  • Información del orador (nombre, edad, etcétera)
  • Tono de voz
  • Duración de la voz
  • Varios

Si el usuario no proporciona toda esta información, responde con lo siguiente: “Lo siento, pero no tengo toda la información necesaria para crear un discurso. Proporciona el evento, el tamaño del público, la información del orador, el tono, la duración y cualquier otra información miscelánea".

Estos son algunos elementos generales que debes incluir:

  • Pausas para pausar
  • Un gancho intrigante
  • Un comentario final para que el discurso sea memorable
  • Un chiste

Ayuda al usuario a escribir un discurso basado en la información proporcionada:

  • Evento
  • Tamaño del público
  • Información del orador (nombre, edad, etcétera)
  • Tono de voz
  • Duración de la voz
  • Varios

Si el usuario no proporciona toda esta información, responde con lo siguiente: “Lo siento, pero no tengo toda la información necesaria para crear un discurso. Proporciona el evento, el tamaño del público, la información del orador, el tono, la duración y cualquier otra información miscelánea".

Instrucción

Evento: Graduación de la escuela secundaria

Tamaño del público: 1,000 personas

Información del orador: Michael Landish, 17 años

Tono: nostálgico, optimista

Duración de la voz: Entre 250 y 500 palabras

Misceláneo: Michael fue el presidente de la clase de último año, su maestra favorita fue la Sra. Martin, su profesora de inglés de segundo año, y asistirá a la Universidad Estatal de Los Caminos para estudiar economía y inglés. Nunca dio un discurso y está nervioso debido a su dislexia.

Respuesta

“Buenos días, profesores, familiares, amigos y, lo más importante, graduandos de la clase de 2023.

(Pausar)

Estar aquí, mirando a todos ustedes, es algo surrealista. Ayer, éramos estudiantes de primer año, con los ojos muy abiertos y un poco asustados. ¿Recuerdas los nervios del primer día? Lo sé. Casi me tropecé y caí con mi libro de historia, un desastre que se habría inmortalizado en los pasillos de la historia de [Nombre de la escuela secundaria].

(Pausa para risas)

Pero, en serio, míranos ahora. Crecimos, aprendimos mucho y no solo me refiero al teorema de Pitágoras. Aprendimos sobre la perseverancia, la amistad y el poder de una nota adhesiva bien colocada durante la semana de exámenes.

Estos últimos cuatro años han sido increíbles, y debo mucho de mi crecimiento a algunos profesores verdaderamente excepcionales. En especial, quiero agradecer a la Sra. Martin, mi profesora de inglés de tercer año, que me enseñó que las palabras tienen poder y que, incluso con dislexia, puedo encontrar mi voz. Gracias, Sra. Martin.

(Pausar)

Ahora, estamos al borde de algo nuevo y emocionante. A medida que nos dirigimos a diferentes universidades, ciudades y hasta países, llevemos con nosotros las lecciones que aprendimos en [Nombre de la escuela secundaria]. Recordemos las risas, las amistades y hasta las ocasiones en las que estudiábamos toda la noche antes de una prueba importante.

(Pausar)

Graduados, el mundo nos espera. Enfrentémoslo de frente, con coraje, optimismo y el apoyo inquebrantable de la increíble clase de 2023. Felicitaciones a todos y recuerden que lo mejor está por venir.

“Buenos días, profesores, familiares, amigos y, lo más importante, mis compañeros de graduación de la clase de [Año]”.

Es extraño estar aquí frente a ustedes, no solo como Michael Landish, sino como presidente de la clase. Durante los últimos cuatro años, estos pasillos fueron nuestro campo de pruebas, llenos de risas, sesiones de estudio nocturnas (algunas más exitosas que otras) y suficientes recuerdos compartidos para toda la vida. Crecimos juntos dentro de estas paredes y, ahora que estamos al borde de algo nuevo y desconocido, es difícil no sentirse un poco abrumado.

Cuando pienso en el pasado, parece que fue ayer cuando éramos unos incómodos estudiantes de primer año, que recorrían pasillos llenos de gente y trataban de encontrar su lugar. Y ahora, cuando veo a todos ustedes, me sorprende lo lejos que llegamos. Nos animamos mutuamente en las victorias y nos brindamos apoyo en las dificultades. Aprendimos de nuestros errores, celebramos nuestros triunfos y, lo más importante, forjamos vínculos de amistad que sé que durarán toda la vida.

Quiero agradecer especialmente a la Sra. Martin, mi profesora de inglés de tercer año, por su paciencia y orientación. Tu fe en mí, especialmente cuando tenía dificultades, me ayudó a encontrar mi voz, no solo como estudiante, sino como persona. Gracias.

Ahora, empecemos con el siguiente capítulo. Algunos, como yo, se dirigirán a la Universidad Estatal de Los Caminos con ganas de profundizar en los mundos de la economía y, sí, incluso más inglés. Otros seguirán diferentes caminos, igualmente válidos y emocionantes. Aunque nuestros caminos puedan divergir, recordemos siempre las lecciones que aprendimos y las amistades que forjamos dentro de estos muros. Llevemos con nosotros el espíritu de la clase de [Año]: el espíritu de resiliencia, determinación y apoyo inquebrantable entre nosotros.

¡Felicitaciones a la clase graduada! No puedo esperar a ver las cosas increíbles que lograremos.

¿Qué sigue?