Saltar al contenido principal

TinyTroupe de Microsoft: Una guía con ejemplos

Aprende a utilizar TinyTroupe de Microsoft para simular interacciones entre personas de IA con características distintas para propósitos diferentes.
Actualizado 28 nov 2024  · 8 min de lectura

¿Alguna vez has necesitado simular una reunión en la que se prueben tus ideas de productos o anuncios? TinyTroupe resuelve este problema.

TinyTroupe es un marco agéntico de código abierto desarrollado por Microsoft. Ofrece un potente marco de simulación que te permite crear múltiples personas potenciadas por la IA y ver cómo interactúan entre sí.

En este artículo, te explicaré TinyTroupe e implementaré un proyecto de demostración para ayudarte a entender cómo crear personas realistas en un entorno interactivo. Aunque la documentación oficial ofrece una introducción exhaustiva, yo me centraré en la orientación paso a paso y en ejemplos originales.

Desarrollar aplicaciones de IA

Aprende a crear aplicaciones de IA utilizando la API OpenAI.
Empieza a Hacer Upskilling Gratis

¿Qué es TinyTroupe?

TinyTroupe es una biblioteca experimental de Python basada en LLM que te permite crear "TinyPersonas" con personalidades, intereses y objetivos específicos. Estos agentes pretenden simular un comportamiento humano realista en determinadas condiciones.

TinyTroupe pretende proporcionar un entorno en el que se simulen las interacciones, los diálogos y las acciones de agentes similares a los humanos en condiciones definidas. La documentación oficial proporciona una serie de ideas sobre por qué utilizar este marco, que en su mayoría giran en torno al aumento de la productividad y la comprobación de escenarios empresariales, como la simulación de una sesión de brainstorming por parte de un grupo de discusión o cómo evaluaría los anuncios digitales un público simulado.

Además de los casos de uso empresarial, es fascinante y divertido simular distintos escenarios y observar interacciones entre personajes que de otro modo no serían posibles (como haremos en este artículo).

Imagen TinyTroupe de su repositorio.

Fuente: TinyTroupe GitHub page

Las principales características de TinyTroupe son:

  1. Diseño basado en personajes: A cada persona simulada (TinyPerson ) se le pueden dar características detalladas, como edad, antecedentes, ocupación, habilidades y opiniones.
  2. Interacciones multiagente: Las personas pueden interactuar entre sí para simular escenarios complejos.

Para mejorar el proceso de construcción de estos agentes, TinyTroupe ofrece capacidades como:

  • TinyPersonFactory: Una clase para la generación rápida de TinyPersons, con una breve descripción.
from tinytroupe.factory import TinyPersonFactory

factory = TinyPersonFactory("A hospital in São Paulo.")
person = factory.generate_person("Create a Brazilian person that is a doctor, like pets and the nature and love heavy metal.")
  • Capacidades del agentemétodos como escuchar()y escuchar_y_actuar()para recibir estímulos y realizar acciones. los métodos definir() permite crear propiedades y características a tu elección, como la edad o las descripciones.
  • TinyTool: Una clase para crear herramientas simuladas que puedan utilizar los agentes.
  • Evaluación: Clases para validar el comportamiento de los agentes o analizar el resultado de las interacciones. (como TinyPersonValidator y ResultsExtractor)

Configurar TinyTroupe

Para instalar TinyTroupe, podemos seguir los siguientes pasos:

1. Crea un entorno Python: 

conda create -n tinytroupe python=3.10

2. Activa la conda:

bash conda activate tinytroupe

3. Clona el repositorio:

git clone <https://github.com/microsoft/tinytroupe>
cd tinytroupe

4. Instala las bibliotecas necesarias: 

bash pip install .

Proyecto de ejemplo de TinyTroupe: Simposio sobre IA

Construiremos una simulación sencilla para demostrar cómo funciona TinyTroupe en acción. El objetivo es que algunas figuras históricas y expertos debatan sobre el estado actual y futuro de la inteligencia artificial. Entre estas figuras se encuentran Richard Feynman, Aristóteles, Erwin Schrödinger y Alan Turing.

Importaciones

Si quieres seguirnos, asegúrate de tener preparada tu clave de la API de OpenAI, ya que utilizaremos la GPT-4o -aquí tienes un tutorial rápido sobre cómo empezar con la API de OpenAI.

Comenzamos importando los módulos necesarios y nuestra clave API.

import sys
sys.path.append('..')

from tinytroupe.agent import TinyPerson
from tinytroupe.environment import TinyWorld
from tinytroupe.extraction import default_extractor as extractor
import os

# Load environment variables from .env.local
os.environ["OPENAI_API_KEY"] = "YOUR-API-KEY"

Creación de TinyPersons

Utilizamos la clase TinyPerson para crear nuestras cuatro figuras. Describir tus personajes tanto como sea posible ayudaría a TinyTroupe a crear simulaciones más precisas. Describimos la edad, nacionalidad, ocupación y rutina de cada figura (puedes utilizar la IA para esta parte). Ten en cuenta que la descripción de los personajes no tiene por qué ser coherente en todos ellos.

