Accéder au contenu principal

TinyTroupe de Microsoft : Un guide avec des exemples

Apprenez à utiliser TinyTroupe de Microsoft pour simuler des interactions entre des personas d'IA ayant des caractéristiques distinctes pour des objectifs différents.
Actualisé 28 nov. 2024  · 8 min de lecture

Avez-vous déjà eu besoin de simuler une réunion au cours de laquelle vos idées de produits ou vos publicités sont testées ? TinyTroupe résout ce problème.

TinyTroupe est un cadre agentique open-source développé par Microsoft. Il offre un cadre de simulation puissant qui vous permet de créer plusieurs personas dotés d'IA et de voir comment ils interagissent les uns avec les autres.

Dans cet article, je vais vous expliquer TinyTroupe et mettre en place un projet de démonstration pour vous aider à comprendre comment créer des personas réalistes dans un environnement interactif. Bien que la documentation officielle fournisse une introduction complète, je me concentrerai sur des conseils pas à pas et des exemples originaux.

Développer des applications d'IA

Apprenez à créer des applications d'IA à l'aide de l'API OpenAI.
Commencez À Upskiller Gratuitement

Qu'est-ce que TinyTroupe ?

TinyTroupe est une bibliothèque Python expérimentale récemment publiée qui vous permet de créer des "TinyPersons" avec des personnalités, des intérêts et des objectifs spécifiques. Ces agents visent à simuler un comportement humain réaliste dans des conditions particulières.

TinyTroupe vise à fournir un cadre dans lequel sont simulées les interactions, les dialogues et les actions d'agents de type humain dans des conditions définies. La documentation officielle fournit un certain nombre d'idées sur les raisons d'utiliser ce cadre, qui tournent principalement autour de l'amélioration de la productivité et du test de scénarios commerciaux, tels que la simulation d'une session de brainstorming par un groupe de discussion ou la façon dont un public simulé évaluerait des publicités numériques.

Outre les cas d'utilisation professionnelle, il est fascinant et amusant de simuler différents scénarios et d'observer des interactions entre des personnages qui ne seraient pas possibles autrement (comme nous le ferons dans cet article).

Image de TinyTroupe provenant de son dépôt.

Source : TinyTroupe GitHub page

Les principales caractéristiques de TinyTroupe sont les suivantes

  1. Conception basée sur la personne: Chaque personne simulée (TinyPerson ) peut être dotée de caractéristiques détaillées, notamment l'âge, le contexte, la profession, les compétences et les opinions.
  2. Interactions multi-agents: Les personas peuvent interagir les uns avec les autres pour des simulations de scénarios complexes.

Pour améliorer le processus de construction de ces agents, TinyTroupe offre des fonctionnalités telles que :

  • TinyPersonFactory: Une classe pour la génération rapide de TinyPersons, à partir d'une courte description.
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.")
  • Capacités des agentsles méthodes telles que écouter()et écouter_et_agir()pour recevoir des stimuli et entreprendre des actions. la méthode define() permet de créer des propriétés et des caractéristiques de votre choix, telles que l'âge ou les descriptions.
  • TinyTool: Une classe pour créer des outils simulés qui peuvent être utilisés par des agents.
  • Évaluation: Classes permettant de valider le comportement des agents ou d'analyser le résultat des interactions. (comme TinyPersonValidator et ResultsExtractor)

Mise en place de TinyTroupe

Pour installer TinyTroupe, nous pouvons suivre les étapes suivantes :

1. Créez un environnement Python : 

conda create -n tinytroupe python=3.10

2. Activer le conda :

bash conda activate tinytroupe

3. Clonez le dépôt :

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

4. Installez les bibliothèques nécessaires : 

bash pip install .

TinyTroupe Exemple de projet : Symposium sur l'IA

Nous construirons une simulation simple pour démontrer le fonctionnement de TinyTroupe. L'objectif est de faire en sorte que des personnalités historiques et des experts discutent de l'état actuel et futur de l'intelligence artificielle. l'intelligence artificielle. Parmi ces personnalités figurent Richard Feynman, Aristote, Erwin Schrödinger et Alan Turing.

Importations

Si vous voulez suivre, assurez-vous d'avoir votre clé API OpenAI prête puisque nous allons utiliser GPT-4o-voici un tutoriel rapide sur démarrage avec l'API d'OpenAI.

Nous commençons par importer les modules nécessaires et notre clé 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"

Création de minipersonnes

Nous utilisons la classe TinyPerson pour créer nos quatre figures. En décrivant le plus possible vos personnages, vous aiderez TinyTroupe à créer des simulations plus précises. Nous décrivons l'âge, la nationalité, la profession et la routine de chaque personnage (vous pouvez utiliser l'IA pour cette partie). Notez que la description des personnages n'a pas besoin d'être cohérente dans tous les cas.