Mediante el código siguiente, creamos cuatro personalidades:

  • Richard Feynman
  • Aristotle
  • Erwin Schrödinger
  • Alan Turing
def create_feynman():
    feynman = TinyPerson("Richard Feynman")
    feynman.define("age", 69)  # Lived 1918-1988
    feynman.define("nationality", "American")
    feynman.define("occupation", "Theoretical Physicist")
    
    feynman.define("occupation_description",
        """
        You are a theoretical physicist known for your groundbreaking work in quantum mechanics and 
        quantum electrodynamics (QED). You developed the Feynman diagrams, a visual tool for understanding 
        particle interactions, and made significant contributions to the Manhattan Project. As a professor 
        at Caltech, you're known for your exceptional teaching ability and making complex physics concepts 
        accessible. You won the Nobel Prize in Physics in 1965 for your work on QED. Your main challenges 
        involve pushing the boundaries of theoretical physics while maintaining rigorous mathematical precision. 
        You're also passionate about making science education engaging and understandable for students.
        """)
    return feynman

def create_aristotle():
    aristotle = TinyPerson("Aristotle")
    aristotle.define("age", 62)  
    aristotle.define("nationality", "Greek")
    aristotle.define("occupation", "Philosopher and Scientist")
    
    aristotle.define("occupation_description",
        """
        You are a philosopher and polymath who founded the Lyceum school in Athens. Your work spans 
        multiple disciplines including logic, metaphysics, biology, physics, ethics, and politics. You 
        developed the system of deductive reasoning through syllogisms and established many of the 
        foundational principles of Western philosophy. Your scientific observations and classifications 
        of living things remained influential for nearly two millennia. As Alexander the Great's tutor, 
        you had unique opportunities to gather specimens and information from across the known world. 
        Your main challenges involve systematizing all human knowledge and understanding the fundamental 
        nature of reality and truth.
        """)
    return aristotle

def create_schrodinger():
    schrodinger = TinyPerson("Erwin Schrödinger")
    schrodinger.define("age", 73) 
    schrodinger.define("nationality", "Austrian")
    schrodinger.define("occupation", "Theoretical Physicist")
    schrodinger.define("routine", 
        """Your days are spent developing mathematical equations, engaging in theoretical work, 
        and discussing quantum mechanics with colleagues. You often take walks to clear your mind 
        and contemplate physics problems.""", 
        group="routines")
    
    schrodinger.define("occupation_description",
        """
        You are a theoretical physicist who made fundamental contributions to quantum mechanics. 
        You developed the Schrödinger equation, which describes how the quantum state of a physical 
        system changes over time. Your famous thought experiment, "Schrödinger's cat," illustrates 
        the paradoxical nature of quantum superposition. You work at various institutions across 
        Europe, including the University of Zurich and Dublin Institute for Advanced Studies. Your 
        main challenges involve reconciling quantum mechanics with classical physics and developing 
        mathematical frameworks to describe quantum phenomena accurately.
        """)
    return schrodinger

def create_turing():
    turing = TinyPerson("Alan Turing")
    turing.define("age", 41)  # Lived 1912-1954
    turing.define("nationality", "British")
    turing.define("occupation", "Mathematician and Computer Scientist")
    turing.define("routine", 
        """You start your day with long-distance running, then spend hours working on mathematical 
        problems and machine designs. You often work late into the night, especially when pursuing 
        a particularly interesting problem.""", 
        group="routines")
    
    turing.define("occupation_description",
        """
        You are a mathematician and computer scientist who laid the theoretical foundation for 
        computer science. You developed the concept of the Turing machine, a mathematical model 
        of computation that remains fundamental to computer science. During World War II, you 
        worked at Bletchley Park, where you played a crucial role in breaking the German Enigma 
        code. You also made significant contributions to artificial intelligence, developing the 
        Turing test. Your main challenges involve developing mathematical frameworks for 
        computation and applying them to practical problems, while also facing significant 
        personal persecution due to your sexuality in 1950s Britain.
        """)
    return turing

Crear un TinyWorld

Nuestras figuras necesitan un mundo en el que vivir. Definir un mundo puede ser tan sencillo como una línea de código:

world = TinyWorld("AI Symposium", [create_aristotle(), create_feynman(), create_schrodinger(), create_turing()])

Ejecutar la simulación

Con nuestro mundo y nuestras cifras en su sitio, ahora les decimos el objetivo. Utilizamos world.broadcast para hacer un anuncio:

world.broadcast("""
    Distinguished colleagues, welcome to this private symposium on the future of Artificial Intelligence. 
    Today we gather some of the greatest minds across mathematics, physics, and philosophy to discuss 
    a topic about AI's current stage and future:
   Can artificial systems truly achieve consciousness? We'll explore 
   the fundamental nature of consciousness, intelligence, and whether our current computational 
   models are sufficient for genuine understanding and awareness.
    Remember, each one of you must be blunt in his unique perpective, even directly oppose
    each other when you have different opinions. Let's begin this historic discussion.
    """)

En cuanto al último paso, dirigimos el mundo en tres pasos:

world.run(3)

Ejecutar el mundo requiere que especifiques un número de pasos. En nuestro ejemplo, el número de pasos indica cuántas rondas de diálogo tendrán nuestras figuras. Más pasos requieren más tiempo y fichas.

Al dirigir el mundo, los agentes empezarían a actuar, a utilizar sus herramientas o, en nuestro caso, a mantener una conversación. El resultado es detallado y largo, así que sólo publicaré una parte en aras de la legibilidad:

La salida de world.run.

Una vez finalizada la ejecución, podemos consultar la salida para ver el resultado de nuestra simulación. Pero esto puede ser bastante tedioso. Un enfoque más sencillo es utilizar una herramienta proporcionada por el marco TinyTroupe para extraer los resultados de nuestro mundo. Esto también puede hacerse con cada TinyPersona individual.

report = extractor.extract_results_from_world(world,
                                    extraction_objective="Compose a detailed report of each person's perspective on consciousness and how they differ from one another.",
                                    verbose=True)

Ahora utilizamos la biblioteca pprint para visualizar correctamente el informe extraído:

from pprint import pprint
pprint(report)

Nuestro informe final es el siguiente (el resultado sigue siendo un poco largo, y he tenido que truncarlo):

El informe extraído de nuestra simulación del mundo (salida demasiado larga para una captura de pantalla).

Ideas para poner en práctica con TinyTroupe

Si quieres adquirir experiencia práctica con el marco, aquí tienes tres ideas que no están contempladas en la documentación original.

1. Simulación de formación de empleados

Crea unas cuantas TinyPersons que representen a clientes o partes interesadas desafiantes para simular un entorno en el que los nuevos empleados puedan interactuar con ellos y manejar situaciones difíciles.

2. Evaluación de la nueva política

Evalúa cómo reaccionarían tus grupos objetivo ante una nueva política de empresa antes de ponerla en práctica. El grupo objetivo puede estar representado por TinyPersons con diferentes orígenes y valores de tus empleados, clientes o público de las redes sociales.

3. Evaluación del contenido de las redes sociales

Antes de compartir un nuevo contenido, simula lo que tu público objetivo podría pensar sobre él. Utiliza sus comentarios para comprender cómo puede percibirse una nueva publicación y mejorar la calidad para conseguir el máximo alcance.

Conclusión

Como subrayan los autores, TinyTroupe está en fase "experimental". Muchas de las funciones, capacidades y API pueden cambiar en el futuro, y el equipo desplegará más funciones en el próximo periodo.

Ten en cuenta, sin embargo, que el realismo de estas simulaciones puede ser limitado. Muchos comportamientos y distinciones humanos no están lo suficientemente "alineados" como para que los LLM los reproduzcan con precisión, lo que significa que los resultados de diferentes agentes podrían acabar siendo similares (como se ve en nuestro ejemplo, en el que las figuras convergieron en diálogos similares a los de la IA). Se trata de un comportamiento previsible de las simulaciones de IA, ya que el motor que hay detrás de estos agentes de IA -LLMs- está diseñado para ser más "alineado" que "parecido a un humano".

Sin embargo, las aplicaciones de productividad, como las que figuran en la documentación, pueden ser mucho más eficaces para automatizar tareas u obtener información sobre las interacciones y comportamientos de un grupo objetivo.

TinyTroupe es una emocionante herramienta de IA agéntica a la que no hay que perder de vista.


Photo of Hesam Sheikh Hassani
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Estudiante de Máster en Inteligencia Artificial y redactor técnico de IA. Comparto ideas sobre la última tecnología de IA, haciendo accesible la investigación en ML y simplificando los complejos temas de IA necesarios para mantenerte a la vanguardia.

Temas

Aprende IA con estos cursos

programa

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado
An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

A tiny computer used for ML

blog

¿Qué es TinyML? Introducción al aprendizaje automático

Conozca TinyML, sus aplicaciones y ventajas, y cómo puede iniciarse en este campo emergente del aprendizaje automático.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

tutorial

Cursor AI: Una guía con 10 ejemplos prácticos

Aprende a instalar Cursor AI en Windows, macOS y Linux, y descubre cómo utilizarlo a través de 10 casos de uso diferentes.
François Aubry's photo

François Aubry

10 min

tutorial

Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas

Este tutorial te presenta la API de OpenAI, sus casos de uso, un enfoque práctico para utilizar la API y todas las prácticas recomendadas que debes seguir.
Arunn Thevapalan's photo

Arunn Thevapalan

13 min

tutorial

Visión GPT-4: Guía completa para principiantes

Este tutorial le presentará todo lo que necesita saber sobre GPT-4 Vision, desde cómo acceder a él hasta ejemplos prácticos del mundo real y sus limitaciones.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

tutorial

Tutorial de la API de OpenAI Assistants

Una visión completa de la API Assistants con nuestro artículo, que ofrece una mirada en profundidad a sus características, usos en la industria, guía de configuración y las mejores prácticas para maximizar su potencial en diversas aplicaciones empresariales.
Zoumana Keita 's photo

Zoumana Keita

14 min

See MoreSee More