Grâce au code ci-dessous, nous créons quatre personnalités :

  • 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

Créer un petit monde

Nos personnages ont besoin d'un monde pour vivre. La définition d'un monde peut être aussi simple qu'une ligne de code :

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

Exécution de la simulation

Avec notre monde et nos chiffres en place, nous leur expliquons maintenant l'objectif. Nous utilisons world.broadcast pour faire une annonce :

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 ce qui concerne la dernière étape, nous gérons le monde en trois étapes :

world.run(3)

Pour gérer le monde, vous devez spécifier un certain nombre d'étapes. Dans notre exemple, le nombre d'étapes indique le nombre de tours de dialogue que nos personnages auront. Plus d'étapes nécessitent plus de temps et de jetons.

Lorsqu'ils font fonctionner le monde, les agents commencent à agir, à utiliser leurs outils ou, dans notre cas, à avoir une conversation. Le résultat est détaillé et long, je n'en publierai donc qu'une partie pour des raisons de lisibilité :

La sortie de world.run.

Lorsque l'exécution est terminée, nous pouvons consulter la sortie pour voir le résultat de notre simulation. Mais cela peut s'avérer assez fastidieux. Une approche plus simple consiste à utiliser un outil fourni par le framework TinyTroupe pour extraire les résultats de notre monde. Cela peut également être fait avec chaque TinyPerson.

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)

Nous utilisons maintenant la bibliothèque pprint pour visualiser correctement le rapport extrait :

from pprint import pprint
pprint(report)

Notre rapport final est le suivant (le résultat est encore un peu long, et j'ai dû le tronquer) :

Le rapport extrait de notre simulation mondiale (sortie trop longue pour une capture d'écran).

Idées à mettre en œuvre avec TinyTroupe

Si vous souhaitez acquérir une expérience pratique du cadre, voici trois idées qui ne sont pas abordées dans la documentation d'origine.

1. Simulation de formation des employés

Créez quelques TinyPersons représentant des clients ou des parties prenantes difficiles afin de simuler un environnement permettant aux nouveaux employés d'interagir avec eux et de gérer des situations difficiles.

2. Nouvelle évaluation des politiques

Évaluez la réaction de vos groupes cibles à une nouvelle politique de l'entreprise avant de la mettre en œuvre. Le groupe cible peut être représenté par des TinyPersons ayant des origines et des valeurs différentes de celles de vos employés, de vos clients ou de votre public sur les médias sociaux.

3. Évaluation du contenu des médias sociaux

Avant de partager un nouveau contenu, simulez ce que votre public cible pourrait en penser. Utilisez leurs commentaires pour comprendre comment un nouveau message peut être perçu et améliorez la qualité pour obtenir une portée maximale.

Conclusion

Comme le soulignent les auteurs, TinyTroupe en est au stade "expérimental". De nombreuses fonctions, capacités et API peuvent être modifiées à l'avenir, et l'équipe mettra en place de nouvelles fonctionnalités au cours de la prochaine période.

Notez toutefois que le réalisme de ces simulations peut être limité. De nombreux comportements et distinctions humains ne sont pas suffisamment "alignés" pour être reproduits avec précision par les LLM, ce qui signifie que les résultats de différents agents peuvent finir par être similaires (comme on le voit dans notre exemple, où les figures convergent vers des dialogues de type IA). Il s'agit d'un comportement prévisible des simulations d'IA, car le moteur de ces agents d'IA - les LAL - est conçu pour être plus "aligné" que "humain".

Toutefois, les applications de productivité, telles que celles figurant dans la documentation, peuvent être beaucoup plus efficaces pour automatiser des tâches ou pour mieux comprendre les interactions et les comportements d'un groupe cible.

TinyTroupe est un outil d'IA agentique passionnant à surveiller !


Hesam Sheikh Hassani's photo
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Étudiante en master d'intelligence artificielle et rédactrice technique en intelligence artificielle. Je partage mes connaissances sur les dernières technologies de l'IA, en rendant la recherche en ML accessible et en simplifiant les sujets complexes liés à l'IA afin que vous restiez à la pointe du progrès.

Sujets

Apprenez l'IA avec ces cours !

cursus

Développer des applications d'IA

23 heures hr
Apprenez à créer des applications alimentées par l'IA avec les derniers outils de développement d'IA, notamment l'API OpenAI, Hugging Face et LangChain.
Afficher les détailsRight Arrow
Commencer Le Cours
Certification disponible

cours

Retrieval Augmented Generation (RAG) avec LangChain

3 hr
1.2K
Apprenez des méthodes de pointe pour intégrer des données externes aux LLM en utilisant Retrieval Augmented Generation (RAG) avec LangChain.
Voir plusRight Arrow